이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 PostgreSQL : 문서 : 17 : 5.11. 계승버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

5.8. 상속

포스트그레SQL스포츠 토토 사이트 구현 상속은 데이터베이스 디자이너에게 유용한 도구가 될 수 있습니다. (SQL:1999 이상에서는 유형 상속 기능을 정의합니다. 여기에 설명된 기능과 여러 측면에서 다릅니다.)

예를 들어 시작해 보겠습니다. 우리가 도시를 위한 데이터 모델. 각 주에는 여러 개의 도시가 있지만 단 하나의 도시만 있습니다. 자본. 우리는 수도를 빠르게 되찾고 싶습니다. 특정 주에 대해. 이는 두 개를 생성하여 수행할 수 있습니다. 스포츠 토토 사이트 중 하나는 주의 수도용이고 다른 하나는 주도가 아닌 도시용입니다. 수도. 하지만 데이터를 요청하면 어떻게 되나요? 수도인지 아닌지에 관계없이 도시에 대해? 는 상속 기능은 이 문제를 해결하는 데 도움이 될 수 있습니다. 우리는 정의합니다대문자스포츠 토토 사이트이 다음에서 상속됨도시:

스포츠 토토 사이트 도시 생성(
    이름 텍스트,
    인구 부동,
    고도 int - 피트 단위
);

CREATE TABLE 대문자(
    상태 문자(2)
) 상속(도시);

이 경우,대문자스포츠 토토 사이트상속상위 항목의 모든 열 스포츠 토토 사이트,도시. 주 수도 또한 추가 열이 있습니다.상태그건 상태를 보여줍니다.

포스트그레SQL, 스포츠 토토 사이트은 다음을 수행할 수 있습니다. 0개 이상의 다른 스포츠 토토 사이트에서 상속되며 쿼리는 참조할 수 있습니다. 스포츠 토토 사이트의 모든 행 또는 스포츠 토토 사이트의 모든 행과 해당 스포츠 토토 사이트의 모든 행 하위 스포츠 토토 사이트. 후자의 동작이 기본값입니다. 에 대한 예를 들어, 다음 쿼리는 모든 도시의 이름을 찾습니다. 이상의 고도에 위치한 주도를 포함하여 500피트:

SELECT 이름, 고도
    도시에서
    고도  500;

다음의 샘플 데이터가 제공됩니다.포스트그레SQL튜토리얼(참조섹션 2.1), 이는 다음을 반환합니다.

이름 | 고도
---------+----------
 라스베가스 |     2174
 마리포사 |     1953년
 매디슨 |      845

반면에 다음 쿼리는 모든 도시를 찾습니다. 주도가 아니고 고도가 높은 곳에 위치한 곳 500피트:

SELECT 이름, 고도
    도시에서만
    고도  500인 곳;

   이름 | 고도
---------+----------
 라스베가스 |     2174
 마리포사 |     1953

여기는키워드는 다음을 나타냅니다. 쿼리는 다음에만 적용되어야 합니다.도시, 아래 스포츠 토토 사이트은 제외도시상속 계층 구조에서. 많은 우리가 이미 논의한 명령 —선택, 업데이트그리고삭제— 지원키워드.

또한 스포츠 토토 사이트 이름을 뒤에 붙여 쓸 수 있습니다.*하위 스포츠 토토 사이트이 다음과 같이 명시적으로 지정됩니다. 포함됨:

SELECT 이름, 고도
    도시에서*
    고도  500;

쓰기*필요하지 않습니다. 왜냐하면 이 동작은 기본값입니다(설정을 변경하지 않은 경우). 의sql_inheritance구성 옵션). 그러나 쓰기*추가 스포츠 토토 사이트이 추가될 것임을 강조하는 데 유용할 수 있습니다. 검색했습니다.

어떤 경우에는 특정 스포츠 토토 사이트이 어떤 스포츠 토토 사이트인지 알고 싶을 수도 있습니다. 행이 시작되었습니다. 라는 시스템 열이 있습니다.스포츠 토토 사이트로이드각 스포츠 토토 사이트에 있는 내용을 통해 원본 스포츠 토토 사이트:

SELECT c.tableoid, c.name, c.altitude
도시에서 c
c.altitude  500;

반환:

