Sql 关系数据库中的作者、文章、杂志关系[原则]

Sql 关系数据库中的作者、文章、杂志关系[原则],sql,database-design,orm,doctrine-orm,relational-database,Sql,Database Design,Orm,Doctrine Orm,Relational Database,我有以下实体: 作者:Id、姓名 文章:Id、标题、内容、杂志\u Id 作者文章:作者Id,文章Id 杂志:Id,标题 作者文章是多对多的 在知道Author.Id的情况下,获取发表作者文章的所有杂志列表的最有效方法是什么 有比这更好的设计选项吗 目前我首先选择所有文章,并从中选择不同的杂志ID。 我使用的是Symfony2和Doctrine,因此任何特定的东西都是受欢迎的。只需一次选择即可: Select distinct m.title from author, Aut

我有以下实体:

作者:Id、姓名

文章:Id、标题、内容、杂志\u Id

作者文章:作者Id,文章Id

杂志:Id,标题

作者文章是多对多的

在知道Author.Id的情况下,获取发表作者文章的所有杂志列表的最有效方法是什么


有比这更好的设计选项吗

目前我首先选择所有文章,并从中选择不同的杂志ID。

我使用的是Symfony2和Doctrine,因此任何特定的东西都是受欢迎的。

只需一次选择即可:

 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'

编辑/附加(是否有比此更好的设计选项?)

如果一个artikel可以有多个autor,那么设计是可以的

作为命名设计建议:

将您的密钥命名为equal,即:

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

这有助于防止键入错误和彼此选择错误的id,从
杂志
选择
作者时会出现错误,但如果您只是加入
id

“有比这更好的设计选项吗?”,这不是常见的问题,我更愿意为主| forein键使用相同的名称,像所有表中的aut_id、所有表中的articel_id等等