【发布时间】:2021-08-04 22:13:40
【问题描述】:
| ID | Name | Number | Quantity | Measurement |
|---|---|---|---|---|
| 101 | A | 2541 | 5 | cm |
| 102 | A | 2341 | 5 | cm |
| 103 | B | 4561 | 15 | cm |
| 104 | B | 1896 | 15 | cm |
| 105 | C | 1546 | 30 | mt |
| 106 | C | 2531 | 30 | mt |
| 107 | C | 7852 | 30 | mt |
我有上面的表格,现在我想将其转换为 BCNF,第 4 和第 5 范式。我已经尝试并在线阅读,也浏览了 youtube 视频,但无法为这张桌子做。
任何帮助都是可观的。提前致谢。
编辑:这是我的想法
- 1NF: 对于任何表都处于第一范式-
- 表的所有非键列都应依赖于主键。
- 表中应该有唯一的条目。
因此,在仔细查看表格时,我们注意到表格已经处于第一范式,因为它满足上述属性。在这里,我们认为“ID”是我们的主键。表格结构与已经给出的类似,但为了方便起见,我们将对其进行重新排序。我们会将表格视为 - [ID, Name, Number, Quantity, Measurement]。
- 2NF: 使表处于第二范式-
- 表应该是 1NF。
- 所有非键列都依赖于整个主键。
- 具有简单主键的表自动采用第二范式。
因为,上述所有属性都满足当前表结构,它也处于 2NF 中。因此,表结构是- [ID, Name, Number, Quantity, 测量]。
- 3NF(不太确定): 当一个非键列依赖于另一个非键列时,它发生在 2NF 中。我们在这里给出的表格中也发生了类似的事情。数字和测量取决于导致冗余的名称。 此外,对于表在 3NF-
- 表格应为 2NF。
- 所有非键列都依赖于键、整个键,除了 钥匙。 因此,我们需要规范化我们的表格。为此,我们将表格分解如下 - ✓ 表 1:ID(PK)、编号、名称 ✓ 表 2:名称(PK)、编号 ✓ 表 3:名称 (PK)、测量值
【问题讨论】:
-
只是贴表并不能说明Name和Number的关系。
-
@eshirvana 我已经用我的想法编辑了我的问题,并尝试了 1、2 和 3NF。
-
@GilbertLeBlanc 您现在可以检查一下,如果您对 BCNF 和 4NF 有更多疑问或有好的解决方案,请告诉我。
-
我从不关心表何时处于 1NF、2NF 等状态。我发现这些非常理论化,因为在创建数据库时,我们会查看规范化而不考虑单个阶段。在您的样本数据中,您始终拥有相同的数量和测量名称。不过,这可能只是巧合。如果是这种情况,那么表就没有问题。如果不是这种情况,则表未规范化,应修复数据模型。
-
您研究的 1 个具体的非重复问题是什么? PS 那些 NF 定义是不正确的。您可以在(好的)教科书和(正确的)SO 答案中找到正确的定义。可悲的是,有很多不好的。网络帖子和视频毫无用处。现在,您的帖子实际上是在询问您弄错或不确定的第一个定义。那是一个常见问题。请参阅How to Ask、其他help center 链接、点击谷歌搜索“stackexchange 作业”和投票箭头鼠标悬停文本。 PS "1NF" has many meanings. PS NFs >1 依赖于 CK 和 FD,但你没有提到它们。
标签: database-design database-normalization