第9章 数据库技术基础

参考完整性约束

在这里插入图片描述

关系型数据库的参考完整性约束可以通过外码来实现

选项定义与参考完整性约束关系备注
主码表示唯一标识每一行记录的字段或字段组合,不能为NULL被外码引用,确保引用的唯一性和存在性主码是外码引用的目标,但不直接实现约束
候选码表中能够唯一标识每一行记录的所有字段和字段组合可以作为外码的引用目标,提供多种选择主要用于选择主码
超码包含主码在内的,能够唯一标识表中记录的一个或多个字段的集合可以作为外码的引用目标,但可能包含冗余字段广义概念,包含候选码和主码
外码在一个表中引用另一个表的主码或候选码的字段或字段组合直接用于实现参考完整性,通过外码约束确保数据一致性实现表间关联和数据完整性

关系模式和关系代数

数据库规范化

  1. 1NF(第一范式) —— 消除重复字段,原子性**

    举个例子(不满足1NF)

    学号姓名电话号码
    001张三13800000000,13900000000

    上面的“电话号码”字段存了两个电话号码,用逗号隔开,不满足 1NF,因为字段不是“原子值”

    满足1NF

    学号姓名电话号码
    001张三13800000000
    001张三13900000000
  2. 2NF(第二范式) —— 消除部分依赖

    要求:在1NF的基础上,消除对主键的 “部分依赖” (只依赖主键的一部分,而不是整个主键)

    适合于 复合主键(由多个字段组成的主键)的情况
    ✅ 举个例子(不满足 2NF):

    课程编号学号学生姓名
    C001S001张三
    C002S001张三

    主键是(课程编号, 学号)—— 一个复合主键

    “学生姓名”只依赖于 “学号” ,而不是整个主键 → 部分依赖 → 不满足 2NF。

    ✔️ 满足 2NF(拆表):

    学生表

    学号姓名
    S001张三

    选课表

    课程编号学号
    C001S001
    C002S001
  3. 3NF(第三范式) ——消除传递依赖

    要求:在2NF的基础上,消除非主属性对主键的传递依赖

    ✅ 举个例子(不满足 3NF):

    学号姓名班级编号班级名称
    S001张三B01计算机一班
    • 主键:学号
    • “班级名称” 依赖于 “班级编号”, 而 “班级编号” 又依赖于 “学号” → 转递依赖 → 不满足 3NF

    ✔️ 满足 3NF(拆表):
    学号姓名班级编号
    S001张三B01

    ✔️ 满足 3NF(拆表):

    班级编号班级名称
    B01计算机一班
  4. 4NF:将实体的码分别和每个多值属性独立构成一个关系模式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

总结:范式一览

范式核心要求解决问题
1NF属性是原子值,不能有集合/重复字段消除非原子字段
2NF所有非主属性完全依赖主键消除部分依赖
3NF非主属性不传递依赖于主键消除传递依赖
BCNF主属性之间没有传递依赖和函数依赖
4NF表中的一个属性组合可以独立地生成两个属性集合的所有组合,就可能违反4NF消除多值依赖

在这里插入图片描述

BCNF主属性之间没有传递依赖函数依赖


在这里插入图片描述
在这里插入图片描述

由于EM可以推出其他所有属性,因此EM是主键,又因为,EM -> Q,而E -> N, M -> L 可以得出 N和L 都部分依赖于 主键,不符合2NF

在这里插入图片描述


在这里插入图片描述

4NF:将实体的码分别和每个多值属性独立构成一个关系模式

自然链接和笛卡尔积

自然连接(Natural Join)符号

  • 符号:
  • 例如,R⋈S 表示关系 R和 S 之间的自然连接。
  • 自然连接是基于共享属性的等值连接即自动匹配两个关系中具有相同名称的属性,并去除重复的列。

笛卡尔积(Cartesian Product)符号

  • 符号:×
  • 例如,R×S 表示关系 R 和 S 之间的笛卡尔积。
  • 笛卡尔积会生成所有可能的元组组合,即每个 R 中的元组与 S 中的每个元组两两配对,生成的结果集的列是 R和 S 所有列的并集。