스포츠 토토 사이트로이드 |   이름 | 고도
--------+------------+----------
   139793 | 라스베가스 |     2174
   139793 | 마리포사 |     1953년
   139798 | 매디슨 |      845

(이 예를 재현하려고 하면 아마도 다음과 같은 결과를 얻게 될 것입니다. 다른 숫자 OID.) 다음과 조인을 수행하여pg_class실제 스포츠 토토 사이트을 볼 수 있습니다 이름:

SELECT p.relname, c.name, c.altitude
도시 c, pg_class p에서
여기서 c.altitude  500 및 c.tableoid = p.oid;

반환:

relname |   이름 | 고도
--------+------------+----------
 도시 | 라스베가스 |     2174
 도시 | 마리포사 |     1953년
 수도 | 매디슨 |      845

상속은 다음의 데이터를 자동으로 전파하지 않습니다.삽입또는복사상속 계층의 다른 스포츠 토토 사이트에 명령합니다. 우리의 예를 들면 다음과 같습니다삽입문장 실패합니다:

도시에 삽입(이름, 인구, 고도, 주)
VALUES ('뉴욕', NULL, NULL, '뉴욕');

우리는 데이터가 어떻게든 다음으로 라우팅되기를 바랄 수 있습니다.대문자스포츠 토토 사이트이지만 이것은 그렇지 않습니다. 발생:삽입항상 삽입됨 정확히 지정된 스포츠 토토 사이트입니다. 어떤 경우에는 다음이 가능합니다. 규칙을 사용하여 삽입을 리디렉션합니다(참조제36장). 그러나 그것은 에 도움이 되지 않습니다 위의 경우는 다음과 같습니다.도시스포츠 토토 사이트 열을 포함하지 않습니다.상태, 따라서 규칙이 적용되기 전에 명령이 거부됩니다. 적용되었습니다.

상위 항목에 대한 모든 검사 제약 조건 및 null이 아닌 제약 조건 스포츠 토토 사이트은 해당 자식에게 자동으로 상속됩니다. 다른 유형 제약 조건(고유 키, 기본 키, 외래 키 제약 조건) 상속되지 않습니다.

스포츠 토토 사이트은 둘 이상의 상위 스포츠 토토 사이트에서 상속될 수 있습니다. 상위 항목에 의해 정의된 열의 합집합이 있는 경우 스포츠 토토 사이트. 하위 스포츠 토토 사이트 정의에 선언된 모든 열은 다음과 같습니다. 이것들에 추가되었습니다. 동일한 컬럼명이 여러개 나타나는 경우 상위 스포츠 토토 사이트 또는 상위 스포츠 토토 사이트과 하위 스포츠 토토 사이트 모두 정의하면 이 열은"병합"따라서 다음에는 그러한 열이 하나만 있습니다. 아이 스포츠 토토 사이트. 병합하려면 열에 동일한 데이터가 있어야 합니다. 유형을 지정하지 않으면 오류가 발생합니다. 병합된 열에는 다음 중 하나에서 오는 모든 검사 제약 조건의 복사본 해당 열 정의는 null이 아닌 것으로 표시됩니다. 그 중 하나입니다.

스포츠 토토 사이트 상속은 일반적으로 하위 항목이 스포츠 토토 사이트은 다음을 사용하여 생성됩니다.상속의 절PostgreSQL : 문서 : 8.3 : 윈 토토 작성성명. 또는 이미 존재하는 스포츠 토토 사이트 호환 가능한 방식으로 정의되면 새로운 상위 관계를 가질 수 있습니다. 추가, 사용하여상속변형PostgreSQL : 문서. 해야 할 일 새 하위 스포츠 토토 사이트에는 이미 다음과 같은 열이 포함되어 있어야 합니다. 상위 열과 이름 및 유형이 동일합니다. 또한 동일한 이름을 가진 검사 제약 조건을 포함하고 검사합니다. 표현은 부모의 표현과 동일합니다. 마찬가지로 상속 링크 다음을 사용하여 어린이에게서 제거할 수 있습니다.아니요 상속변형스포츠 토토 사이트 변경. 이와 같은 상속 링크를 동적으로 추가 및 제거할 수 있습니다. 상속 관계를 사용할 때 유용합니다. 스포츠 토토 사이트 파티셔닝(참조PostgreSQL : 문서 : 8.3 : 젠 토토).

