三大范式五大约束

三大范式五大约束目前有迹可寻的共有 8 种范式 依次是 1NF 2NF 3NF BCNF 4NF 5NF DKNF 6NF 但是我们只要理解前三个范式就完全够用了 其他范式只是简单了解一下

大家好,欢迎来到IT知识分享网。

一,三大范式 

1.第一范式(1NF)

原子性:强调的是列的原子性,即数据库中每一列的字段都是单一属性,不可再分的。并且这个单一属性必须是由基本的数据类型所构成的,如整数、字符串等。

举例:

这是一张员工表:

2.第二范式(2NF)

依赖性:在满足1NF的基础上再满足依赖性的两个约束:一张表必须有一个主键;非主键类必须完全依赖于主键,而不能只依赖主键的一部分

商品         供销商         价格         重量         分类         供销商电话
啤酒         饮品1厂         3         300ml         液体         
啤酒         饮品2厂         5         300ml         液体         
可乐         饮品2厂         5         250ml         液体         

需要清楚几点:
1.商品与供销商是多对多的关系
2.该表中关键字是一组组合关键字<商品,供销商>,只有商品和供销商两个字段结合才可标识出一件商品
3.存在以下部分依赖的关系
商品—->价格,重量,分类
供销商—->供销商电话

由以上存在的部分依赖关系就可知道该商品表不符合第二范式了,价格,重量,分类只依赖于商品这个主键,而供销商电话也只依赖于供销商这个主键,已经完全违背了第二范式非主键列必须完全依赖于主键而不能只依赖于主键的一部分这一原则了。

解决方案:把上表商品表拆分为商品表和供销商表两张表,既满足了非主键字段必须完全依赖主键这一条件又减少了供销商电话重复这一冗余。

商品 供销商 价格 重量 分类
啤酒 饮品1厂 3 300ml 液体
啤酒 饮品2厂 5 300ml 液体
可乐 饮品2厂 3 250ml 液体

供销商 供销商电话
饮品1厂
饮品2厂

3.第三范式(3NF)

满足2NF的基础上,另外再满足一个条件:非主键列必须直接依赖于主键,不能存在传递依赖

课程编号         课程名字         上课时间         任课老师 老师电话                 老师职位
101         马克思理论基础         8:00                 Lily                  讲师
102                 经济学             14:00                 Lucy                教授

主键:课程编号
大致一看,上表中的非主键列确实完全是依赖于主键(课程编号)的,符合第二范式2NF。但是问题是:老师电话,老师职位直接依赖的是任课老师(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。 
解决方案:依然是通过拆分,把上述学生课表拆分为课程表和教师表。

课程表:

课程编号   课程名字      上课时间 任课老师
101      马克思理论基础   8:00         Lily
102         经济学             14:00       Lucy

任课老师 老师电话         老师职位
Lily              讲师
Lucy            教授

二,五大约束

1.PRIMARY KEY(primary key):设置主键约束;
2.UNIQUE(unique):设置唯一性约束,不能有重复值;
3.DEFAULT(default):默认值约束,height DOUBLE(3,2) height不输入是默认为(1,2)。
4. NOT NULL(not null):设置非空约束,该字段不能为空;
5. FOREIGN KEY (foreign key):设置外键约束。

(自我练习记录)

参考:三大范式(小白视角,一看就懂)_三范式-CSDN博客

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/155726.html

(0)
上一篇 2025-02-17 16:45
下一篇 2025-02-17 17:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信