复习三——关系数据模型

数据模型

描述现实世界实体,实体间联系以及数据语义和一致性约束的模型。这个定义看起来没什么实际用途,但是理解了对使用power designer设计数据库有好处。嘛。。。反正我没理解透。

按照模型应用的不同目的,可以分为

  • 概念数据模型(概念模型):按用户的观点对数据进行建模,强调语义表达功能。主要用于数据库的概念设计。
  • 结构数据模型(数据模型):按计算机系统的观点对数据进行建模,直接面向数据库的逻辑结构。

现实世界——>信息世界 概念模型(如E-R模型,即实体-联系模型)——>机器世界 数据模型

数据模型的三要素

  • 数据结构:实体之间的联系
  • 数据操作:检索和更新的实现
  • 数据的完整性约束:数据之间的联系具有的制约和依赖关系

关系模型

形式化定义

R(U,D,dom,F)

 R为关系模式名,U是属性集,D是U中属性的值所来自的值域,Dom是属性向域的映射集合,F是属性间的依赖关系。可以简写为

R(U)

重要概念

超码(Super Key)

唯一标识一个元组的属性集

候选码(Candidate Key)

不含多余属性的超码。包含在任何一个候选码的属性成为主属性(Primary Attribute),否则称为非主属性

主码(Primary Key)

用户选作元组标识的一个候选码称为主码,其余的候选码称为替换码(Alternate Key)。

外码(Foreign Key)

关系模式R的外码是它的一个属性集FK,满足:

  • 存在带有候选码CK的关系模式S
  • R的任一非空FK值在S的CK中有一个相同的值

S称为被参照关系,R称为参照关系。

总之就是说,我的属性里用到你的已经有的属性,并且那个属性被你用来当作候选码。比如银行系统里面,如果bank表有属性name,staff表里面有属性bank_name,并且bank_name的实例来自name已经有的实例,就说bank_name是外键,引用bank的name属性。

被引用了的表不能够直接删除(参照完整性)。比如bank里面有中国银行,staff里面有小明,来自中国银行。如果直接把bank删除,那么小明来自的中国银行就无从查找来自何处。有些数据库系统提供删除的级联操作,就是说,删除bank表的同时,把其他表中所有引用了它的实例都删除掉,mysql提供这种操作,不过需要解除外键检查。

SET FOREING_KEY_CHECKS=0

oracle就不支持级联删除。官方给出的解释是:这是没有意义的操作。想要删除的话,需要先删掉相应的外键约束,删除之后再加上外键约束。

三类完整性规则

  • 实体完整性(Entity Integrity):主码的所有属性不可为空
  • 参照完整性(Referential Integrity):参照关系R的任意一个外码值必须来自于参照关系S中所参照的候选码的某个值,或者为空。
  • 用户自定义完整性(User-Defined Integrity):针对某一数据的约束条件,比如成绩取值0到100,或者性别不能为空啥的。

关系代数

返回两个关系中所有元组

返回两个关系共同的元组

返回属于第一个关系但不属于第二个关系的元组

笛卡尔积

返回两个关系的元组的任意组合所得到的元组集合

选择

返回指定关系中满足给定条件的元组

投影

返回指定关系中去掉若干属性后所得的元组

联接

从两个关系的笛卡尔积中选区属性间满足给定条件的元组

  • 自然联接:相当于在R×S中选取R和S的所有公共属性值都相等的元组,并在结果中去掉重复属性
  • θ联接:相当于在R×S中选取R的属性A值与S的属性B值满足比较关系θ的元组。
  • 等值联接:θ关系为相等的时候,即为等值联接。比较的属性是两个公共属性时,为自然联接。

除的结果与第二个关系的笛卡尔积包含在第一个关系中

(气死我了,这个编辑器竟然不支持latex数学公式的编辑,好多符号打不出来)

附加的关系代数操作

扩展投影(广义投影)

投影列表可以是R的一个或多个属性,或者是重命名得出的属性,或者通过原关系模式多个属性运算得出的新属性。

聚集函数(aggregate)

  • SUM(求和)
  • COUNT(计数)
  • AVG(求均值)
  • MAX(求最大值)
  • MIN(求最小值)

分组(Group)

排序(sort)

赋值

数据更新

(感觉如果不是需要使用这些理论上的关系代数运算,可以直接看mysql或者oracle等的相关对应操作的解释或教程。菜鸟教程

猜你喜欢

转载自www.cnblogs.com/terieqin/p/9210983.html