更新操作
更新操作:向关系中插入数据、修改关系中已有的数据、从关系中删除数据。
数据检索操作通常也称为读操作,用于从关系中读取数据。更新操作也叫写操作,用于更新关系中的数据内容。
三种更新操作
插入操作:用于向关系中输入新数据
删除操作:用于从关系中移除数据
修改操作:用于改变关系中已有的数据
更新异常
在包含冗余(不必要的重复)数据的关系中,三种更新操作均可能引起更新异常。因此,共有三种类型的更新异常:插入异常、删除异常和修改异常。
插入异常:是指当用户想要插入某一真实世界中实体的数据时,还必须输入另一个真实世界中的实体的数据。
删除异常:是指当用户想要删除某一真实世界中实体的数据时,还必须删除另一个真实世界中实体的数据。
修改异常:是指当用户要修改某一值时,同样的修改操作需要重复多次。
函数依赖
函数依赖:是指关系的每条记录中一列(或几列)的值唯一决定该条记录的另一列的值。
平凡函数依赖
是指一个或多个属性确定它自己或它的子集。
注:这种依赖在规范化中不会被用到。
增广函数依赖
是指某个依赖式为真,则依赖式左侧,或者两侧同时增加某语句形成的一种依赖关系。
注:这种依赖在规范化中不会被用到。
等价函数依赖
若A->B,且B->A,那么这两个函数式被称之为等价函数依赖
注:这种依赖关系只需要保留一组即可,它不属于规范化的范畴。
部分函数依赖
是指关系的一列函数依赖于组合主码的一部分。这种依赖只有组合主码才存在。
注:这种依赖属于规范化范畴。
例如:
有一个表的主码是A1,B1。
那么函数依赖:
A1->A2,A3
B1->B8,B9
就是部分函数依赖。
完整函数依赖
是指复合主码函数确定关系中的其他列,并且复合主码的任意部分不能单独确定其他列。
注:这种依赖属于规范化范畴。
传递函数依赖
是指非码列函数确定关系中的其他非码列。
注:这种依赖属于规范化范畴。
只有后三种和规范化设计有关
规范化
第一范式(1NF)
1NF:一个表满足1NF,如果表的每一行都是唯一的并且任何行都没有包含多个值的列。
每个关系表都是满足1NF的,因此规范化到1NF不是关系数据库规范化过程的一部分。规范化到1NF只发生在将一个非关系表转换成一个关系表的情况。
第二范式(2NF)
2NF:如果一个表满足1NF且不包含部分函数依赖,则这个表满足2NF。
对于一个关系表,规范化过程是从检查它是否满足2NF开始的。
一个表的主码是单列的,不存在部分函数依赖,因此满足2NF。
第三范式(3NF)
3NF:如果一个表满足2NF且不包含传递依赖函数,则这个表满足3NF。