Database design SQLITE中一列中任意数量的条目

Database design SQLITE中一列中任意数量的条目,database-design,schema,Database Design,Schema,我已经有一段时间没有使用SQL了,我很难为数据库中的表找到最佳模式 最终,我有一群用户(主键),每个用户都有一些我正在跟踪的属性。这些属性之一是它们所属的一组组(想想博客文章有标签的方式——多篇文章可以共享同一标签,同一标签可以有多篇文章) 为该数据库构造表的最佳方法是什么,以便我可以轻松地检查与用户关联的组,以及属于给定组的用户?通常,每列只有0或1个条目,仅此而已。(可以说,Null是一个条目,因此从这个意义上说,每列实际上总是有一个条目)。当您考虑在一列中包含多个条目时,是时候分解模型了

我已经有一段时间没有使用SQL了,我很难为数据库中的表找到最佳模式

最终,我有一群用户(主键),每个用户都有一些我正在跟踪的属性。这些属性之一是它们所属的一组组(想想博客文章有标签的方式——多篇文章可以共享同一标签,同一标签可以有多篇文章)


为该数据库构造表的最佳方法是什么,以便我可以轻松地检查与用户关联的组,以及属于给定组的用户?

通常,每列只有0或1个条目,仅此而已。(可以说,Null是一个条目,因此从这个意义上说,每列实际上总是有一个条目)。当您考虑在一列中包含多个条目时,是时候分解模型了

从基本数据元素开始,忘记它们之间的关系:

User ----- ID Name 使用者 ----- 身份证件 名称 团体 ---------- 身份证件 描述 然后将两者联系起来:

UserGroup ---------- UserID GroupID 用户组 ---------- 用户ID GroupID 用户可以拥有的其他“单一”属性(电子邮件地址、url、年龄等)将放在用户表中

例如:

User: ID = 1, Name = John User: ID = 2, Name = Mary Group: ID = 1, Description = Boys Group: ID = 2, Description = Students Group: ID = 3, Description = Programmers UserGroup: UserID = 1, GroupID = 1 -> John is a member of "Boys" UserGroup: UserID = 1, GroupID = 2 -> John is also a member of "Students" UserGroup: UserID = 2, GroupID = 2 -> Mary is another member of "Students" 用户:ID=1,Name=John 用户:ID=2,Name=Mary 组:ID=1,描述=男孩 组:ID=2,描述=Students 组:ID=3,Description=Programmers UserGroup:UserID=1,GroupID=1->John是“男孩”的成员 UserGroup:UserID=1,GroupID=2->John也是“学生”的成员 UserGroup:UserID=2,GroupID=2->Mary是“学生”的另一个成员
我有点困惑——那么,一个用户如何与多个组关联呢?似乎UserGroup表仍然只有一个GroupID元素。@反手:可以在UserGroup中创建多个条目。我们可以说没有唯一性约束(或者说它是在UserID-GroupID对上)。我要在我的答案后面加一个例子。 User: ID = 1, Name = John User: ID = 2, Name = Mary Group: ID = 1, Description = Boys Group: ID = 2, Description = Students Group: ID = 3, Description = Programmers UserGroup: UserID = 1, GroupID = 1 -> John is a member of "Boys" UserGroup: UserID = 1, GroupID = 2 -> John is also a member of "Students" UserGroup: UserID = 2, GroupID = 2 -> Mary is another member of "Students"