我正在设计一个数据库,并想知道存储它的最佳方法:
我有一个user
表,让我们说它可以有100个项目插槽,我存储了一个ID。
我应该使用JSON({slot1:123232,slot20:123123123,slot82:23123}
)还是创建100多个字段(slot1,slot2,slotn)?
谢谢。
答案 0 :(得分:4)
第三种方法,为插槽创建另一个表,并在用户和插槽之间建立一对多的关系。您的业务逻辑将强制执行100个插槽限制。
我建议不要在数据库中执行嵌入式JSON。我不确定你使用的是什么数据库,但是如果没有拔出并解析所有100条记录,查询给定用户的实际插槽数据可能会非常困难。
要创建一对多关系,您需要第二个表
Slots
id (primary key)
user_id (mapping to user table)
item_id (your slot # you want to store)
现在,您可以执行有用的SQL查询,例如
SELECT * FROM Users,Slots WHERE Slots.user_id = Users.id AND Slots.item_id = 12345
这将为您提供包含插槽项目#12345
的所有用户的列表答案 1 :(得分:1)
使用数据库设计规范化,您不应该拥有多值属性。
你可能想要这个。
Users
=====
UserId
UserSlots
=========
UserId
SlotId
Value
Slots
=====
SlotId
Value
答案 2 :(得分:0)
您不应该创建100个字段。
创建一个包含两个字段的表,即ID和“JSON数据”,您可以根据大小将其存储在字符串或其他字段类型中。
您可以像其他人建议的那样将其标准化,这会增加您的保存和检索时间。