数据库--数据模型

256 阅读7分钟

一、关系模型

1.1.基本概念

  • 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
  • 用表格结构表达实体集,用外键(外码)表示实体间联系

1.2.优缺点

  • 优点:

    • 建立在严格的数学概念基础上
    • 概念单一,结构简单、清晰,用户易懂易用
    • 存取路径对用户透明,从而数据独立性、安全性好,简化数据库开发工作
  • 缺点:由于存取路径透明,查询效率往往不如非关系数据模型

二、基本概念

2.1.域

  • 是一组具有相同数据类型的值的集合
    • 整数
    • 实数
    • {'男', '女'}

2.2.笛卡尔积

  • 给定一组域D1, D2, ..., Dn,这些域中可以有相同的。D1, D2, ..., Dn的笛卡尔积为:D1 x D2 x ... x Dn = {(d1, d2, ..., dn) | di ∈ Di, i = 1, 2, ..., n}

  • 所有域的所有取值的一个组合

  • 不能重复

2.3.关系

  • D1 xD2 x ... x Dn的子集叫做在域D1, D2, ..., Dn上的关系,表示为R(D1, D2, ..., Dn)

  • R: 关系名

  • n: 关系的目或度(Degree)

2.4.关系的表示

  • 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域

2.5.属性

  • 关系中不同列可以对应相同的域
  • 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
  • n目关系必有n个属性

2.6.候选码(Candidate key)

  • 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码

2.7.主码(Primary key)

  • 若一个关系有多个候选码,则选定其中一个为主码

2.8.基本关系具有以下6条性质:

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

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

  • 列的顺序无所谓,即列的次序可以任意交换

  • 任意两个元组不能完全相同。

    • 但多数实际关系数据库产品中,例如Oracle等,如果用户没有定义有关的约束条件,它们都允许关系表中存在两个完全相同的元组
  • 行的顺序无所谓,即行的次序可以任意交换

  • 分量必须取原子值,即每一个分量都必须是不可分的数据项

2.9.关系的描述

  • 称为关系模式,关系模式是一个五元组,形式化地表示为:R(U, D, DOM,F)

    • R:关系名
    • U:组成该关系地属性名集合
    • D:属性组U中属性所来自的域
    • DOM:属性向域的映像集合
    • F:属性间的数据依赖关系集合
  • 通常简记为R(A1, A2, ... , An),R为关系名,A1,A2...为属性名

三、规范化理论

3.1.基本概念

  • 设有一个关系模式R(SNAME, CNAME, TNAME, TADDRESS),其属性分别表示学生姓名,课程名,任课教师姓名和任课教师地址。这个模式存在下列存储异常的问题

    • 数据冗余
    • 修改异常
    • 插入异常
    • 删除异常
  • 把R分解成下列三个关系模式:R1(SNAME, CNAME)和R2(CNAME, TNAME),R3(TNAME, TADDRESS),则能消除上述的存储异常现象

  • 模式设计强调“每个联系单独表达”是一条重要的设计原则

四、范式

4.1.第一范式(1NF)

  • 如果关系模式R的每个关系r的属性值都是不可分的原子值,那么R是第一范式的模式,r是规范化的关系
  • 说明:在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库

4.2.第二范式(2NF)

  • 若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是2NF模式
  • 简单的说,是表中的属性必须完全依赖于全部主键,而不是部分主键。所以只有一个主键的表如果符合第一范式,那一定是第二范式

4.3.第三范式(3NF)

  • 如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选码,则称R是3NF
  • 例如,存在一个部门信息表,其中每个部门有部门编号(dept_id),部门名称,部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称,部门简介等与部门相关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则会有大量的数据冗余

4.4.BC范式(BCNF)

  • 若关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF模式
  • 相对于第三范式,BC范式的要求更加严格。第三范式只是要求R为第二范式且非主属性不传递依赖于R的候选键,而BC范式则是对R的每个属性都做要求

五、常用的关系操作

5.1.操作分类

  • 查询:选择、投影、连接、除、并、交、差
  • 数据更新:插入、删除、修改

5.2.查询的表达能力

  • 传统的集合运算时二目运算,包括并、交、差、广义笛卡尔积
  • 专门的关系运算包括:选择、投影、连接、除四种运算

5.3.并

  • 具有相同的目n(两个关系都有n个属性),R和S的并是由属于R或属于S的元组组成的集合,记为R∪S,形式定义如下:
    • R∪S = {t|t∈R∨t∈S}

5.4.差

  • 关系R和S具有相同的目n,R和S的差是由属于R且不属于S的元组组成的集合,记为R-S。形式定义如下:
    • R-S = {t|t∈R∧t!∈S}

5.5.交

  • 关系R和S具有相同的目n,R和S的交是由既属于R又属于S的元组组成的集合,记为R∩S。形式定义如下:
    • R∩S = {t|t∈R∧t∈S}

5.6.笛卡尔积

  • R:n目关系,k1个元组

  • S:m目关系,k2个元组

  • R x S

    • 列:(n+m)列元组的集合

      • 元组的前n列是关系R的一个元组
      • 后m列是关系S的一个元组
    • 行:k1 x k2行元组

      • R x S = {tr ts | tr ∈ R ∧ ts ∈ S}

六、关系运算

6.1.投影

  • 投影操作从关系R中选择出若干属性列组成新的关系,该操作对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。记作:

    • πA(R) = {t[A] | t ∈ R}
    • 其中A为R的属性列
  • 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

6.2.选择

  • 选择操作在关系R中选择满足给定条件的所有元组,记作:
    • σF(R) = {t|t ∈ R∧F(t)='真'}
    • 其中F表示选择条件,是一个逻辑表达式(逻辑运算符+算术表达式)。选择运算是从行的角度进行的运算

6.3.θ连接

  • θ连接从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
    • 一般连接
    • 等值连接
    • 自然连接:特殊的等值连接
      • 两个关系中进行比较的分量必须是相同的属性组
      • 在结果中把重复的属性列去掉

6.4.外连接(OUTER JOIN)

  • 关系R、S进行自然连接时,如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(NULL),这种连接叫做外连接

6.5.左外连接

  • 关系R、S进行自然连接时,如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)

6.6.右外连接

  • 关系R、S进行自然连接时,如果只把左边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)

6.7.除法

  • 给定关系R(X, Y)和S(y, Z),其中X, Y, Z为属性组
  • R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集
  • R与S的除运算得到一个新的关系P(X)