在資料庫列中儲存清單:可以完成嗎?
當面臨在資料庫中儲存複雜物件(如清單)的任務時關係資料庫,問題出現了:這可以在遵守資料庫規範化原則的情況下完成嗎?
在提供的例如,感興趣的對象 FOO 包含水果清單。要求是將此清單保留在資料庫列中。然而,傳統的關聯式資料庫模式不鼓勵在單列中儲存清單等非結構化資料。
關聯式資料庫方法
解決方案在於稱為聯結的非規範化設計桌。在這種方法中,我們建立一個單獨的表 FOOFruits,它儲存 FOO 物件及其包含的水果之間的關係。表中的每一行代表特定 FOO 物件和水果之間的連結。
定義表結構:
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) );
透過使用此方法,我們確保資料完整性並避免不一致同時保持 FOO 和 Fruits 表的引用完整性。
例如,將水果「Apple」加入 FOO 物件中ID=5:
INSERT FOOFruits(FooID, FruitID) SELECT 5, ID FROM Fruits WHERE name = 'Apple';
此方法允許高效查詢和檢索與每個 FOO 物件關聯的水果清單。
以上是清單可以有效地儲存在關係資料庫列中嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!