在数据库列中存储层次结构数据(例如列表)可能是一个挑战。让我们考虑一个场景,您想要存储一个包含水果列表的对象 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 对象的列表中,请将一行插入到FOOFruits 表:
INSERT FOOFruits(FooID, FruitID) SELECT 5, ID FROM Fruits WHERE name = 'Apple';
规范化设计的优点
以上是如何在关系数据库中存储相关数据列表?的详细内容。更多信息请关注PHP中文网其他相关文章!