关系模型
关系模型由关系数据结构,关系操作集合和关系完整性约束三部分组成。
关系数据结构
关系模型的数据结构非常简单,只包含单一的数据结构——关系。
**域:**一组具有相同数据类型的值的集合。
笛卡儿积:在域上的一种集合运算。例如A{1,2},B{a,b,c}。笛卡儿积:AB={(1,a)(1,b)(1,c)(2,a)(2,b)(2,c)}
关系: D1D2*D3…*Dn的子集叫做在域D1,D2,D3…Dn上的关系。n为关系的度。
在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。表中每一列对应一个数相,每一行对应一个元组。
**候选码:**若某一属性组的值能够唯一标识一个元组,则称该属性组为候选码。
**主码:**从候选码中选择一个作为主码。
**主属性,非主属性:**候选码的诸多属性称为主属性,不在候选码中的属性为非主属性。
关系操作集合
关系模型中常用的关系操作有查询操作和插入,删除,修改操作两大部分。
查询的表达能力是其中最主要的部分,查询操作又可以分为选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)、笛卡尔积等。
关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。相应地,非关系数据模型的数据操作方式则为一次一记录的方式。
关系完整性约束
关系模型的完整性规则是对关系的某种约束性条件。完整性约束可确保数据库中的数据正确性和相容性。
主要包括:实体完整性、参照完整性、用户自定义完整性。其中前两个是关系模型中必须要满足的完整性约束条件。
实体定义的完整性
主码是否唯一
主码不能为空
参照完整性
指关系间需要遵循的数据约束,以保证关系间关联列的数据一致性。参照完整性是指外码取值必须与现有主码值相对应。
用户定义的完整性
自定义列非空,例如:定义性别属性非空。性别属性不能作为主属性,理论上可以为空,但是人类只有男性和女性,所以可以手动给他设置为非空。
主码约束和唯一约束有什么区别呢
主码约束:由一列或多列的组合,其值能唯一的标识表中的每一行。
唯一约束:不允许数据库表在指定列上具有相同的值,但允许有空值。
区别:一个表可以定义多个唯一约束,但只能定义一个主码约束;空值的列上可以定义唯一约束,不能定义主键约束。