SQL数据库设计用于存储项目和分组

时间:2018-04-23 09:46:48

标签: sql database-design

我想创建一个存储项目的数据库。 并希望有一个组来添加和删除它们。 这是正确的方法还是有更好的方式我目前正在使用它:

Item Table
itemid  itemname 
------  --------
1       Test1
2       Test2

Group Table
groupid  groupname  itemid
-------  ---------  ------
1        Group1     [1][2]  (this holds both items in the group)
2        Group2     [1]     (this holds item 1 only)

当我通过Group1搜索以显示以下内容时,如何在我的情况下显示SQL语句

ItemID  Itemname  Group
------  --------  -----
1       Test1     Group1,Group2

当我搜索所有项目时,它应该显示

ItemID  Itemname  Group
------  --------  -----
1       Test1     Group1,Group2
2       Test2     Group1

1 个答案:

答案 0 :(得分:0)

修复您的数据库!您应该有一个名为GroupItems的表,每个项目和每组一行。它看起来像是:

GroupItemId   GroupId   ItemId
     1           1         1
     2           1         2
     3           2         1

为什么你的结构错了?

  • 应使用正确的类型存储值。我将您的列表解释为字符串,将值解释为数字。
  • 列表示属性,并且只应包含一个值。
  • SQL的字符串处理功能很差。
  • 应正确定义外键。
  • SQL无法使用索引和其他功能来优化查询。