名正常形式以及名字和姓氏

jas*_*328 0 mysql database database-design normalization

我正在尝试掌握1NF,并且想知道下表是否为1NF。我将假定为否,因为在列中可以重复first_name,last_name和full_name,因此需要将其转移到新表中,在该表中有user_id和first_name,last_name和full_name列。下图是参考数据库的屏幕截图。

http://imgur.com/kerlB

Bra*_*vic 5

1NF是关于原子性的,而不是冗余(这是高级范式的含义)。本质上,如果所有属性都是原子属性,则表位于1NF中。

显然,表是否在1NF中取决于您定义为“原子”的内容。“原子性”的实际含义是一个有争议的问题,但是在这里我将采取务实的个案研究方法,并简单地提出以下问题:

在我要解决的问题的背景下,访问1的任何部分值是否有意义,还是我始终访问整个值?

如果我总是访问整体,那么在特定的上下文中它是原子的。

在你的榜样,很可能你会想访问first_namelast_name分别,所以full_name将非原子,这将是对违反1NF的原因。但是,如果您知道永远不需要分别访问名字和姓氏,那么您可以使用full_name并且不违反1NF。


1 “访问”值在这里应该被广泛理解。显然,这可能意味着从数据库中读取它,但也可能意味着在约束中使用它或对其进行索引等。