2014-01-12 14 views
0

관계형 상위 유형/부속 유형 구조에서, 예를 들어 entity_type 열과 수의 유형 테이블을 가진 entity 상위 유형 테이블이있는 경우, 제가 갈 수있는 방법이 있습니까 그들의 전체 레코드를 가진 모든 엔티티를 질의하는 것에 대해, 그것은 어떻게 든 자동적으로 각각의 서브 타입 테이블에 합류하는 것인가? 너무상위 유형/부속 유형 SQL 패턴의 모든 전체 레코드 선택

:

TABLE entity 
    -- entity_id (INT pk) 
    -- entity_type_id (INT fk) 

TABLE entity_type 
    -- entity_type_id (INT pk) 
    -- name //Person, Building, Animal (TEXT) 

TABLE person 
    -- entity_id (INT fk) 
    -- person_name (TEXT) 
    -- person_age (INT) 

TABLE building 
    -- entity_id (INT fk) 
    -- age_built (INT) 

내가 모든 사람이 특정 열 (person_name 등)에 기록하는 경우 얻을 수있는 모든 개체를 쿼리, 내 결과 집합에하기를 원한다면 기록이 건물이라면 사람이었고 age_built 등 이었습니까? 유형 테이블에 하위 유형 테이블 이름을 저장하는 것에 대해 생각했지만 동적으로 그런 유형을 참조 할 수는 없다는 것을 이해합니다.

나는 여기 무지한 DB 신입 사원인가요? 명시 적으로 조인을 정의하고 각 하위 유형 테이블에 대해 쿼리를 수행하지 않아도 가능합니까?

내 데이터베이스의 다른 곳에서 entity_id (많은 종류의 엔티티 일 수 있음)에 대한 많은 참조가있을 것이므로 초기 쿼리를 실행하지 않으려 고합니다. 먼저 유형을 확인하십시오.

MySQL에서 작업하며 엔진을 사용하지 않습니다.

답변

0

당신이하고있는 일을 정말로 알지 못한다면 (그리고 아마 그렇게하지 않을 것입니다!) 이것을하지 마십시오. 이것은 엔티티 속성 값 anitpattern에 맞습니다. 각 사람/동물/건물과 개별적으로 관련된 엔티티를 모델링하는 것이 좋습니다.

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2314483800346542969

어느 쪽이든 또는 링크 된 개체에 개체 유형에서 여러 FK 컬럼을 고려해 수 있습니다. entity_type을 참조 할 것으로 예상되는 엔티티는 몇 개입니까?