自从我使用SQL以来已经有一段时间了,而且我在为数据库中的表格提供最佳架构时遇到了麻烦。
最终,我有一堆用户(主键),每个用户都有许多我正在跟踪的属性。其中一个属性是它们所属的一组组(想想博客帖子有标签的方式 - 多个帖子可以共享相同的标签,同一个标签可以有多个帖子)。
构建此数据库的表的最佳方法是什么,以便我可以轻松检查与用户关联的组以及属于给定组的用户?
答案 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"