在 MySQL 中...这可能不是我所追求的关系的最佳示例,但这本质上是我在数据库中尝试做的事情(这从我的完整数据模型中非常简化)。
假设我们有一个名为“author”的表和一个名为“book”的表。
- “DB.author”:author_id、author_name
- 'DB.book':book_id、book_name、author_id (这是一种识别关系)
现在假设我们有一个名为 reader 的表,其中包含最喜欢的作者和最喜欢的书籍的列。每个读者都有一个最喜欢的作者,但他们并不都有最喜欢的书。如果他们确实有一本最喜欢的书,那一定是他们最喜欢的作者写的。
- “DB.reader”:reader_id、reader_name、favorite_author_id、favorite_book_id
我不能只删除 favorite_author_id 列,因为 favorite_book_id 可能为空。是否可以对这种关系进行建模并避免循环?
最佳答案
也许有一个reader_favorite
表 reader_id
, favorite_type
,和favorite value
哪里favorite_type
可以是一本书或作者。然后您可以从reader
LEFT JOIN至reader_favorite
然后左连接到 book
和author
来自reader_favorite
table 。
然后,您只需确保读者是否有 book
的条目。和author
reader_favorite
中最喜欢的类型表,这两个值(value)观一致,但这已经是一个问题了:没有伤害,没有犯规。
关于mysql - 我如何建模这种关系(避免循环)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677321/