SqlServer------范式小结
说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念。
首先要理解几个键值。
超键:在关系模式中,能唯一标识元组的属性集称为 super key。
候选键:关系模式中,能唯一标识元组并且不含多余属性的属性集称为候选键。值得注意的是,超键与候选键的区别,超键可能含有多余属性,而候选键不能。
主键:在一个关系的若干个候选键中随意指定一个作为关键字,此关键字就是主键。
外键:关系R1中的属性或属性组非R1的码,但它是其他关系的码,那么该属性集对于关系模式R1而言是外键。
主属性:候选码的所有属性称为主属性。
如何区分超键,候选键,主键?
相同点:功能方面,用于唯一标识一个元组。
不同点:超键有多余的属性,主键和候选键没有,它们中的属性是必要的。主键是候选键的一个,只是被数据库设计者选中而已。
联想理解:候选人和候选键,主席与主键。(也就是说,候选键中的任何一个键都可以作为主键,只是设计者之选择了其中的一个。)
(例子是检验概念的唯一标准),大家看例子吧。
例1:学生(学号,姓名,性别,专业号,年龄)
(学号,姓名)是超键,而不是候选键,学号是候选键,同时也是主键。
例2:学生(学号,姓名,性别,专业号,年龄)主键:学号,外键:专业名
专业(专业号,专业名)主键:专业号,外键:无
例3:成绩(学号,姓名,课程号,成绩)学生无同名。
(学号)等价于(姓名)
(学号,课程号)候选键
(姓名,课程号)候选键
所以主属性:学号,姓名,课程号
范式
1NF:通俗的说,就是所有的属性都是不可再分的,复合属性是不允许的。(这一点容易理解)
2FN:
先了解部分函数依赖的概念。
部分函数依赖:主码的部分只要有一部分就可以确定属性的值。
在第一范式的前提下,保证函数依赖关系是全部函数依赖,而非部分函数依赖。
第三范式:
在第二范式的前提下,且没有函数传递依赖于码。
定理:如果某个关系模式,它的关键字是单个关键字,没有部分的函数依赖问题,那么它的肯定是2NF。(仔细理解这句话)
我有点笨,还是初学者,所以有什么不对的地方,还请大家多多指点。
最新文章
- 【WP开发】读写剪贴板
- ajax 跨域请求
- PowerDesigner怎样才能在修改表的字段Name的时候Code不自动跟着变
- ENode 1.0 - 框架的总体目标
- XML序列化的时候如何支持Namespace
- php 自带过滤和转义函数
- Android IOS WebRTC 音视频开发总结(十九)-- kurento
- 转载 -- C# 中的委托和事件
- tmux tutorial
- MongoDB的Windows安装
- 任务调度利器:Celery
- ajax的get 和post方式发送请求
- linux性能监控(转)
- BSGS与exBSGS学习笔记
- 普元eos、soa、esb
- SQL alwayson 辅助接点查询统计信息“丢失”导致查询失败
- Raspberry Pi GPIO Protection
- 解决在html中引入font-awesome的css文件后, 图标显示不出来
- 最好的ie版本检测方式
- 20145232 韩文浩 《Java程序设计》第8周学习总结
热门文章
- Gatling:开源压力测试框架之入门
- Apache的Mod_rewrite学习 (RewriteCond重写规则的条件) 转
- Hihocoder1081 最短路径 结构体练习
- Linq:Grouping Operators
- UVA136 Ugly Numbers
- numpy之统计函数和布尔数组方法
- bzoj 3295 (洛谷3157、3193) [Cqoi2011]动态逆序对——树套树 / CDQ分治
- debian下ror新建项目报错解决
- CodeReview是开发中的重要一个环节,整理了一些关于jupiter for java
- FPGA应用及ARM-FPGA架构举例