2009-05-07 3 views
1

Meine Daten, IF würde es durch Objekte dargestellt werden, würde es wie folgt aussehen:Wie repräsentiere ich Objektklassifikationshierarchie in einem RDBMS

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

class B inherits A{ 
    string D; 
} 

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

Meine Frage: Muss ich eine separate Tabelle für Unternehmen B erstellen und C, Oder ich erstelle eine Haupttabelle, und für jeden Entitätstyp mache ich verschiedene Joins, um die Daten zu holen.
In der realen Welt werde ich etwa 15 ähnliche Felder für alle Entitäten haben, und etwa 1-3 eindeutige Felder für jede Entität.
Ich erwarte maximal 100K Datensätze.

Irgendwelche Einsichten?

Antwort

4

Sie werden keinen Mangel an Meinungen zu diesem Thema. Viele Leute befürworten concrete table inheritance, wo (wie Sie in Ihrer ersten Option beschreiben) Sie die Daten explizit in jeder Tabelle definieren.

Angesichts Ihrer zweiten Aussage würde ich nicht empfehlen dieses Muster. Ich würde mit der Idee gehen, eine "Haupt" -Tabelle zu haben, die Ihre Eltern- und Hilfstabellen darstellt, die die Kinder darstellen. Möglicherweise möchten Sie in Ihrer Haupttabelle einen Typbezeichner angeben, um anzugeben, um welche Art von Entität es sich handelt, aber dies kann erforderlich sein oder auch nicht. Zumindest benötigen Sie etwas wie ...

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 alle ähnliche Felder enthält, Table_B und TABLE_C enthalten die einzigartigen Felder

table_A 
    PKa 
    a int 
    b int 
    c string 


table_B 
    PKb 
    FKa 
    D string 


table_C 
    PKc 
    FKa 
    e int 
    f int 
Verwandte Themen