假设关系 R(A, B, C, D)S(C, D, E) 具有以下数据:

关系 R(A, B, C, D):

ABCD
a1b1c1d1
a2b2c2d2

关系 S(C, D, E):

CDE
c2d2e1
c3d3e2

其中:

  • A, B, C, D, E 是属性(列名)
  • a1, a2, b1, b2, c1, c2, d1, d2, e1, e2 是属性对应的值(元组中的数据)。

笛卡尔积 中,每个 RRR 的元组会和 SSS 的每个元组 两两组合

ABC ( R)D ( R)C (S)D (S)E
a1b1c1d1c2d2e1
a1b1c1d1c3d3e2
a2b2c2d2c2d2e1
a2b2c2d2c3d3e2

自然连接 中,只保留 C 和 D 相同的元组:(根据C,D相同的属性,相同的值进行连接)

ABCDE
a2b2c2d2e1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解析: R x S (笛卡尔积) 分别用 R 和 S 组合,一共有16个元组,比较 1列小于6列,再取 345 列。
注意 3、4、 5 列对应的是 C(R)、A(S)、B(S)
第二空 属性列个数3,元组个数0(因为没有能自然连接上的)


在这里插入图片描述

R x S 在SQL中表示为 R,S


在这里插入图片描述

因为投影运算的本质是选择关系的特定属性列,生成新关系。
在关系R(A, B, C, D)中,属性A、B、C、D分别对应第1、2、3、4列。
运算π1,3®表示选取第1列和第3列,即属性A和C。
因此,π1,3®完全等价于πA,C®,两者都表示在属性A和C上的投影。

选项A. πA=1,C=3( R):错误。该写法混淆了投影和选择操作。符号“A=1”和“C=3”表示条件判断(选择行),而投影只涉及属性列的选择,不包含值过滤。迷惑性在于使用了属性名和数字,易被误读为“选择A列和C列”

在这里插入图片描述


在这里插入图片描述

元关系可以看做列数,元组个数可以看做行数


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

o
1=5 是R(A)=S(A),
2>8 是R(B)> S(F)
4=6 是 R(D)= S(D)

候选健、主属性、非主属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

候选键={AB,AC}

在这里插入图片描述

概念定义本题中的情况
候选键 (Candidate Key)能唯一标识元组且最小的属性集{AB, AC}
主键 (Primary Key)从候选键中选出的一个作为实际使用的唯一标识AB 或 AC(二选一)
备用键 (Alternate Key)没被选作主键的其他候选键如果主键=AB,则备用键=AC(反之亦然)
主属性 (Prime Attribute)出现在任意一个候选键中的属性{A, B, C}
非主属性 (Non-prime Attribute)不出现在任何候选键中的属性∅(无)

在这里插入图片描述

10 主码A3A5没有单独出现在剪头左边,所以肯定满足2NF 但存在伪传递率的传递函数依赖,讲解起来很麻烦,给出技巧:主码X–>属性Y。在主码X里找任意一个属性W,如果存在(属性W,属性Y)–>属性Z,则说明存在传递函数依赖。

主码A3A5没有单独出现在剪头左边,所以肯定满足2NF。若单独出现即是1NF。A3A5相当于联合主键


在这里插入图片描述
在这里插入图片描述

无损连接

在这里插入图片描述

第一问 CE 是能推导出所有属性的最小集属性集
第二问:
无损链接的求法:先找出候选码即CE,然后无损连接的定义是:分解后的关系模式可以还原出原关系模式。套入公式:R1交R2交R3 只有D选项得AC。所以AC可以还原原关系

关系运算

在这里插入图片描述
在这里插入图片描述

  • 选择是选择 行
  • 投影是选择 列
  • 并 相当于自然连接
  • 笛卡尔积 混合列

数据库设计

在这里插入图片描述

数据库设计主要分为用户需求分析、概念结构、逻辑结构和物理结构设计四个阶段。


需求分析阶段形成说明文档、数据字典和数据流程图作为概念结构设计的依据

在这里插入图片描述

需求分析确定系统边界,逻辑设计,关系规范化


在这里插入图片描述


在这里插入图片描述

