【问题标题】:How to identify the highest normal form of a relation schema?如何识别关系模式的最高范式?
【发布时间】:2011-08-15 22:27:45
【问题描述】:

假设我们有一个关系模式。我们如何陈述该关系的最高法线?


例如:

  • Art_Object(Art_Id、标题、描述、国家、艺术家、时代、年份)

【问题讨论】:

  • 您可能需要考虑标记所涉及的编程语言或技术,以提高获得问题答案的机会。
  • 我不清楚你是否想知道 Art_Object 的范式是什么,或者你是否想知道如何将 Art_Object 分解为更高的范式。但无论如何,规范化是基于值,而不是列名,因此具有代表性的样本值会有所帮助。 (以及澄清你想要什么。)
  • 只是好奇:不应该还有Style 属性吗?还是由Epoch定义的?
  • 我想知道 Art_Object 的正常形式是什么?这是我学校的考试。我们应该通过这些列找到它。

标签: sql database normalization


【解决方案1】:

“我想知道 Art_Object 的正常形式是什么?这是我学校的测试。”

任何给定设计的正常形式都取决于哪些功能依赖

如果没有给出这组函数依赖,这个问题根本无法回答。

如果唯一持有的 FD 是 Art_ID -> {所有属性},那么您的设计属于 5NF。

如果相反有一些额外的 FD,比如 Artist -> Country,那么这个设计甚至不是 3NF。

【讨论】:

  • FD 还是 JD?可能有一个 FD Year ⟶ Epoch(以及您确定的 Artist ⟶ Country FD),所以它不在 3NF 中。
  • 嗨乔纳森,好久没听到了。当然,关键的词是“可能”。我回复的目的正是要指出这一点。这个练习有两个问题:(a) 练习依赖于 DB 设计者必须做出的 假设,以及 (b) 它完全保持开放的事实国家/地区等属性在此设计中扮演的角色(哥伦布在年份发现的国家?艺术家的出生国家?创作艺术品的国家?),甚至无法做出(a)的假设。
  • 你对 FD/JD 的看法是对的,当然。但是如此精确是否有助于提高清晰度而不是混乱?也许我不应该提到 5 NF。
  • 如果这种关系在 5NF 中是不可能的,因为我还没有学习 5NF。我认为要说明我们需要 FD 和候选键的最高范式,但这里没有提到。如果 Jonathan 是对的,则以下关系必须在 BCNF 中:Art_Sculpture (Art_Id*, Material, Height, Weight) • FD: Art_Id* -------------- Material, Height, Weight • Candidate键:{Art_Id} • 引用完整性:Art_Id* 引用 Art_Object.Art_Id • 范式: • 原因:因为 Art_ID FD 所有其他属性。
  • 你说,“如果这种关系在 5NF 中是不可能的,因为我还没有学习 5NF。”不,很可能在不知道 5NF 是什么的情况下创建 5NF 中的关系。你的 Art_Sculpture 关系在 5NF 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2016-08-13
  • 1970-01-01
相关资源
最近更新 更多