Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Klassen in der Datenbank erweitern

Ich würde dringend empfehlen, dass Sie sich Class Table Inheritance ansehen Muster wie von Martin Fowler definiert.

Dieses Entwurfsmuster erstellt eine einzelne Tabelle, die beispielsweise die Daten enthält, die allen Gebäuden gemeinsam sind, und erfordert dann eine separate Tabelle für alle Daten, die sich auf einen bestimmten Gebäudetyp beziehen. Eine Sache, die ich hilfreich finde, ist, ein 'Typ'-Feld in der übergeordneten Tabelle zu speichern, damit Sie wissen, welche Art von Entität Sie haben, ohne die untergeordneten Tabellen nach entsprechenden Datensätzen durchsuchen zu müssen.

Ich würde empfehlen, dass Sie es vermeiden, es sei denn, Sie haben einen sehr spezifischen, genau definierten Grund, ein Entity-Attribute-Design zu verwenden. Zum einen wird es bei Verwendung dieser Art von Design unmöglich, Einschränkungen in der Datenbank auszunutzen, um zu steuern, welche Eingaben erforderlich und welche Arten von Werten zulässig sind. Zum anderen werden alle Abfragen, die Daten aus diesen Feldtypen abrufen müssen, drastisch verlangsamt, da die in diesen Feldern gespeicherten Daten nicht so indiziert werden können, wie Sie es normalerweise tun würden.