正确步骤:
1抽象数据 - 2设计局部视图 -3合并取消冲突 - 4修改重构消除冗余
抽象最前,重构最后


在这里插入图片描述
在这里插入图片描述

规范化在逻辑设计阶段


在这里插入图片描述

命名冲突:
在考勤管理子系统中称为“员工”,而在档案管理子系统中称为“职工”,这属于名称不一致。
命名冲突的定义是:相同意义的属性或实体在不同分E-R图中有不同的命名
结构冲突:
结构冲突涉及实体属性数量或抽象层次不一致(如员工在A系统有5个属性,在B系统只有3个

SQL

在这里插入图片描述

  • Where是针对单条记录的判断条件
  • Having是针对分组之后的判断条件
  • Distinct 是去掉重复 (项目号有可能重复)

在这里插入图片描述

ROLLBACK语句只能回滚未提交的事务,而COMMIT已经提交了


在这里插入图片描述

GRANT语句种,权限后必须使用 ON 关键字来连接对象

函数依赖

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

因为 分解保持函数依赖要求原函数依赖集F中的所有依赖都能在分解后的子模式中保留或推导出来
原函数依赖集F = {A→B, A→C, C→D, AE→G}。
对于选项B,子模式R1(A,B,C,D)包含属性A,B,C,D,其函数依赖集F1可推导出A→B、A→C和C→D,因为这些依赖的左部和右部均在R1中
子模式R2(A,E,G)包含属性A,E,G,其函数依赖集F2可推导出AE→G,因为A,E,G均在R2中
因此,F = F1 ∪ F2,所有原依赖都被完整保持,分解满足条件。


在这里插入图片描述

函数依赖集等价的定义基于它们的闭包相等:
函数依赖集的闭包(如F+)表示所有能从该集合推导出的函数依赖的集合
如果F+ = G+,则F和G能推导出完全相同的函数依赖集,因此两者等价

事务的特性

在这里插入图片描述

  • 隔离性: 并发事务之间相互隔离,一个事务的未提交操作对其他事务不可见
  • 原子性: 事务中的所有操作作为一个不可分割单元,要么全部成功,要么全部失败
  • 一致性:事务执行后,数据库必须从一种状态转换到另一种一致状态(如满足完整性约束)
  • 持久性:事务提交后,其对数据库的修改是永久性的,即使系统发生故障

数据库的 内模式、模式、外模式

在这里插入图片描述

因为聚簇索引直接改变了数据的物理存储顺序,而数据库的三级结构中,内模式负责定义物理存储细节

概念定义关键特征
外模式用户或应用看到的局部数据视图通过外模式/模式映像与逻辑模式隔离
模式全局逻辑结构(如ER模型、表关系)独立于存储细节、是数据库设计的核心
内模式数据物理存储方式(如文件组织、索引)直接管理存储效率、聚簇索引归属此层

Armstrong公理系统

在这里插入图片描述

规则名称定义说明
自反律若Y ⊆ X ⊆ U,则X→Y描述平凡函数依赖(如部分属性决定自身)
增广率若X→Y,则XZ→YZ(Z为任意属性集)允许在依赖两侧添加相同属性
传递律若X→Y且Y→Z,则X→Z基础传递关系,类似逻辑推理
合并规则若X→Y且X→Z,则X→YZ由增广律和传递律推导,用于合并右部
伪传递规则若X→Y且WY→Z,则XW→Z本题核心,是传递律的泛化(引入W)
分解规则若X→Y且Z ⊆ Y,则X→Z自反律的逆应用,用于分解右部

在这里插入图片描述

定理:自反、传递、增广;推到规则:合并、伪传递、分解

数据库安全

在这里插入图片描述

存储过程时是预编译SQL集合、通过名称和参数调用
在这里插入图片描述

数据库视图

在这里插入图片描述

数据字典是数据库管理系统存储元数据的核心组件,负责保存所有数据库对象的定义信息。
视图作为一种虚拟表,其本质是一个查询定义的映射,数据字典中会记录该视图的完整定义(包括创建视图的SQL语句)
因此,当创建user1视图时,数据字典保存的是视图的定义内容,而非临时数据或基本表实体。

E-R图多对多关系转换

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