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

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 则不会

【讨论】:

以上是关于关系数据库中的作者、文章、杂志关系 [学说]的主要内容,如果未能解决你的问题,请参考以下文章

学说中的关系

Symfony学说中的许多关系

学说2:在多对多关系中引用连接表

Symfony2 和空关系的学说

跨数据库关系学说2和PHP

与学说 Symfony 的条件关系