Menyimpan Senarai dalam Lajur Pangkalan Data: Bolehkah Ia Dilakukan?
Apabila berhadapan dengan tugas menyimpan objek kompleks seperti senarai dalam pangkalan data hubungan, persoalan timbul: bolehkah ini dicapai sambil mematuhi prinsip normalisasi pangkalan data?
Dalam contohnya, objek yang diminati, FOO, mengandungi senarai buah-buahan. Keperluan adalah untuk mengekalkan senarai ini dalam lajur pangkalan data. Walau bagaimanapun, skema pangkalan data relasi tradisional tidak menggalakkan penyimpanan data tidak berstruktur seperti senarai dalam satu lajur.
Pendekatan Pangkalan Data Relasional
Penyelesaian terletak pada reka bentuk tidak normal yang dikenali sebagai simpang meja. Dalam pendekatan ini, kami mencipta jadual berasingan, FOOFruits, yang menyimpan hubungan antara objek FOO dan buah-buahan yang terkandung di dalamnya. Setiap baris dalam jadual ini mewakili pautan antara objek FOO tertentu dan buah.
Untuk menentukan struktur jadual:
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) );
Dengan menggunakan pendekatan ini, kami memastikan integriti data dan mengelakkan ketidakkonsistenan sambil mengekalkan integriti rujukan jadual FOO dan Fruits.
Sebagai contoh, untuk menambah buah "Epal" pada Objek FOO dengan ID=5:
INSERT FOOFruits(FooID, FruitID) SELECT 5, ID FROM Fruits WHERE name = 'Apple';
Kaedah ini membenarkan pertanyaan yang cekap dan mendapatkan semula senarai buah yang dikaitkan dengan setiap objek FOO.
Atas ialah kandungan terperinci Bolehkah Senarai Disimpan dengan Cekap dalam Lajur Pangkalan Data Hubungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!