【问题标题】:In a Logical ER Design, when should a foreign key, also be a primary key?在逻辑 ER 设计中,什么时候外键也应该是主键?
【发布时间】:2014-04-11 11:29:24
【问题描述】:

我目前正在从事一项基于研究期刊/论文数据库的数据库设计任务。 我遇到的主要问题是确定某些实体是否有足够的唯一标识符(以及正确的标识符)以及我是否拥有正确的关系。

例如。每篇研究论文都有一个唯一的 PaperID (PK)。每篇研究论文都有作者在论文开头列出的关键字列表(通常为 4-5 个)。

  1. 我是否正确地假设这是一个一对多的关系? - 一篇论文有很多关键词,每个关键词实例属于一篇论文。

  2. Paper PK (PaperID) 是否会成为关键字表的 FK & PK?这种布局是否支持上述的一对多关系?

例如


表格 - 纸

PK = PaperID

属性列表


表格 - 关键字

PK、FK = PaperID

关键字


因此,查找所有具有特定关键字(例如“猪”)的论文的查询将显示类似于以下内容的结果:

PaperID |关键字

1 | '猪'

2 | '猪'

63 | '猪'


我的逻辑是正确的思考方式吗?

任何建议或帮助将不胜感激!

谢谢

***编辑:所以似乎大多数人认为这是一个多对多的关系,不幸的是,研究论文有许多这样的关系(例如研究目标、主要主题、子主题(s), 研究类型, 研究问题)

--> 那么我是否必须通过为其中的每一个创建关联实体来解决这些问题?!当然必须有更好的方法来解决这些多对多问题,而不是必须创建一个额外的...... 8-10 关联实体?超类型/子类型?

再次感谢大家的回复。边走边学!

【问题讨论】:

  • 不,您的论文关键字关系是多对多关系。每篇论文可以有很多关键词。每个关键字都可以附加到多篇论文中。
  • 好像没问题。但在许多情况下,使用多对多关系会更好。所以你将拥有PapersKeywordsKeywords do Papers 表。

标签: mysql sql database entity entity-relationship


【解决方案1】:
  1. 我原以为 Keyword to Paper 是多对多的关系。关键字“猪”出现在许多论文中。任何一篇论文都可以有很多关键词。这样你就可以减少文本的重复。 (但话又说回来,按照自己的方式编写代码可能更快。)

  2. 如果您的关系是一对多的,那么您可能需要关键字表中的复合键,因此关键字的 PK 由 PaperID + 关键字组成。老实说,我不会为此出汗 - 听起来您只想在关键字上建立索引,而不是担心该表的 PK 格式良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-17
    • 2011-02-22
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多