Ich entwerfe eine neue Labordatenbank mit VIELEN Typen meiner Haupteinheiten.Vererbung im Datenbankdesign
Die Tabelle für jede Entität enthält Felder, die allen Typen dieser Entität gemeinsam sind (entity_id, created_on, created_by usw.). Ich werde dann die konkrete Vererbung verwenden (separate Tabelle für jeden eindeutigen Satz von Attributen), um alle verbleibenden Felder zu speichern.
Ich glaube, dass dies das beste Design für die Standard-Datentypen ist, die täglich durch das Labor kommen. Oft haben wir jedoch spezielle Proben, die oft mit spezifischen Werten versehen sind, die der Urheber gespeichert haben möchte.
Frage: Wie soll ich spezielle (nicht standardisierte) Arten von Entitäten modellieren?
Option 1: Verwendung entity-Wert für spezielle Felder
einer Tabelle (entity_id
, attribute_name
, numerical_value
) würden alle Daten für jede spezielle Einheit halten.
+ Weniger Tabellen.
- Kann kein bestimmtes Attribut erfordern.
- Muss Zeilen in Spalten umwandeln (pivotieren), was ineffizient ist.
Option 2: Strikte konkrete Vererbung.
Erstellen Sie separate Tabelle für jeden einzelnen Sonderfall.
+ Folgt in Übereinstimmung mit allen anderen Regeln
- Overhead von vielen Tabellen mit nur ein paar Zeilen.
Option 3: Konkrete Vererbung mit speziellen Tabellen unter einem anderen Benutzer.
Legen Sie alle speziellen Tabellen unter einem anderen Benutzer.
+ Hält alle Sonder- und Standardtabellen getrennt.
+ Leichtere Suche nach gängigen Standardtabellen in einer Liste ohne Suche in allen Sondertabellen.
- Overhead von vielen Tabellen mit nur ein paar Zeilen.
Viele Tabellen mit wenigen Zeilen schneiden wahrscheinlich besser ab als eine Entity-Value-Tabelle, besonders wenn sie groß wird. Und sie sind viel einfacher abzufragen. – HLGEM