Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Datenmodellierung für gleiche Tabellen mit gleichen Spalten

Nur weil Daten eine ähnliche Struktur haben, bedeutet das nicht, dass sie die gleiche Bedeutung oder die gleichen Einschränkungen haben. Halten Sie Ihre Nachschlagetabellen getrennt. Dies hält Fremdschlüssel trennen, sodass sich die Datenbank davor schützen kann, auf die falsche Art von Suchdaten zu verweisen.

Ich wünsche mir eine von relationalen DBMS unterstützte Vererbung, bei der Sie die Grundstruktur in der übergeordneten Tabelle definieren und einfach bestimmte FKs in den untergeordneten Tabellen hinzufügen könnten. So wie es jetzt aussieht, müssen Sie einige Wiederholungen in Ihrer DDL ertragen...

HINWEIS:Eine Ausnahme von der Regel „Nachschlagetabellen getrennt halten“ kann sein, wenn Ihr System dynamisch sein muss (d. h. in der Lage sein muss, neue Arten von Nachschlagedaten hinzuzufügen, ohne tatsächlich neue physische Tabellen in der Datenbank zu erstellen), aber es sieht nicht so aus Weg von Ihrer Frage.

Mit einer großen Nachschlagetabelle werden FKs allein (zum Beispiel) das ShippingLog nicht stoppen Tabelle aus dem Verweis auf eine Zeile, die für EmployeeTask bestimmt ist Tisch. Indem Sie Beziehungen identifizieren und PKs migrieren, können Sie sich davor schützen, aber nicht ohne einige Redundanzen einzuführen und einige sorgfältige Einschränkungen zu benötigen. Es ist sauberer und wahrscheinlich leistungsfähiger, einfach das Richtige zu tun und Nachschlagetabellen getrennt zu halten.