引:在学习或者设计关系型数据库之前,我们都需要先学习关系型数据库的基础概念。
数据库关系模型
数据库结构
- 关系数据库由表的集合构成,每个表有唯一的名字。
- 在关系模型的术语中,关系用来指代表,元组用来指代行 ,属性用来指代表中的列,关系实例用来指代一个关系的特定实例。
- 对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域。
- 如果域中的元素被看做是不可再分的单元,则域是原子的。
数据库模式
- 数据库模式是数据库的逻辑设计,数据库实例是给定时刻数据库数据的一个快照。
- 关系对应于程序设计语言中变量的定义,关系模式对应于程序设计语言中类型的定义,关系实例对应于程序设计语言中变量的值。
- 关系模式由属性序列及各属性对应的域组成。
码
- 超码是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中唯一地表示一个元组。
- 如果K是一个超码,那么K的任意超集也是超码,他们的任意真子集都不能称为超码,这样最小的超码称为候选码(码),候选码中任何一个属性称为主属性,其它为非主属性。
- 主码代表被数据库设计者用来在一个关系汇总区分不同元组的候选码,主码应该选择那些值从不或极少变化的属性。
- 一个关系模式(r1)可能在它的属性中包含另一个关系模式(r2)的主码,那么这个属性在r1上称做参照r2的外码。关系r1被称为外码依赖的参照关系,r2被称为外码的被参照关系。
函数依赖
若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y。
完全函数依赖
在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记作 X F→ Y。(那个F应该写在箭头的正上方)
部分函数依赖
假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记作 X P→ Y。(那个P应该写在箭头的正上方)
传递函数依赖
在 Y 不包含于 X,且 X 不函数依赖于 Y这个前提下,假如 Z 函数依赖于 Y,且 Y 函数依赖于 X ,那么我们就称 Z 传递函数依赖于 X ,记作 X T→ Z。(那个T应该写在箭头的正上方)
多值依赖
若在一张表中,在属性集X, Y, 和Z是U的子集,并且Z=U-X-Y,当且仅当表中的记录上当X,Z确定时,属性Y有一组值,这组值仅仅决定于属性X值而与属性Z值无关,多值依赖X->->Y成立。如果把上面的一组改为一个,那么多值依赖就变成了函数依赖。当然一个值组成的组也是组,所以说,函数依赖是多值依赖的特殊情况。
平凡的多值依赖
若X->->Y,而Z等于空集,则称X->->Y为平凡的多值依赖,属性集合中分为两个真子集,每一个X对应一组Y的取值
非平凡的多值依赖
若X->->Y,而Z不等于空集,则称X->->Y为非平凡的多值依赖
参考
- 《数据库系统概念》