Sql 关系数据库中的作者、文章、杂志关系[原则]
我有以下实体: 作者:Id、姓名 文章:Id、标题、内容、杂志\u Id 作者文章:作者Id,文章Id 杂志:Id,标题 作者文章是多对多的 在知道Author.Id的情况下,获取发表作者文章的所有杂志列表的最有效方法是什么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。 我使用的是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等等