我正在建立一个销售小部件的网站。我有一个小部件表,每个小部件都有一些属性(小部件名称,样式等)。我还有一个供用户使用的表格。窗口小部件具有唯一ID,用户还具有与之关联的唯一ID。
我的用户希望开始向其帐户“添加”小部件。每个小部件都可以添加到无限量的用户中。所以我的问题是我应该创建一个表,让我们称之为User_Widget,它将UserID与WidgetID相关联?
我想到的另一种方法是在User表中使用逗号分隔值(WidgetID1xQuantity,WidgetID2xQuantity等)。如果我标准化这种格式,我可以使用php来解析它并将它们内爆到一个数组中,然后可以交叉引用它来从Widget表中提取信息。
哪一种更快/更好的做法?如果我使用User_Widget方法,如果多个用户添加相同的小部件会发生什么?我只有两个条目吗?这不会增加额外开销吗?
小工具|用户 wid1 | USER1 wid1 |用户2
搜索这些(使用JOIN等)会比其他方法慢吗?
提前感谢您的帮助。
丹尼尔。
答案 0 :(得分:5)
我推荐带有关系的新表
它会更快地运作
答案 1 :(得分:0)
绝对是特定表格中的新关系。
除了之前评论中的其他缺点外,请记住:
1)假设窗口小部件有一些链接到它的信息,你仍然需要访问数据库来获取窗口小部件数据,所以你实际上并没有节省太多(正如其他人指出的那样,解析CSV很麻烦) 2)忘记做“喜欢在其小部件集合中列出具有X但不包含Y和Z的用户”这样的内容 - 或者至少忘记有效地执行此操作。 3)“选择用户Z拥有相同小部件的所有用户”相同 4)如果你需要用Widget Y大规模替换widget X怎么办?或者给每个拥有W的人免费Z?
在很多场景中,专用表为您提供了轻松描述的SQL查询,效率和紧凑性。很少(或没有)CSV字段“获胜”的情况。