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

Ist die Verwendung einer Master-Tabelle für gemeinsam genutzte Spalten eine gute Praxis für eine gesamte Datenbank?

Wieso den? Mach alles Ihre Entitäten müssen auf diese Weise erweiterbar sein? Wahrscheinlich nicht – in den meisten Anwendungen gibt es höchstens ein oder zwei Einheiten, die von diesem Maß an Flexibilität profitieren würden. Die anderen Entitäten profitieren tatsächlich von der Stabilität und Klarheit von not sich ständig ändern.

EAV ist ein Beispiel für den Inner-Platform-Effect :

Mit anderen Worten, jetzt liegt es in Ihrer Verantwortung, Anwendungscode zu schreiben, um all die Dinge zu tun, die ein richtiges RDBMS bereits bietet, wie Einschränkungen und Datentypen. Sogar etwas so Einfaches, wie eine obligatorische Spalte wie NOT NULL zu machen funktioniert nicht in EAV.

Es ist wahr, dass ein Projekt manchmal viele Tabellen erfordert. Aber Sie täuschen sich selbst, wenn Sie denken, Sie hätten das Projekt vereinfacht, indem Sie nur zwei Tabellen erstellt haben. Sie haben immer noch genauso viele verschiedene Entitäten wie Tabellen, aber jetzt liegt es an Ihnen, zu verhindern, dass sie zu einem Müllhaufen werden.

Bevor Sie zu viel Zeit in EAV investieren, lesen Sie diese Geschichte über ein Unternehmen, das fast nicht mehr funktionierte, weil jemand versuchte, sein Datendepot beliebig flexibel zu machen:Bad CaRMa .

Ich habe auch mehr über EAV in einem Blogbeitrag geschrieben, EAV FAIL , und in einem Kapitel meines Buches SQL Antipatterns:Avoiding the Pitfalls of Database Programming .