关系数据库中的作者,文章,杂志关系[学说]

时间:2013-11-26 12:43:11

标签: sql database-design orm doctrine-orm relational-database

我有以下实体:

作者:ID,姓名

文章:ID,标题,内容,杂志_Id

作者文章:Author_Id,Article_Id

杂志:我,标题

作者 - 文章是多对多的。

获取作者文章发布的所有杂志列表的最有效方法是什么,知道作者.Id。

有没有比这更好的设计方案?

目前我首先从中选择所有文章和选择DISTINCT Magazine_ID。

我正在使用Symfony2和Doctrine,所以也欢迎任何具体的事情。

1 个答案:

答案 0 :(得分:0)

在一个选择中执行:

 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'

EDIT / APPEND(有比这更好的设计选项吗?)

设计没问题,如果artikel可以有多个autor

作为命名设计建议:

将您的密钥命名为等号,即:

Author: author_ , Name
Article: artikel_, Title, Contents, Magazine_
AuthorArticle: Author_, Article_
Magazine: Magazine_, Title

这有助于您防止拼写错误并相互选择错误的ID,从author_选择magazine时会出错,但如果您只是加入id则不会