数据库原理笔记2

依照学校教学安排,第二章为数据库关系模型

本帖仅供个人学习使用

使用软件 pgAdmin4, Power Designer


2.1 关系及其相关概念

2.1.1 关系模型的提出

关系模型以关系代数理论为数学基础,将数据操作抽象为关系处理,其关系表结构简单,便于理解和访问。关系模型在当今几乎所有商业数据库中得到广泛应用,该理论由E.F.Codd于1970年发表。

2.1.2 实体、关系的概念

  • 实体:包含有数据特征的事物对象在概念模型世界中的抽象名称,可以理解成对象
  • 关系:在关系模型中,使用关系来存储实体中的数据,关系指具有关系特征、用于存放实体数据的二维表,关系也常被称为关系表
  • 关系特征:在关系表中,每一行称为元组,每一列称为属性
    • 表中每行存储实体的一个示例数据
    • 表中每列包含实体的一项属性数据
    • 表中单元格只能存储单个值
    • 不允许有重复的行、列
    • 行列顺序可任意

2.1.3 关系的数学定义

  • 定义:关系是指在集合域D1、…、Dn上运算笛卡尔积 *(设A、B是两个集合,称集合AxB={<a,b>|(a∈A)^(b∈B)}为集合A与B的笛卡尔积)*的有意义子集,其数学描述为R⊆D1xD2x、…、xDn,其中每一个向量(d1,d2,…dn)称为一个n元组,简称元组。想两种的每个di称为分量。若集合域Di(i=1,2,…,n)为有限集,每个域的基数为mi(i=1,2,…,n),则笛卡尔积D1xD2x、…、xDn的基数M为mi从1到n的累乘
  • 注意:关系R只是该笛卡尔积的有意义子集,即关系R的元组数≤笛卡尔积的元组数

2.1.4 关系的键定义

  • 在关系中,可以用来唯一标识元组的属性列称为,其它属性列都为非键列
  • 复合键:关系中用来唯一标识元组的多列
  • 候选键:关系中可能有多个列均适合作为键,将其中每个都称为候选键
  • 主键:关系表中最有代表性的一个候选键,每个关系表中只能定义一个主键
    • 主键作用
      • 唯一标识关系表的每行(元组)
      • 与关联表的外键建立联系,实现关系表之间连接
      • 数据库文件使用主键值来组织关系表的数据存储
      • 数据库使用主键索引快速检索数据
  • 代理键:采用DBMS自动生成的数字序列作为关系表的主键
    • 代理键的作用:由DBMS自动生成的数字序列作为主键,可替代复合主键,以便获得更高性能的数据访问操作处理

2.1.5 关系模式语句表示

1
RELATION_NAME(Column01,Column02,...,LastColumn)//关系名称(主键属性,属性名2,...,最后一个属性名)

2.2 关系模型原理

2.2.1 关系模型及其组成

  • 关系模型:一种基于二维表结构存储数据实体及实体间联系的数据模型
    • 数据结构:关系模型由若干二维表组成,并且表之间存在一定的联系,它们一起组织、存储数据
    • 数据操作:关系模型中可以进行集合运算操作(选择、投影、连接、交、并、差……)、专门关系运算操作(数据行插入、修改、删除)
    • 数据约束:在关系模型中,数据关系约束是指关系表中实体数据完整性、关联表之间数据一致性(属性列取值类型、属性列取值范围、属性列取值是否唯一、属性列是否允许空值)等要求,一般由业务需求来确定

2.2.2 关系模型数据操作

关系模型数据操作采用基于关系代数的数据操作,包括传统的集合运算操作和专门的关系运算操作

  • 关系并运算操作:关系并运算的结果集是由属于R或属于S的所有元组组成
  • 关系差运算操作:关系差运算的结果集是由属于R但不属于S的所有元组组成
  • 关系交运算操作:关系交运算的结果集是由既属于R又属于S的所有元组组成
  • 关系笛卡尔积操作:关系笛卡尔积的结果集是由所有属于R的元组和所有属于S的元组进行组合而成

2.2.3 关系模型完整性

关系模型完整性是指在关系数据模型中对关系实施的完整性约束

  • 完整性约束作用
    • 消除关系表的元组重复存储
    • 保持关联表的数据一致性
    • 实现业务数据规则
  • 关系模型完整性约束组成
    • 实体完整性约束
    • 参照完整性约束
    • 用户自定义完整性约束

实体完整性

实体完整性是指在关系表中实施的主键取值约束,以保证关系表中的每个元组可以被唯一标识

  • 实体完整性约束规则
    • 每个关系表中的主键属性列都不允许为空值,否则就不可能标识实体
    • 现实世界中的实体是靠主键来标识,主键取值应该唯一,并区分关系表中的每个元组

参照完整性

参照完整性是指关系表之间需要遵守的数据约束,以保证关系之间关联列的数据一致性

  • 外键:在关联的两个主系中,它们具有一个或多个相同属性。若关联列在第一个关系中作为主键,则在第二个关系中作为外键。
  • 参照完整性约束规则:若关系R中的外键F与关系S中的主键K相关联,则R中外键F值必须与S中主键K值一致

用户自定义完整性

用户自定义完整性是指用户根据具体业务对数据处理规则要求所定义的数据约束

  • 用户可以定义如下类型的完整性约束:
    • 定义列的数据类型和数据范围
    • 定义类的缺省值 (无干预情况下的默认值)
    • 定义列是否允许取空值
    • 定义列取值唯一性
    • 定义列之间的数据依赖性

2.2.4 ON条件、where条件

  • ON条件:在生成临时表时使用的条件,它不管on中的条件是否都为真,都会返回左表中的记录
  • where条件:在临时表生成好后,再对临时表进行过滤的条件,此时已经没有leftjoin的含义,条件不为真的就全部过滤掉、

2.2.5 自然连接、内连接、外连接(左外连接、右外连接、全外连接)、交叉连接

  • 自然连接:自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列
  • 内连接:内连接可以自定义两张表的不同列字段,内连接有两种形式:显式(有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积)和隐式(没有INNER JOIN,形成的中间表为两个表的笛卡尔积)
  • 外连接
    • 左外连接:返回指定左表的全部行+右表对应的行,如果左表中数据在右表中没有与其相匹配的行,则在查询结果集合中显示为空值 (null)
    • 右外连接:与左外连接类似,是左外连接的反向链接
    • 全外连接:将左右两表进行自然连接,左表或右表只要有一个没有就显示NULL
      关键字使用参考

2.3 PostgreSQL数据库关系操作实践(略)

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022 Daniel Qi
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信