三个范式的定义是什么?如果不满足三个范式会造成什么结果?举例说明?

三个范式的定义是什么?如果不满足三个范式会造成什么结果?举例说明?

平时从不回答这类基本问题,但看到网上很多关于三个范式的解释是有问题的,心血来潮回答一下,呵呵

第一范式:表中每一个字段的数据都不可分割。
在目前的数据库软件及其设计中,基本只有char类字段要考虑这一范式(而不是像有些人说的现有数据库完全不需要考虑,实际上很多垃圾软件公司设计数据库为了方便以后变更,很多都用varchar型的字段),但适当合并一些char类字段,可简化数据库结构,如将电话1、电话2、电话3(定长字符串)类的设计改为电话(varchar型变长字符串),采用适当的正则表达式确保输入数据的正确性,个人感觉优于采用多个定长字段。
也可以考虑一下,区号要和号码存在一个字段?分开存?对于一些大型系统,这些细节也是需要考虑的

第二范式:非主键列完全依赖主键列。
与完全依赖所对应的部分依赖,是指某些非主键列仅依赖复合主键中的部分列,而不是整个复合主键。因此所有单主键的表都符合第二范式。
(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)
违反第二范式:
课程名称 → 学分,学分实际上只依赖于课程名(与学号无任何关系),
学号 → 姓名, 年龄,同理,姓名、年龄与课程名无任何关系。

第三范式:非主键列不可传递依赖主键,即非主键列互不依赖。
(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)
违反第三范式:(学号) → (所在学院) → (学院地点, 学院电话)

实在懒得打了,带来的后果就是数据冗余了,自己查一下资料吧
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答