Heim >Datenbank >MySQL-Tutorial >Einzelne Tabelle vs. flexible abstrakte Tabellen: Welches relationale Datenbankdesign ist das richtige für meine Anwendung?
Einzelne Tabelle mit mehreren Spalten
Dieser Ansatz erstellt eine einzelne Tabelle mit Spalten für jedes mögliche Attribut der dargestellten Entitäten. Es vereinfacht den Datenabruf und gewährleistet die Datenintegrität, indem es doppelte Zeilen verhindert. Das Hinzufügen oder Entfernen von Spalten erfordert jedoch eine Änderung der Tabellenstruktur, was sich möglicherweise auf vorhandenen Code auswirkt.
Beispiel:
Shop: | shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours |
Flexible abstrakte Tabellen (Entity-Attribute -Wert)
Dieser Ansatz verwendet eine Reihe miteinander verbundener Tabellen:
Beispiel:
Object: | object_id | name | |---|---| | 1 | Messy Joe's | | 2 | Bate's Motel | Type: | type_id | name | |---|---| | 1 | hotel | | 2 | restaurant | Object-Type: | object_id | type_id | |---|---| | 1 | 2 | | 2 | 1 | Field: | field_id | name | field_type | |---|---|---| | 1 | address | text | | 2 | opening_hours | date | | 3 | speciality | text | Type-Field: | type_id | field_id | |---|---| | 1 | 1 | | 1 | 2 | | 2 | 1 | | 2 | 3 | Object-Field: | object_id | field_id | value | |---|---|---| | 1 | 1 | 1st street.... | | 1 | 3 | English Cuisine |
Einzelne Tabelle:
Flexible Abstract Tables (EAV) :
Leistungsüberlegungen
Die Wahl zwischen einer einzelnen Tabelle oder EAV hat keinen wesentlichen Einfluss auf die Leistung, wenn die Datenbank vorhanden ist optimiert für die spezifische Arbeitsbelastung. EAV kann aufgrund der in Abfragen erforderlichen zusätzlichen Verknüpfungen einen leichten Mehraufwand verursachen. Allerdings ist dieser Overhead in modernen Datenbanksystemen typischerweise beherrschbar.
Die Wahl zwischen einer einzelnen Tabelle und EAV hängt von den spezifischen Anforderungen der Anwendung ab. Wenn häufige Schemaaktualisierungen zu erwarten sind oder Flexibilität im Vordergrund steht, ist EAV möglicherweise die bessere Option. Für einfachere Datenmodelle oder wenn die Leistung entscheidend ist, ist jedoch möglicherweise ein Einzeltabellenansatz besser geeignet.
Das obige ist der detaillierte Inhalt vonEinzelne Tabelle vs. flexible abstrakte Tabellen: Welches relationale Datenbankdesign ist das richtige für meine Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!