确定关系是否为无数据的 1NF

问题描述 投票:0回答:1

我有亲戚关系

CAR_SALE(Car#, Date_sold, Salesperson#, Commission%, Discount_amt)
Primary Key: {Car#, Salesperson#}
Additional Dependencies: Date_sold -> Discount_amt
                         Salesperson# -> Commission%

我必须确定它是在 1NF、2NF 还是 3NF 中。我们只给出了没有数据的关系模式。我无法确定这是否属于 1NF。为了使某些内容处于 1NF 状态,它的属性不得具有重复组。考虑到这个关系模式没有实际数据,难道就无法分辨吗?我不需要实际数据来确定它是否是 1NF 吗?或者主键的存在会让我知道没有属性会重复?

我知道对于 2NF,它必须在 1NF 中,并且所有非键属性必须依赖于主键,而对于 3NF,它必须在 2NF 中并且没有翻译依赖性。

relational-database database-normalization
1个回答
0
投票

许多人使用“1NF”来表示属性类型的一些模糊概念,所有这些属性都是某种称为“atomic”的模糊方式。 Codd 最初的意思是“标准化”,后来是“1NF”,意思是没有本身就是关系的属性。 “原子”的所有其他用法都被混淆了,无用的、不合理的公认观点,并且一个值是否是“原子的”最终在实践中取决于它是否没有您希望成为关系中元组中某些属性的值的部分。查询结果。无论哪种情况,您都无法仅根据属性判断关系是否属于 1NF。如果您被告知属性的类型,以及“原子”的明确标准(科德给出的:不是关系),那么您就可以知道。其他人认为“1NF”没有帮助或将其定义为“是一种关系”。当您听到/看到使用“1NF”时,请确保您明白其含义。 (祝你好运,为“原子”找到一个合理的定义。)

有时人们错误地将“重复组”用作“非原子”。 (但重复组实际上是前关系型非关系数据库中的一个概念,不能出现在关系中。)

有时,人们含糊不清地错误地认为关系不能在元组中的属性具有多个值,这无论如何都是不可能的,因为根据定义,关系在元组中的属性只有一个值。

有时,出于某种相似性的概念,人们模糊地、困惑地、毫无帮助地错误地在他们的“1NF”中包含不存在多个相似的属性。

请参阅这个答案这个答案

© www.soinside.com 2019 - 2024. All rights reserved.