상속은 객체 지향 데이터베이스의 개념입니다. 이는 데이터베이스 설계의 흥미롭고 새로운 가능성을 열어줍니다.
두 개의 테이블을 생성합시다: 테이블도시그리고 테이블대문자. 당연히 수도도 도시이므로 모든 도시를 나열할 때 수도를 암시적으로 표시할 수 있는 방법이 필요합니다. 당신이 정말로 영리하다면 다음과 같은 계획을 고안할 수도 있습니다.
테이블 대문자 생성(
이름 텍스트,
실제 인구,
고도 int, -- (피트 단위)
상태 문자(2)
);
CREATE TABLE non_capitals(
이름 텍스트,
실제 인구,
고도 int -- (피트 단위)
);
AS 보기 도시 만들기
SELECT 이름, 인구, 고도 FROM 대문자
유니온
non_capitals에서 이름, 인구, 고도를 선택하세요.
이것은 쿼리가 진행되는 한 잘 작동하지만, 우선 여러 행을 업데이트해야 할 때 보기 흉해집니다.
더 나은 해결책은 다음과 같습니다:
테이블 도시 생성( 이름 텍스트, 실제 인구, 고도 int -- (피트 단위) ); CREATE TABLE 대문자( 상태 문자(2) UNIQUE NOT NULL ) 상속(도시);
이 경우, 한 행대문자 상속모든 열(이름, 인구및고도) 그에서부모, 도시. 열의 유형이름is텍스트, 원주민스포츠 토토 베트맨12053_12104대문자테이블에 추가 열이 있습니다.상태, 상태 약어를 표시합니다. 에서스포츠 토토 베트맨, 테이블은 0개 이상의 다른 테이블에서 상속될 수 있습니다.
예를 들어, 다음 쿼리는 주도를 포함하여 해발 500피트 이상에 위치한 모든 도시의 이름을 찾습니다.
SELECT 이름, 고도 도시에서 고도 500;
반환:
이름 | 고도 ---------+------------ 라스베가스 | 2174 마리포사 | 1953년 매디슨 | 845 (3행)
반면에 다음 쿼리는 주도가 아니고 해발 500피트가 넘는 고도에 위치한 모든 도시를 찾습니다.
SELECT 이름, 고도
도시에서만
고도 500;
이름 | 고도 ---------+------------ 라스베가스 | 2174 마리포사 | 1953년 (2행)
여기는만이전도시쿼리는 다음에 대해서만 실행되어야 함을 나타냅니다.도시테이블, 아래 테이블 아님도시상속 계층에서. 우리가 이미 논의한 많은 명령 —선택, 업데이트및삭제— 이것을 지원하세요만표기법.
참고:상속은 유용한 경우가 많지만 고유 제약 조건이나 외래 키와 통합되지 않아 유용성이 제한됩니다. 참조스포츠 토토 베트맨 PostgreSQL : 문서 : 9.6 : 상속자세한 내용은.