关系数据库中的作者、文章、杂志关系 [学说]
Posted
技术标签:
【中文标题】关系数据库中的作者、文章、杂志关系 [学说]【英文标题】:Authors, Articles, Magazines relationship in Relational Database [Doctrine] 【发布时间】:2013-11-26 12:43:10 【问题描述】:我有以下实体:
作者:ID、姓名
文章:ID、标题、内容、Magazine_Id
AuthorArticle:Author_Id、Article_Id
杂志:ID、标题
作者 - 文章是多对多的。
在知道 Author.Id 的情况下,获取发表作者文章的所有杂志列表的最有效方法是什么。
还有比这更好的设计选择吗??
目前我首先选择所有文章并从中选择 DISTINCT Magazine_ID。
我正在使用 Symfony2 和 Doctrine,所以也欢迎任何具体的东西。
【问题讨论】:
“还有比这更好的设计选择吗?”,不是常识,我更喜欢对主要|forein KEYS使用相同的名称,例如所有表中的aut_id,所有表中的articel_id等等 【参考方案1】:一键搞定:
Select distinct m.title from
author,
AuthorArticle,
Article,
Magazine
where
author.id = AuthorArticle.Author_Id
and
Article.id = AuthorArticle.Article_Id
and
Magazine.id = Article.Magazine_Id
and -- at least
Author.id ='my id'
编辑/附加(还有比这更好的设计选项吗?)
设计没问题,如果一件艺术品可以有多个作者
作为命名设计建议:
将您的密钥命名为相等,即:
Author: author_ , Name
Article: artikel_, Title, Contents, Magazine_
AuthorArticle: Author_, Article_
Magazine: Magazine_, Title
这可以帮助您防止拼写错误和选择错误的 ID,当您从 magazine
中选择 author_
时会出错,但如果您只是加入 id
则不会
【讨论】:
以上是关于关系数据库中的作者、文章、杂志关系 [学说]的主要内容,如果未能解决你的问题,请参考以下文章