《数据库原理》课程笔记 (Ch02-数据模型)

数据模型 / Chapter 2

* 层次数据模型(了解)

用树型(层次)结构表示实体类型及实体间联系。只能表示1:N联系。编写应用程序比较复杂。

除根以外,所有的记录型都应该有唯一的双亲。PCR:双亲子女关系

现实世界中需多数据不是层次型的。而层次数据模型在表示多对多、多个祖先的关系时会产生数据冗余,浪费存储空间,且会导致数据的不一致。

* 网状数据模型(了解)

用有向图(网络结构)表示实体及实体之间联系。编写应用程序比较复杂。

关系数据模型

以集合论中的关系概念为基础。用表格结构表达实体集,用外键表示实体间联系。

基本概念

  • 属性和域

    属性描述事物的特征,域是一个属性的所有合法取值的集合。

  • 关系和元组

    例如:学生的关系模式 STUDENT(学号,姓名),其中某一个学生 <9098138,李彤> 就是关系R的一个元组

    关系对应表,属性对应列,元组对应行。

  • 关系的某一个属性或属性组的值唯一地决定其它所有属性的值,而其任何真子集无此性质。通常从键中选一个作为主键。

外键是引用其它关系的键或本关系的键

完整性约束

  • 域完整性约束

    属性值应是域中的值,或在语义合法的前提下可为空。

  • 实体完整性约束

    每一个关系都应有一个值非空的主键,用来唯一识别一个元组。

  • 引用完整性约束

    外键要么是空缺,要么是引用实际存在的主键值。

  • 一般性完整性约束

关系代数操作

  • 选择操作\(\sigma _{cond} (R)\)

    横向挑选,选出符合条件cond的记录。相当于SELECT * FROM R WHERE cond

    性质:

    后者效率更高。

  • 投影操作\(\Pi _{attrs}(R)\)

    竖向挑选,选出R中的attrs这些属性。

    与选择操作组合使用即可实现我们常用的SELECT attrs FROM R WHERE cond

  • 集合操作

    交并差。参与集合操作的项目必须有相同的目,且对应属性的域相同才有意义。

  • 连接操作$R ∞_{cond} S=\sigma _{cond}(R \times S) $

    即作笛卡尔积后进行选择操作。笛卡尔积是将两个表强行拼在一起,属性数为两个表属性数的和,记录数为两个表记录数的积,如[a,b,c]×[1,2,3]=[[a,1], [a,2], [a,3], ...]

    连接条件

    • 等连接

      条件均为=构成。①做笛卡尔积;②选择出同时满足R.Ai=S.Ai的元组。

    • 自然连接

      在等连接后去除重复属性。

  • 除法

    R÷S就是判断关系R中,属性或属性集X的各种取值的属性或属性集Y构成的集合,是否包含关系S中属性Y的所有取值

  • 外连接

    外连接与连接操作的区别在于保留非匹配元组

    • 左外连接:保留左关系的非匹配元组
    • 右外连接:保留右关系的非匹配元组
    • 全外连接:保留左、右关系的非匹配元组

关系演算

关系代数表示关系的操作,用户必须指出运算方法步骤;而关系演算用谓词公式表示查询条件,指出“做什么”,而“怎么做”则由系统去完成。目前,面向用户的关系数据库语言基本上都以关系演算为基础。

  • 元组关系演算

    {t[〈属性表〉]|P(t)}

    t是元组变量,如查询整个t,则可省去属性表。P(t)是t应满足的谓词。

  • 域关系演算

    以域为变量。

    关系GRADE(学号,课程号,成绩),查询须补考的学生的学号和补考的课程号:

E-R数据模型

传统数据模型以记录为基础,不能很好地面向用户和应用,记录和实体不一定相对应。

E-R数据模型是一种有代表性的统一的非传统数据模型。E-R不是面向实现,而是面向现实世界的。

  • 实体:可以相互区别、被人识别的事物
  • 属性:实体的特征
  • 实体键:能够唯一识别实体的属性或属性组
  • 联系:表示实体和实体间的关系,一对一、一对多、多对多
  • 实体参与度:实体参与联系的次数范围,例如学生的选课次数

范式

构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。

  • 第一范式(1NF)

    每个属性值都是不可再分的最小数据单位

    例如职工可能有多个电话,则电话应分属性或分记录存储,不能合起来存储

  • 第二范式(2NF)

    非主属性全部依赖于全部主键

  • 第三范式(3NF)

    非主键列必须直接依赖于主键,不能存在传递依赖

    例如:主键是课程编号,列1是教师名,列2是教师地址。教师地址传递依赖于教师名,不满足第三范式。

猜你喜欢

转载自www.cnblogs.com/zxuuu/p/12943939.html