gpt4 book ai didi

sql - 在数据库中保存动态列表的首选方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:51:13 25 4
gpt4 key购买 nike

在我们的应用程序中,用户可以创建不同的列表(如共享点),例如用户可以创建汽车列表(名称、型号、品牌)和学生列表(姓名、出生日期、地址、国籍)等。

我们的应用程序应该能够查询列表的不同列,这样我们就不能只序列化每一行并将其保存在一行中。

我应该在运行时为每个新创建的列表创建一个新表吗?如果这是最好的解决方案,那么我想 Microsoft SharePoint 可能也会这样做?

我应该使用以下架构吗

Lists (Id, Name)
ListColumns (Id, ListId, Name)
ListRows (Id, ListId)
ListData(RowId, ColumnId, Value)

虽然单行将在列表数据表中创建与列表中的列一样多的行,但这感觉不对。

你遇到过这种情况吗?你是如何在数据库中处理它的?

最佳答案

你所做的叫做EAV (Entity-Attribute-Value Model) .

对于具有 3 列和 1000 个条目的列表:

列表中有 1 条记录ListColumns 中有 3 条记录和 ListData 中的 3000 个条目

这很好。我不喜欢即时创建表,因为它可能会弄乱你的数据库,你将不得不动态地“生成”你的 SQL 查询。当用户可以在我的数据库中创建/删除/更改表时,我会有一种奇怪的感觉!

EAV 模型的另一个不错的特性是您可以轻松合并两个列表,而无需删除和更改表格。

编辑:

我认为您需要另一个名为 ListRows 的表来告诉您哪些 ListData 记录属于一行!

关于sql - 在数据库中保存动态列表的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com