关系数据库系统是支持关系模型的数据库系统

关系数据模型

关系数据结构

单一的数据结构—-关系

现实世界的实体以及实体间的各种联系均用关系表示

数据的逻辑结构—-二维表

从用户角度,关系模型中数据的逻辑结构就是一张二维表

相关概念

关系模型建立在集合代数的基础上

  1. 域(列的类型varchar)

    1. 域是一组具有相同数据类型的值的集合

    2. 如:整数,实数,{‘’男,’女’}

  2. 笛卡尔积

    1. 给定一组域D1,D2……Dn。集合元素交叉相乘

    2. 可以使用二维表来表示,表中的每一行对应一个元组,表中的每列对应一个域

  3. 关系

    1. 笛卡尔集的子集(D1,D2,D3…Dn)叫做在域D1,D2,D3…Dn上的关系,表示为R(D1,D2,D3…Dn),R:关系名;n:关系的目或度

    2. 表的每行对应一个元组,表的每列对应一个域,表的列表示属性

    3. 码:key,是由一个属性或多个属性构成

    4. 候选码:在关系中能唯一表示元组的属性或属性集,保证主码

    5. 主属性:候选码的各个属性

    6. 主码:用户选作元组标识的候选键

    7. 全码:关系的所有属性是这个关系的候选码

  4. 关系模式

  5. 关系数据库

  6. 三类关系:

    1. 基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示

    2. 查询表:查询结果对应的表

    3. 视图:有基本表或其他视图导出来的表,是虚表,不对应实际存储的表

关系数据模型 - 图1

基本关系的性质

  • 列是同质的

  • 每一列的分量都是同一类型的数据,来自同一个域

  • 不同的列可出自同一个域

  • 其中的每一列称为一个属性,不同的属性要给予不同的属性名

  • 列的顺序无所谓

  • 任意两个元组不能完全相同(主键不能相同)

  • 行的顺序无所谓

  • 分量必须取原子值

关系实例的所有表现形式问题

如果考虑到元组的顺序和属性的顺序,则这个关系实例有多少种不同的表现形式?

n个属性和m个元组的话,表达式就是m!*n!(无所谓行,无所谓列)

关系模式(关系是值,关系模式是型)

  • 关系模式是对关系的描述,静态的稳定的

  • 关系模式是型,关系是值

  • 关系是指关系模式在某一时刻的状态或内容,关系是动态的、随时间不断变化的

类似关系只表示学生,而关系模型是学生(id,name,sex…..等)

关系模式通常机尾R(A1,A2…..An)

在一个给定的应用领域中,所有实体即实体之间联系的关系集合构成一个关系数据库。

关系数据库模式是关系数据库的型,是对关系数据库的描述。

关系操作

常用的关系操作

查询、插入、删除、更新

关系操作的特点

集合的操作方式

关系数据语言的种类

关系代数语言

关系演算语言

具有上两者双重特点的语言。如sql(关系数据库的标准语言)

关系数据语言的特点

是一种高度非过程化的语言

能够嵌入高级语言中使用

完整性约束

关系模型的完整性规则是指对关系的某种约束条件

关系模型中三类完整性约束:

  1. 实体完整性

    1. 主码唯一且不能为空

    2. 主属性不能取空值(mysql可以)

  2. 参照完整性

    1. 关系间引用

    2. 外码

    3. 参照完整性规则

  3. 用户定义的完整性

实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作为关系的两个不变性,应该由关系系统自动支持

实体完整性

  1. 实体完整性规则是针对基本关系而言的

  2. 现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识

  3. 关系模型中以候选码作为唯一性标识

  4. 所谓空值就是“不知道”或者”无意义”的值,如果主属性取空值,就说明存在某个不可标识的实体,即不可区分的实体,这与第二点相矛盾,因此这个规则又称为实体完整性

参照完整性

参照完整性规则就是定义外码与主码之间的引用规则

参照完整性规则中外码的取值必须为:

  1. 或者取空值,表示尚未分配

  2. 或者等于被参照表中某一个元组的主码值