我应该使用多个字段还是JSON?

时间:2009-10-11 19:55:11

标签: database database-design

我正在设计一个数据库,并想知道存储它的最佳方法:

我有一个user表,让我们说它可以有100个项目插槽,我存储了一个ID。 我应该使用JSON({slot1:123232,slot20:123123123,slot82:23123})还是创建100多个字段(slot1,slot2,slotn)?

谢谢。

3 个答案:

答案 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数据”,您可以根据大小将其存储在字符串或其他字段类型中。

您可以像其他人建议的那样将其标准化,这会增加您的保存和检索时间。