数据库设计——范式
2015-12-17 17:17
274 查看
第一范式(1NF)
它是否有主码
每一个域的名字是否唯一
数据是否原子性
是否有重复或冗余的域
非原子性的实例:
一个人的全名;一个完整的地址;一个更大数据集的部分数据;
例:
下面哪个数据表不符合第一范式?
4.
说明:
表一:不属于1NF,没有定义主码,因此每一条记录不能保证是唯一的。Full name 是冗余的——数据并非原子性,因为它是 Firstname和Surname的简单组合。 表二:至少属于1NF,它有一个主码。数据是原子性的。每一个域都有唯一的名字。没有重复数据。
表三:不属于1NF,它有主码,数据是原子性,但是color域重复了,并且这些域的名字也是相同的!
表四:属于1NF,符合1NF的所有规则
第二范式(2NF)
表必须已经符合第一范式
非关键属性必须依赖主码的每一部分
第三范式(3NF)
它已经是2NF
没有任何非关键属性依赖其他非关键属性
它是否有主码
每一个域的名字是否唯一
数据是否原子性
是否有重复或冗余的域
非原子性的实例:
一个人的全名;一个完整的地址;一个更大数据集的部分数据;
例:
下面哪个数据表不符合第一范式?
Title | Firstname | Surname | Full name | Address | City |
---|---|---|---|---|---|
Mr | Tom | Smith | Tom Smith | 42 Mill Street | London |
ID[主码] | IP Address | username | last accessed | Activity | Result | active |
---|---|---|---|---|---|---|
1003[主码] | 198.168.1.5 | Smith | 20081021:14.10 | Save file | success | y |
ItemID[主码] | Product | Description | Size | Colour | Colour | Colour |
---|---|---|---|---|---|---|
234 | Shoe | High Heel | 6 | red | blue | brown |
StudentID[主码] | Firstname | Surname | SchoolID* | ClassID* |
---|---|---|---|---|
354 | Tom | Smith | 6 | 5F |
表一:不属于1NF,没有定义主码,因此每一条记录不能保证是唯一的。Full name 是冗余的——数据并非原子性,因为它是 Firstname和Surname的简单组合。 表二:至少属于1NF,它有一个主码。数据是原子性的。每一个域都有唯一的名字。没有重复数据。
表三:不属于1NF,它有主码,数据是原子性,但是color域重复了,并且这些域的名字也是相同的!
表四:属于1NF,符合1NF的所有规则
第二范式(2NF)
表必须已经符合第一范式
非关键属性必须依赖主码的每一部分
第三范式(3NF)
它已经是2NF
没有任何非关键属性依赖其他非关键属性
相关文章推荐
- Linq to Sql 或linq to entities 与SQL查询结果不一致 返回重复结果问题
- redis-backgroud saving error
- nodejs+mongodb系列教程之(1/5)--开篇总述
- 解决Oracle创建视图(VIEW)权限不足的方法
- 老李分享:loadrunne动态查询db2数据库
- 老李分享:loadrunner操作mysql数据库
- mysql 基于LVM快照的备份
- 老李分享:MySql的insert语句的性能优化方案
- sqlsever,mysql,orcale,判断null值方法
- 关于Oracle中in和exists的区别
- ubuntu15.04 C客户端操作mysql
- MySQL配置文件my-innodb-heavy-4G.cnf 中文注释
- Redis面向java的Client
- redis初探
- mysql 去除重复记录
- Oracle授权 同义词
- oracle 常用表操作
- SQL查找列(字段)重复值及操作
- Mysql备份还原数据库之mysqldump实例及参数详细说明
- oracle带参数的存储过程