사용 된 예제는 실제로 해결할 도메인을 나타내지 않습니다. 그것은 단지 예에 불과합니다.DB 디자인 : 테이블 상속 및 계층 구조
배경
나는 table inheritance을 정의하고있다. 테이블 API 패키지 & 뷰를 사용하여 필요한 로직을 처리합니다. & 프리젠 테이션.
또한 이질 속성이있는 다중 다중 계층 명명 된 계층 구조를 정의해야합니다.
테이블 상속 (Location> State, City) & 명명 된 계층 구조 (State < - City)를 결합하면 디자인상의 문제가 발생합니다.
문제가
나는 도시의 이름은 주 내에서 고유 시행 고유 키를 정의 할 수 있지만, 이름 필드의 추상화가 방지된다. 필요한 경우 PL/SQL에서 처리 할 수 있지만 SQL 수준에서 (가능한 경우 추가 테이블없이) 적용하려고합니다.
제약
다른 테이블은 계층 구조 일반적으로 (위치)의 모든 수준을 참조 할 수 있어야합니다.
다른 테이블은 특정 계층 구조 수준을 참조 할 수 있어야합니다. 내가 인해 관계의 그래프의 복잡성에 single table inheritance 할 수 없습니다
생각.
쉽게 이름 형식 필드를 복제하여 일반 형식을 위반하지는 않았지만 생각했습니다.
예
CREATE TABLE location
(id NUMBER ( 38) PRIMARY KEY
, name VARCHAR2(1000) NOT NULL
, type_id NUMBER ( 38) NOT NULL
--, other common/super attributes
);
CREATE TABLE state
(id NUMBER(38) PRIMARY KEY
REFERENCES location (id)
--, child attributes
);
CREATE TABLE city
(id NUMBER(38) PRIMARY KEY
REFERENCES location (id)
, state_id NUMBER(38) NOT NULL
REFERENCES state (id)
--, child attributes
);
위스콘신에는 6 개의 스프링 필드가 있습니다. Texarkana는 텍사스와 Arkansas에 있습니다 –
States/City는 나의 실제 문제 도메인이 아닙니다. 나는 이것을 예제로 사용하고 있기 때문에 중복되는 도시 이름의 현실은 중요하지 않습니다. –