SQLITE中列的任意数量的条目

时间:2011-04-18 19:16:02

标签: database-design schema

自从我使用SQL以来已经有一段时间了,而且我在为数据库中的表格提供最佳架构时遇到了麻烦。

最终,我有一堆用户(主键),每个用户都有许多我正在跟踪的属性。其中一个属性是它们所属的一组组(想想博客帖子有标签的方式 - 多个帖子可以共享相同的标签,同一个标签可以有多个帖子)。

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

1 个答案:

答案 0 :(得分:2)

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

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

User
-----
ID
Name
Group
----------
ID
Description

然后将两者联系起来:

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"