【问题标题】:Database - table contain only primary and foreign keys数据库 - 表只包含主键和外键
【发布时间】:2018-10-08 11:25:35
【问题描述】:

一个表可以只包含一个主键和一个或多个外键吗?还是会违反规范化设计?

例如:

PK:技能名称
FK: SKILL_ID
FK:EMPL_ID

【问题讨论】:

  • 嗨。为什么会呢?为什么不呢?了解什么是标准化,当您不知道它是什么时,不要担心您想知道的可能与它有关的事情。这个问题的答案是教科书的一章加上一个定制的教程——它对 SO 来说“太宽泛”了。尽管如此,它也是一个副本。 PS FK 与表所在的 NF 无关。PK 与规范化无关,只是它们是 CK 和 CK 很重要。
  • 嗨。这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。

标签: database foreign-keys primary-key database-normalization


【解决方案1】:

是的。这将是典型的结构,例如,用于实现两个实体之间的 n-m 关系的关联/联结表。

也就是说,我创建的几乎所有表也都有:

  • createdAt -- 记录的插入时间
  • createdBy -- 谁插入了记录

有时:

  • createdOn -- 创建记录的系统/数据库

【讨论】:

    【解决方案2】:

    您的示例可能不是一个好示例,因为我不理解技能名称是 PK 而不是技能 ID 的场景。

    您提到的实际上类似于 EAV 数据模型,我看到一些开源产品(magento)使用它。但它过于规范化,需要非规范化的缓存表来提高性能。

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 2015-12-21
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      相关资源
      最近更新 更多