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

问题描述:

三个范式的定义是什么?如果不满足三个范式会造成什么结果?举例说明?
1个回答 分类:综合 2014-10-25

问题解答:

我来补答
平时从不回答这类基本问题,但看到网上很多关于三个范式的解释是有问题的,心血来潮回答一下,
第一范式:表中每一个字段的数据都不可分割.
在目前的数据库软件及其设计中,基本只有char类字段要考虑这一范式(而不是像有些人说的现有数据库完全不需要考虑,实际上很多垃圾软件公司设计数据库为了方便以后变更,很多都用varchar型的字段),但适当合并一些char类字段,可简化数据库结构,如将电话1、电话2、电话3(定长字符串)类的设计改为电话(varchar型变长字符串),采用适当的正则表达式确保输入数据的正确性,个人感觉优于采用多个定长字段.
也可以考虑一下,区号要和号码存在一个字段?分开存?对于一些大型系统,这些细节也是需要考虑的
第二范式:非主键列完全依赖主键列.
与完全依赖所对应的部分依赖,是指某些非主键列仅依赖复合主键中的部分列,而不是整个复合主键.因此所有单主键的表都符合第二范式.
(学号,课程名称) → (姓名,年龄,成绩,学分)
违反第二范式:
课程名称 → 学分,学分实际上只依赖于课程名(与学号无任何关系),
学号 → 姓名,年龄,同理,姓名、年龄与课程名无任何关系.
第三范式:非主键列不可传递依赖主键,即非主键列互不依赖.
(学号) → (姓名,年龄,所在学院,学院地点,学院电话)
违反第三范式:(学号) → (所在学院) → (学院地点,学院电话)
实在懒得打了,带来的后果就是数据冗余了,自己查一下资料吧
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识