说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念。

首先要理解几个键值。

超键:在关系模式中,能唯一标识元组的属性集称为 super key。

候选键:关系模式中,能唯一标识元组并且不含多余属性的属性集称为候选键。值得注意的是,超键与候选键的区别,超键可能含有多余属性,而候选键不能。

主键:在一个关系的若干个候选键中随意指定一个作为关键字,此关键字就是主键。

外键:关系R1中的属性或属性组非R1的码,但它是其他关系的码,那么该属性集对于关系模式R1而言是外键。

主属性:候选码的所有属性称为主属性。

如何区分超键,候选键,主键?

相同点:功能方面,用于唯一标识一个元组。

不同点:超键有多余的属性,主键和候选键没有,它们中的属性是必要的。主键是候选键的一个,只是被数据库设计者选中而已。

联想理解:候选人和候选键,主席与主键。(也就是说,候选键中的任何一个键都可以作为主键,只是设计者之选择了其中的一个。)

(例子是检验概念的唯一标准),大家看例子吧。

例1:学生(学号,姓名,性别,专业号,年龄)

(学号,姓名)是超键,而不是候选键,学号是候选键,同时也是主键。

例2:学生(学号,姓名,性别,专业号,年龄)主键:学号,外键:专业名

专业(专业号,专业名)主键:专业号,外键:无

例3:成绩(学号,姓名,课程号,成绩)学生无同名。

(学号)等价于(姓名)

(学号,课程号)候选键

(姓名,课程号)候选键

所以主属性:学号,姓名,课程号

范式

1NF:通俗的说,就是所有的属性都是不可再分的,复合属性是不允许的。(这一点容易理解)

2FN:

先了解部分函数依赖的概念。

部分函数依赖:主码的部分只要有一部分就可以确定属性的值。

在第一范式的前提下,保证函数依赖关系是全部函数依赖,而非部分函数依赖。

第三范式:

在第二范式的前提下,且没有函数传递依赖于码。

定理:如果某个关系模式,它的关键字是单个关键字,没有部分的函数依赖问题,那么它的肯定是2NF。(仔细理解这句话)

我有点笨,还是初学者,所以有什么不对的地方,还请大家多多指点。

最新文章

  1. 【WP开发】读写剪贴板
  2. ajax 跨域请求
  3. PowerDesigner怎样才能在修改表的字段Name的时候Code不自动跟着变
  4. ENode 1.0 - 框架的总体目标
  5. XML序列化的时候如何支持Namespace
  6. php 自带过滤和转义函数
  7. Android IOS WebRTC 音视频开发总结(十九)-- kurento
  8. 转载 -- C# 中的委托和事件
  9. tmux tutorial
  10. MongoDB的Windows安装
  11. 任务调度利器:Celery
  12. ajax的get 和post方式发送请求
  13. linux性能监控(转)
  14. BSGS与exBSGS学习笔记
  15. 普元eos、soa、esb
  16. SQL alwayson 辅助接点查询统计信息“丢失”导致查询失败
  17. Raspberry Pi GPIO Protection
  18. 解决在html中引入font-awesome的css文件后, 图标显示不出来
  19. 最好的ie版本检测方式
  20. 20145232 韩文浩 《Java程序设计》第8周学习总结

热门文章

  1. Gatling:开源压力测试框架之入门
  2. Apache的Mod_rewrite学习 (RewriteCond重写规则的条件) 转
  3. Hihocoder1081 最短路径 结构体练习
  4. Linq:Grouping Operators
  5. UVA136 Ugly Numbers
  6. numpy之统计函数和布尔数组方法
  7. bzoj 3295 (洛谷3157、3193) [Cqoi2011]动态逆序对——树套树 / CDQ分治
  8. debian下ror新建项目报错解决
  9. CodeReview是开发中的重要一个环节,整理了一些关于jupiter for java
  10. FPGA应用及ARM-FPGA架构举例