First Normal Form(1NF)

版权声明:本文为博主原创文章,如需转载,请注明出处。 https://blog.csdn.net/qq_37174526/article/details/82776507

假如一个数据库连第一范式都不满足,那肯定是个设计的很糟糕的数据库

Rules for First Normal Form


Rule 1: 每个属性的取值必须是原子的

每列的取值必须是单个值(single value),稍后举例说明

Rule 2: 每一列的domain必须是一样的

很显然,取值要不然是字符串,要不然是int,总之每列的数据类型不能不一样.

Rule 3: 不存在相同的列名

列名一定不能相同,不然BDMS会产生混淆

Rule 4: 顺序无关紧要

第一列可以放在第二列,第一行也可以放到第二行去,这都不影响。

Time for an Example


表头依次是学生id,学生姓名,学生所选课程

roll_no name subject
101 Akon OS, CN
103 Ckon Java
102 Bkon C, C++
当前已经满足了4个条件中的3个,唯独第一条原子性不满足,subject对应的取值可能有多个,即它是multi-value的,而不是atomic的。

解决办法

非常简单,把multi-value给它一个一个拆成single value,如下所示:

roll_no name subject
101 Akon OS
101 Akon CN
103 Ckon Java
102 Bkon C
102 Bkon C++

其实第一范式是非常非常基础的要求了,几乎没做什么强的限定。4条约束也是十分自然

猜你喜欢

转载自blog.csdn.net/qq_37174526/article/details/82776507