Heim >Datenbank >MySQL-Tutorial >Können Listen effizient in einer relationalen Datenbankspalte gespeichert werden?
Eine Liste in einer Datenbankspalte speichern: Ist das möglich?
Wenn Sie vor der Aufgabe stehen, komplexe Objekte wie Listen innerhalb einer Spalte zu speichern Bei einer relationalen Datenbank stellt sich die Frage: Kann dies unter Einhaltung der Datenbanknormalisierungsprinzipien erreicht werden?
Im bereitgestellten Beispiel ist das Objekt von Interesse, FOO, enthält eine Liste von Früchten. Die Anforderung besteht darin, diese Liste in einer Datenbankspalte zu speichern. Herkömmliche relationale Datenbankschemata raten jedoch davon ab, unstrukturierte Daten wie Listen in einer einzelnen Spalte zu speichern.
Der relationale Datenbankansatz
Die Lösung liegt in einem denormalisierten Design, das als Junction bezeichnet wird Tisch. Bei diesem Ansatz erstellen wir eine separate Tabelle, FOOFruits, die die Beziehung zwischen den FOO-Objekten und den darin enthaltenen Früchten speichert. Jede Zeile in dieser Tabelle stellt eine Verbindung zwischen einem bestimmten FOO-Objekt und einer Frucht dar.
So definieren Sie die Tabellenstruktur:
CREATE TABLE FOO ( id int primary key not null, int1 int, int2 int, int3 int ); CREATE TABLE Fruits ( id int primary key not null, name varchar(30) ); CREATE TABLE FOOFruits ( FruitID int references Fruits (ID), FooID int references FOO(id), constraint pk_FooFruits primary key (FruitID, FooID) );
Durch die Verwendung dieses Ansatzes stellen wir die Datenintegrität sicher und vermeiden Inkonsistenzen unter Beibehaltung der referenziellen Integrität der FOO- und Fruits-Tabellen.
Zum Beispiel, um die Frucht „Apple“ zum FOO-Objekt mit hinzuzufügen ID=5:
INSERT FOOFruits(FooID, FruitID) SELECT 5, ID FROM Fruits WHERE name = 'Apple';
Diese Methode ermöglicht eine effiziente Abfrage und den Abruf der Fruchtlisten, die jedem FOO-Objekt zugeordnet sind.
Das obige ist der detaillierte Inhalt vonKönnen Listen effizient in einer relationalen Datenbankspalte gespeichert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!