关系数据结构中的一些概念
- 域: 每个属性的取值范围
- 关系: 所有属性的笛卡尔乘积的子集称作在对应的域上的关系
- 候选码:某一组属性的值可以唯一地确定一个元组,但其真子集却不能(单个属性的真子集是空集)
- 主属性: 包含在任何一个候选码中的属性成为主属性
- 主码: 若一个关系有多个候选码,则选择一个作为主码
- 函数依赖: 记A属性集 = {a1,a2…an}, B属性集 = {b1, b2…bn}
- 由 A 属性可以确定 B 属性,则 B 函数依赖于 A
- 完全函数依赖: A 可以确定 B,但是A的任何一个真子集(不包含本身)确定不了 B, 并且称 A 是 B 的候选码
- 部分函数依赖: A 可以确定 B, 并且存在一个A的真子集也可以确定 B
关系数据库设计范式
- 1NF: 在一个关系中保证每一行与每一列的交叉处只存在一条记录,即保证每个数据项的原子性
例如--sno------class------score-- | | cname | cnumber | | | 1 | art | 007 |90 |
- 2NF: 在1NF的基础上消除非主属性对其候选码的部分函数依赖,即要想办法让所有非主属性码都是完全函数依赖
- 3NF: 在2NF的基础上消除非主属性对码的传递依赖,即不准在一个关系中存在传递依赖这种情况
- BCNF:
- 所有非主属性对每一个候选码都是完全函数依赖
- 所有的主属性对每一个不包含它的候选码也是完全函数依赖(基于3NF的扩充)
- 没有任何属性完全函数依赖于非码的任何一组属性