【发布时间】:2011-07-30 23:52:14
【问题描述】:
如果有人能帮我解决这个问题,我将不胜感激。我有一个架构,其中包含 4 个与此问题 Books、Groups、ReadingList、Comments 相关的表。系统的用户可以加入一个组并将书籍添加到该组的阅读列表中。一个小组的书单由表 ReadingList 表示:
ReadingList
-------------
Id (auto_increment)
ReadingListID
BookID (pk)
GroupID (pk)
BookID 和 GroupID 被设置为复合主键,以确保没有书籍可以出现在组阅读列表中两次。这两个字段都有一个定义到相关表 Books/Groups 的 fk。现在我的问题是在尝试在 Comments 表和 ReadingList 之间建立关系时出现。理论上,ReadingList 中的每个唯一条目都可以有许多 cmets (1..*),因此基本上组阅读列表中的一本书可以有许多与 in 相关联的 cmets。Comments 表如下所示:
Comments
-----------
Id (pk, auto_increment)
ReadingListID
UserName
Comment
TimeStamp
我的逻辑是从 Comments (ReadingListID) 到 ReadingList (ReadingListID) 设置一个 fk,但我显然有缺陷,因为我收到“引用表中没有主键或候选键”错误。
我尝试了很多方法,例如将 Comments 表中的 ReadingListID 和 Id 设为复合键,并将 ReadingListID 设为 ReadingList 表中的 pk 等,但我无法理解这一点。如果我还不够清楚,请告诉我。
非常感谢!
【问题讨论】:
-
如何创建 ReadingList-> ReadingListID 是唯一的吗?
标签: database database-design normalization