2009-05-07 2 views
1

내 데이터를 객체 분류 계층 구조를 표시합니까, 그것과 같습니다가 어떻게이 RDBMS에서이 객체에 의해 표현 될 수 <strong></strong> 경우

abstract class A{ 
    int a; 
    int b; 
    string c; 
} 

class B inherits A{ 
    string D; 
} 

class C inherits A{ 
    int e; 
    int f; 
} 

내 질문 : 나는 B 실체에 대해 별도의 테이블을 만들 수 있습니까 and C, 하나의 주 테이블을 만들고 각 엔티티 유형에 대해 데이터를 가져 오기 위해 다른 조인을 수행합니다.
현실 세계에서는 모든 엔티티에 대해 약 15 개의 유사한 필드가 있고 각 엔티티에 대해 약 1-3 개의 고유 필드가 있습니다.
최대 100,000 개의 레코드가 필요합니다.

통찰력이 있으십니까?

답변

4

가 포함되어 있습니다. 많은 사람들이 concrete table inheritance을 옹호합니다. 첫 번째 옵션에서 설명하는 것처럼 각 테이블에서 명시 적으로 데이터를 정의합니다.

귀하의 두 번째 성명서를 전하면 이 아니며은이 패턴을 권장합니다. 아이들을 나타내는 부모 테이블과 보조 테이블을 나타내는 "메인"테이블을 가지고 있다고 생각합니다. 어떤 종류의 엔티티인지를 나타 내기 위해 주 테이블에 일종의 유형 식별자를 포함시킬 수도 있지만, 필요하지 않을 수도 있습니다. 최소한 다음과 같은 것이 필요합니다.

tableA 
(
    ID (primary), 
    A, 
    B, 
    C 
) 

tableB 
(
    ID (primary and foreign->table_A), 
    D 
) 

tableC 
(
    ID (primary and foreign->table_A), 
    E, 
    F 
) 
3

table_a 모든 유사한 필드를 포함, table_B 및 table_c 당신은이 주제에 대한 의견의 부족을 찾을 수 있습니다 고유 필드

table_A 
    PKa 
    a int 
    b int 
    c string 


table_B 
    PKb 
    FKa 
    D string 


table_C 
    PKc 
    FKa 
    e int 
    f int