Oracle数据库设计三范式
来源:互联网 发布:mysql数据库无法写入 编辑:程序博客网 时间:2024/09/21 06:18
官方定义:第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。
我的理解:第一范式这个不用說了,只要是关系数据库都满足第一范式
官方定义:第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖
我的理解:在第二范式中组合主键(AB)【注明:也叫做复合主键】里面的A或者B 与其他字段不能存在组合重复,为解决这个问题,通常的做法是咱们不用组合主键,添加一个ID,做为单一主键即可满足第二范式。如果不想添加ID,请满足组合主键(AB)里面的A或者B 与其他字段不能存在组合重复。
如:不满足第二范式,复合主键中的A与字段C组合重复
- +------------+-----------+-------------------+
- pk pk row
- +------------+-----------+-------------------+
- A B C
- +------------+-----------+-------------------+
- A D C
- +------------+-----------+-------------------+
- A E C
- +------------+-----------+-------------------+
改为这样满足第二范式(但是不满足第三范式,字段A与字段C是组合重复):
- +---------+------------+-----------+-------------------+
- pk row row row
- +---------+------------+-----------+-------------------+
- 1 A B C
- +---------+------------+-----------+-------------------+
- 2 A D C
- +---------+------------+-----------+-------------------+
- 3 A E C
- +---------+------------+-----------+-------------------+
官方定义:第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三 范式。
我的理解:在第三范式中字段与字段之间不能存在组合重复
如:不满足第三范式,字段A与字段C组合重复
- +---------+------------+-----------+-------------------+---------------+
- pk row row row row
- +---------+------------+-----------+-------------------+---------------+
- 1 A B C F
- +---------+------------+-----------+-------------------+---------------+
- 2 A D C G
- +---------+------------+-----------+-------------------+---------------+
- 3 A E C K
- +---------+------------+-----------+-------------------+---------------+
改为这样满足第三范式:
表1
- +---------+------------+-----------+
- pk row row
- +---------+------------+-----------+
- 1 A B
- +---------+------------+-----------+
- 2 A D
- +---------+------------+-----------+
- 3 A E
- +---------+------------+-----------+
- +---------+-------------------+------------+
- pk row row
- +---------+-------------------+------------+
- 1 C F
- +---------+-------------------+------------+
- 2 C G
- +---------+-------------------+------------+
- 3 C K
- +---------+-------------------+------------+
原则:当出现字段与字段的组合重复,如上的A和C的组合重复,首先要考虑的就是把他们拆分为2个表,具体是C拆到表1, 还是A拆到表1,看情况而定.
关键要理解定义这种范式标准的主要目的是为了减少数据冗余,数据冗余产生的本质就是在一个表中存在字段与字段之间的一对多,或者多对多关系。解决这个几对几的关系问题,就能轻易实现满足第三范式的数据库设计。
转自:http://www.askoracle.org/forum.php?mod=viewthread&tid=29- Oracle数据库设计三范式
- Oracle:数据库设计三大范式
- Oracle:数据库设计三大范式
- Oracle:数据库设计三大范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计 三范式
- 数据库设计 三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库三范式设计
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- UBUNTU一句话技巧--Linux入门(给新手)
- 字符串拼接方式(待商榷)
- 理解Ext.data.JsonStore 对象
- sicp 习题2.29
- PrepareStatement 中文参数 ?问题
- Oracle数据库设计三范式
- Providing Ancestral and Temporal Navigation 设计高效的应用导航
- C++实现队列
- Flashback Database
- sqlite 建索引 ,建临时表
- Putting it All Together: Wireframing the Example App 把APP例子用线框图圈起来
- 了解MAC码
- 2001:成绩转换
- ubuntu的.profile错误,无法进入系统