gpt4 book ai didi

database - 一对多数据库关系

转载 作者:搜寻专家 更新时间:2023-10-30 21:44:53 24 4
gpt4 key购买 nike

伙计们,如果有人能帮助我,我将不胜感激。我有一个包含 4 个表的模式,这些表与这个问题 Books, Groups, ReadingList, Comments 相关。系统的用户可以加入一个群组并将书籍添加到该群组的阅读列表中。一个组的图书列表由表 ReadingList 表示:

ReadingList
-------------
Id (auto_increment)
ReadingListID
BookID (pk)
GroupID (pk)

BookID 和 GroupID 被设置为复合主键,以确保任何书籍都不会出现在群组阅读列表中两次。这两个字段都有一个定义到相关表 Books/Groups 的 fk。现在,当我尝试在 Comments 表和 ReadingList 之间建立关系时,我的问题就来了。理论上,ReadingList 中的每个唯一条目都可以有很多评论 (1..*),因此基本上,群组阅读列表中的一本书可以有很多与 in 关联的评论。评论表如下所示:

Comments
-----------
Id (pk, auto_increment)
ReadingListID
UserName
Comment
TimeStamp

我的逻辑是从 Comments (ReadingListID) 到 ReadingList (ReadingListID) 设置一个 fk,但我显然有缺陷,因为我收到“引用表中没有主键或候选键”错误。

我尝试了多种方法,例如将 Comments 表中的 ReadingListID 和 Id 设为复合键,以及将 ReadingListID 设为 ReadingList 表中的 pk 等,但我就是无法理解这个问题。如果我还不够清楚,请告诉我。

非常感谢!

最佳答案

enter image description here

BookInGroupCommentNo整数,每个GroupID,BookID 组合的序列号(1,2,3..)。使用

创建新评论时可以轻松获得
select
coalesce(max(BookInGroupCommentNo), 0) + 1
from ReadingList
where GroupID = some_group_id
and BookID = some_book_id ;

ReadingListComment 表中删除那些自动递增的 IDsReadingListID

关于database - 一对多数据库关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com