호환되는 스포츠 토토 사이트을 생성하는 편리한 방법 중 하나는 다음과 같습니다. 나중에 새로운 자식을 만들려면좋아요만들기 표. 그러면 다음과 동일한 열이 포함된 새 스포츠 토토 사이트이 생성됩니다. 소스 스포츠 토토 사이트. 있다면확인소스 스포츠 토토 사이트에 정의된 제약 조건,제약조건 포함옵션좋아요새 하위 항목이 다음과 같이 지정되어야 합니다. 고려할 상위 항목과 일치하는 제약 조건이 있음 호환됩니다.

상위 스포츠 토토 사이트은 하위 스포츠 토토 사이트이 있는 동안 삭제할 수 없습니다. 남아있다. 하위 스포츠 토토 사이트의 열을 삭제하거나 변경할 수도 없습니다. 상위 스포츠 토토 사이트에서 상속된 경우. 당신이 원한다면 스포츠 토토 사이트과 모든 하위 항목을 제거하는 쉬운 방법 중 하나는 다음과 같습니다. 를 사용하여 상위 스포츠 토토 사이트을 삭제합니다.캐스케이드옵션.

PostgreSQL : 문서할 것이다 열 데이터 정의의 변경 사항을 전파하고 확인합니다. 상속 계층 구조를 제한합니다. 또, 하락 상위 스포츠 토토 사이트의 열이나 제약 조건은 다음 경우에만 가능합니다. 를 사용하여캐스케이드옵션.스포츠 토토 사이트 변경중복에 대해서도 동일한 규칙을 따릅니다. 동안 적용되는 열 병합 및 거부스포츠 토토 사이트 생성.

5.8.1. 주의사항

스포츠 토토 사이트 액세스 권한은 자동으로 상속되지 않습니다. 따라서 상위 스포츠 토토 사이트에 액세스하려는 사용자는 다음을 수행해야 합니다. 모든 하위 항목에 대해 작업을 수행할 수 있는 권한이 있거나 스포츠 토토 사이트도 마찬가지입니다. 그렇지 않으면표기법. 기존 스포츠 토토 사이트에 새 하위 스포츠 토토 사이트을 추가하는 경우 상속 계층 구조, 필요한 모든 항목을 부여하도록 주의하세요. 그것에 대한 권한이 있습니다.

상속 기능의 심각한 제한은 다음과 같습니다. 인덱스(고유 제약 조건 포함) 및 외래 키 제약 조건은 단일 스포츠 토토 사이트에만 적용되며 해당 스포츠 토토 사이트에는 적용되지 않습니다. 상속 자녀. 이는 참조 및 참조 모두에 해당됩니다. 외래 키 제약 조건의 참조 측면. 따라서, 위 예의 조건:

  • 우리가 선언한다면도시.이름되다고유또는 a기본 키, 이것은 멈추지 않을 것입니다.대문자행이 있는 스포츠 토토 사이트 이름이 행을 복제하는 경우도시. 그리고 그 중복 행은 기본적으로 다음의 쿼리에 표시됩니다.도시. 실제로 기본적으로대문자고유 제약조건이 없을 것입니다. 따라서 동일한 내용을 가진 여러 행이 포함될 수 있습니다. 이름. 고유 제약 조건을 추가할 수 있습니다.대문자, 그러나 이것이 방해가 되지는 않습니다. 중복과 비교도시.

  • 마찬가지로 우리가 그것을 지정한다면도시.이름 참조다른 스포츠 토토 사이트, 이것은 제약 조건이 자동으로 전파되지 않습니다.대문자. 이 경우에는 일할 수 있습니다. 수동으로 추가하여 주변에 동일한 내용을 추가합니다.참조다음으로 제한대문자.

  • 다른 스포츠 토토 사이트의 열을 지정참조 도시(이름)허용할 것입니다 다른 스포츠 토토 사이트에는 도시 이름이 포함되지만 대문자 이름은 포함되지 않습니다. 이 경우에는 좋은 해결 방법이 없습니다.

이러한 결함은 아마도 미래에 수정될 것입니다 하지만 그 동안에는 상당한 주의가 필요합니다. 상속이 문제에 유용한지 여부를 결정합니다.