Heim >Datenbank >MySQL-Tutorial >Können Listen effizient in einer relationalen Datenbankspalte gespeichert werden?

Können Listen effizient in einer relationalen Datenbankspalte gespeichert werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 04:50:09585Durchsuche

Can Lists Be Stored Efficiently in a Relational Database Column?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn