数据库原理笔记,html与md笔记已上传
1.绪论
发展历程
- 记住数据怎么保存,谁保存数据,共享性如何,独立性如何
人工管理阶段
- 数据不保存
- 应用程序管理数据
- 数据不共享
- 数据不具有独立性
文件系统阶段
- 数据可以长期保存
- 文件系统管理数据
- 数据共享性差 ,冗余度大
- 数据独立性差
数据库系统阶段
- 数据结构化
- DBMS统一管理系统
- 数据共享性高,冗余度低,易扩充
- 数据独立性高
数据模型
- 数据模型的 三要素 :数据结构 (静态特性 ),数据操作 (动态特性 ),数据的完整性约束
- 数据模型是对现实世界 数据特征的抽象,
概念模型(E-R图)
- 按照 用户的观点 来对数据和信息建模,不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型,主要用于 数据库设计
逻辑模型
- 按照 计算机系统 的观点对数据建模,主要用于 数据库管理系统的实现。
- 层次模型
- 网状模型
- 关系模型
- 面向对象模型
- 对象关系模型
数据库系统概念
1.数据
- 描述事物的 符号记录,如数字,图像,文本等,经过数字化处理后存入计算机。
2.数据库
- 长期存储在计算机内,有组织,可共享的 大量数据的集合。数据库中的数据按照一定的 数据模型 组织,描述,存储,具有较小的 冗余度 ,较高的 数据独立性,易扩展性。
3.数据库管理系统
- 位于 用户 和 操作系统 之间的一层 数据管理软件 。用于科学地组织和存储数据,高效地获取和维护数据。DBMS的主要功能包括: 1. 数据定义 2. 数据操纵 3. 数据库的运行管理功能 4. 数据库建立与维护功能。
4.数据库系统
- DBS是指在计算机系统中 引入数据库后 的系统构成。数据库系统由 数据库,数据库管理系统,应用系统,数据库管理员构成。
三级模式
外模式
- 外模式也称为用户模式。外模式是数据库 用户 能够看见和使用的 局部数据的逻辑结构 和 特征 的描述,是 数据库用户 的 数据视图,是与某一应用有关的数据的逻辑表示。
模式
- 模式也称为逻辑模式,是数据库中 全体数据 的逻辑结构和特性的描述,是 全体用户 的公共数据视图。(外模式是模式的 子集)
内模式
- 内模式也称为存储模式,是数据在数据库系统内部的表示,对数据的 物理结构 和 存储方式 的描述
优点
- 数据有较高的逻辑独立性和物理独立性
- 简化了用户窗口
- 有利于数据共享
- 数据的安全保密
- 数据存储由DBMS管理(用户无需考虑存储细节)
数据与程序的独立性
- 主要包括两个方面------ 逻辑独立性 ,物理独立性
逻辑独立性
- 当 模式 改变时(增加新的属性列),由数据库管理员对 各个 外模式/模式映像 作相应的改变,可以使得 外模式不变 ,从而应用程序不必修改,保证了 数据与程序的逻辑独立性 。
物理独立性
- 当数据的 存储结构 发生改变时,由 数据库管理员对 模式/内模式映像 作出相应改变,可以使 模式 保持不变,从而应用程序不必改变,从而保证了 数据与程序的物理独立性。
并发控制
并发方式
交叉并发方式
在 单处理机 系统中,并行事务的并行操作 轮流执行。
同时并发方式
在 多处理机 系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务 并发执行。
实现并发的重要方式
- 封锁
数据不一致性
丢失修改(T1事务修改了数据,T2也修改了,T2结果让T1修改丢失了)
不可重复读(T1读,T2改,T1再读,两次读的结果不一致/T1读,T2删,T1再读,发现读不到数据/T1读,T2增加,T1再读,发现读多了结果)
读脏数据(T1修改,并且写入磁盘。T2读取数据,而T1撤销,T2读到的数据和数据库中的不一致)
锁
排他锁(写锁)
事务T对 对象施加 X锁 ,只允许T修改和修改,其他任何事务 都不能施加其他锁
共享锁(读锁)
事务T对数据对象施加 S锁 ,T可以读但不能写,其他事务只能对A施加 S锁 ,不能修改X锁
活锁与死锁
活锁
一个事务T可能永远等待其他锁,一直得不到锁
解决方法: 采用先来先服务策略
死锁
两个或多个以上的事务循环等待对方的锁的释放,事务永远不能结束。
死锁的预防
一次封锁法 :每个事务必须一次将所有使用的数据 全部加锁,否则不能执行
顺序封锁法 :预先对数据对象 规定 一个 封锁顺序,所有事务都按照这个顺序实行封锁。
死锁的诊断和解除
超时法 :如果一个事务的 等待时间超出了规定的时限,就认为发生了死锁
等待图法 :事务等待图动态地反映了 所有事务的等待情况 。如果发现图中存在 回路 ,则表示系统中出现了 死锁
并发调度的可串行性
可串行化调度
多个事务的并发执行是 正确的 ,当且仅当结果和串行执行时相同,称这种调度策略是 可串行化的调度。
可串行性是并发事务正确调度的准则。
两段锁协议
两段锁协议是指所有事务必须分 两个阶段 对数据项加锁 和解锁。
对任何数据进行读写前 ,首先要申请并获得数据的 封锁
在释放一个封锁 之后,事务不再申请和获得任何其他封锁。
事务遵守的两段锁协议是 可串行化调度 的充分条件 ,不是必要条件。(两段锁必然是可串行化协议,反过来不能说是)
封锁的粒度
多粒度封锁
在一个系统中同时支持多种封锁粒度供不同的事务选择
多粒度树
根节点是 数据库 ,然后是 关系(表) ,元组。
对一个节点 加锁 ,意味着对改节点的所有 后裔节点也施加同样的锁。
显示封锁 :应事务的要求 直接加到数据对象上的锁
隐式封锁 :该数据对象没有 独立加锁 ,而是由于上级节点要求 加锁而被加锁
意向锁
如果对一个结点加 意向锁,说明该节点的下层节点正在被加锁
对任意节点加锁前,必须对上层节点添加意向锁
申请封锁 : 自上而下,
1.意向共享锁(IS锁,Intent Shared Lock)
如果对一个对象添加 IS锁 ,说明它的 后裔节点 正在添加S锁。
2.意向排他锁(IX锁,Intent Exclusive Lock)
如果对一个对象节点添加 IX 锁,说明它的 后裔节点 正在添加X锁。
3.共享意向排他锁(SIX锁,Share Intent Exclusive Lock)
SIX锁 :先加 S锁 ,再加 IX锁 ,标识该事务要 读 整个表,而且会 更新元组
锁的粒度
- S锁可共享的:(S,IS)
- X锁可共享:(无)
- IS锁可共享:(S,IS,IX,SIX)
- IX锁可共享:(IS,IX)
- SIX锁可共享:(IS)
数据库恢复技术
事务
原子性
事务是数据库的 逻辑工作单位,事务的操作要么都做,要么都不做
一致性
事务的执行结果必须是使数据库从一个一致性状态转变到另一个一致性状态
隔离性
一个事务的执行不能被其他事务干扰
持续性
一个事务一旦提交,它对数据库中的数据改变就是 永久性的。
故障种类
事务内部的故障
事务内部的故障(预期的/非预期的)
系统故障
系统停止运行的事件让系统需要重新启动
介质故障
系统故障称为 软故障 ,介质故障称之为 硬故障。举例:磁盘损坏,磁头碰撞,磁场干扰
计算机病毒
恢复的技术
恢复的基本原理是: 冗余
数据转储
DBA定期将 整个数据库 复制到磁带/另一个磁盘上,备用的数据称为 后备副本。
数据库被破坏后,可以装入后备副本 ,但是只能恢复到转储前,要想完全恢复,还要重新运行之后所有的更新事务。
静态转储
在系统中没有运行事务才能进行。转储过程中不允许执行事务,新的事务必须等待转储结束才能进行
动态转储
转储期间允许对数据库进行存取或修改 ,即 转储 与用户事务可以并发执行。
为了保证一致性,需要把转储期间的各个事务记录下来,建立 日志文件
海量转储
- 每次转储 全部数据库
增量转储
- 每次只转储 上一次转储后更新的数据。
登记日志文件
- 主要分为以记录 为单位的日志文件,以数据块为单位的日志文件。
- 登记的 次序 严格按照 并发事务的执行顺序
- 先写日志文件,后写数据库
以记录为单位
- 各个事务的 开始,结束 标记,事务的 更新操作 。这三种都是日志文件中的一个 日志记录
以数据块为单位
- 事务标识
- 被更新的数据块
日志文件的使用
- 事务故障恢复和系统故障恢复 必须使用日志文件
- 在 动态转储中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库
- 在 静态转储中也可以建立日志文件。
恢复策略
- 系统运行过程中根据 故障的种类 ,恢复使用的 策略会不同
查询优化
查询过程
- 查询分析:判断是否符合sql语法
- 查询检查 :根据 数据字典 查询数据库对象是否存在,是否有权限访问。使用 查询树/语法分析树 把 SQL语句 转换成等价的 关系代数表达式。
- 查询优化 :按照 代数优化 和物理优化来进行优化。
- 查询执行 :根据优化器得到的执行策略生成查询计划, 由 代码生成器执行查询计划
启发式规则
- 选择运算尽可能先做
- 投影和选择同时运行
- 投影和双目操作要结合
- 用 连接代替笛卡尔积
- 公共子表达式
画树的技巧
- 先画最初的语法树(select,project,join)
- 转换成语法树(join = x + σ \sigma σ select = σ \sigma σ ,project = π \pi π )
- 优化语法树(根据启发式规则,选择提早做,笛卡尔积换连接)
数据库设计
规范设计方法
- 基本思想: 过程迭代 和 逐步求精
- 新奥尔良方法:把数据库设计分为若干阶段和步骤,逐步实施
- 基于 E-R模型的数据库设计方法
- 3NF设计方法
- ODL(面向对象)设计方法
- 统一建模语言(UML)方法
数据库设计阶段
- 需求分析阶段 :了解并且分析 客户需求 ,是最困难,最耗费时间的一步
- 数据字典的内容:数据项,数据结构,数据流,数据存储,处理过程五个部分)
- 分析方法: 结构化分析方法 (SA):从 最上层出发,采用自顶向下,逐层分解的方法分析系统。调查组织机构情况-熟悉业务活动-明确用户需求-确定系统边界
- 概念结构设计阶段 :对用户需求进行 综合,归纳,抽象 ,形成一个独立于具体DBMS的 概念模型 (根据数据字典设计成E-R图 )
- 概念模型的特点 :1.真实反应现实世界2.易于理解3.易于更改4.向关系,网状,层次等数据模型结构转化
- E-R图: 实体型 使用 矩形 ,用 椭圆 表示 属性 ,用 菱形 表示 联系
- 设计概念的 方法:1.自顶向下2.自底向上3.逐步扩张4.混合策略
- 抽象的三种方法:1.分类2.聚集3.概括
- 逻辑结构设计阶段 :把 概念结构转换为某个DBMS所支持的数据模型,并且对它进行优化(根据ER图设计成数据库表)
- 物理设计阶段 :为 逻辑数据模型选择一个适合应用环境的物理结构(存储安排,存取方法选择,存取路径建立)
- 数据库实施阶段:设计人员运用DBMS提供的语言和宿主语言,根据逻辑设计与物理设计建立数据库,调试并且运行(创建数据库模式,装入数据,数据库试运行)
- 数据库运行和维护阶段:(性能检测,转储/修复,数据库重组和重构)
- 参与数据库设计的人员
- 系统分析人员和数据库设计人员
- 数据库管理员和用户代表
- 应用开发人员
E-R图的集成
- 合并 :解决各分E-R图的冲突
- 属性冲突:属性值的类型,取值范围,取值集合,属性取值单位不同
- 命名冲突:同名异义,异名同义。
- 结构冲突 :同一对象在不同应用中 具有 不同抽象 (解决方法:把属性变为实体)或者实体在不同子系统的 属性 个数和排列次序不同(解决方法:属性值取 并集,并且适当调整属性的次序)
- 修改和重构 :消除不必要的冗余(冗余数据和冗余联系),生成 基本E-R图
- 冗余数据:可以由基本数据导出的数据
- 冗余联系:可以由其他联系导出的联系
- 求函数依赖集 F L F_L FL 的最小覆盖 G L G_L GL ,令差集 D = F L − G L D=F_L - G_L D=FL−GL 。冗余的联系 一定 在差集D中,但D中的联系 不一定是冗余的。
关系数据库理论
函数依赖
定义: 对于关系R中 任意 的关系r,r中不可能存在任意的两个元组在 X 上相等,而在 Y 上的属性值不等,则称函数 X确定Y,或Y依赖于X ,记作 X → Y X\to Y X→Y
范式
满足最低要求的是第一范式,要求越高,范式级数越高 5 N F ⊂ 4 N F ⊂ B C N F ⊂ 3 N F ⊂ 2 N F ⊂ 1 N F 5NF \subset 4NF \subset BCNF \subset 3NF \subset 2NF \subset 1NF 5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF
把一个 低一级 范式的关系模式,通过 模式分解 转化未一个更高级的范式,该过程称为规范化。
2NF
定义:若关系模式R ⊂ \subset ⊂ 1NF,并且每一个非主属性都 完全函数依赖 于任何一个候选码,则 R ∈ 2 N F R\in 2NF R∈2NF
举例:SLC表(Sno,Sdept,Sloc,Cno,Grade) Sloc是学生住所,规定所有系的学生住在同一个地方
3NF
定义:若关系模式R ∈ \in ∈ 1NF,若R中 不存在 这样的码X,属性组Y,非主属性 Z,使得 X → Y , Y → Z , Y ↛ X X\to Y,Y\to Z,Y \not\to X X→Y,Y→Z,Y→X ,则称R是3NF的。
性质:每一个 非主属性既不部分依赖,也不传递依赖子码
举例: S n o → S d e p t , S n o → S l o c , 而 S d e p t → S l o c Sno\to Sdept,Sno\to Sloc,而Sdept\to Sloc Sno→Sdept,Sno→Sloc,而Sdept→Sloc ,此处X就是Sno,Y是Sdept,如果是3NF范式,Sdept不允许推出Sloc.
BCNF
定义:第三范式的修正, R ∈ 1 N F , 若 X → Y , 且 Y ⊄ X 时, X 必含有码 , 则 R ⊂ B C N F R\in 1NF,若X \to Y,且Y\not\subset X时,X必含有码,则R\subset BCNF R∈1NF,若X→Y,且Y⊂X时,X必含有码,则R⊂BCNF,(所有的依赖左边必含有码)
所有 主属性 都完全函数依赖于每个不含它的码
没有任何属性完全函数依赖于非码的任何一组属性
如果一个数据库是BCNF范式,实现了模式的 行为分解 ,消除了 插入 ,删除异常
4NF:
若 R ∈ 1 N F R\in 1NF R∈1NF,对于R的 每个非平凡多值依赖 X → → Y X\to\to Y X→→Y , X都含有码 ,则 R ∈ 4 N F R\in 4NF R∈4NF
多值依赖
定义: X , Y , Z 是 U 的子集,并且 Z = U − X − Y X,Y,Z是U的子集,并且Z=U-X-Y X,Y,Z是U的子集,并且Z=U−X−Y ,当且仅当一组值(x,z),有一组Y的值,这组值仅仅决定于x值而与z值无关。(类似于一对多)
平凡的多值依赖,就是指Z中的值为空。
性质
多值依赖与函数依赖的区别
1. 多值依赖的有效性与 属性集的范围 有关
2. 若 函数依赖在 X → Y X\to Y X→Y在R(U)上成立,则对于任何 Y ′ ⊂ Y 均有 X → Y ′ Y^{'}\subset Y均有 X\to Y^{'} Y′⊂Y均有X→Y′ ,而多值依赖不行
公理系统
逻辑蕴含
1. 定义:对于任意一个关系模式R<U,F>,其任何一个关系r,若[[#函数依赖]] X → Y X \to Y X→Y 都成立,则称 F逻辑蕴含 X → Y X \to Y X→Y
ArmStrong公理系统
目的:求给定关系模式的 码,从一组函数依赖球的蕴含的函数依赖
阐述: 设U是属性集总体,F是U上的一组 [[#函数依赖]] ,有以下规则
推广规则:
求解(闭包) X F + X_F^+ XF+ 的步骤如下:
1. 初始化 X ( 0 ) X^{(0)} X(0)
2. 寻找 X i X_{i} Xi 能推出的新元素(根据函数依赖),并且并到新的集合 X i + 1 X_{i+1} Xi+1 中
3. 若 X i = = X i + 1 / U X_i == X_{i+1}/U Xi==Xi+1/U ,说明没有新的元素了,此时 X i X_i Xi 就是闭包
闭包的 覆盖 : 如果 G + = F + 如果G^+ = F^+ 如果G+=F+ ,就说F是G的覆盖,或者G是F的覆盖,或F与G是等价的
最小依赖集/最小覆盖/极小函数依赖集求法:
口号: ①右切②除本求包,右部在包要除③左部最小化,分别考察了左部右部传递的冗余性
1. 检查 X → A ,若 X → A 1 A 2 A 3 . . , 依次拆分成 X → A 1 , X → A 2 , X → A 3 X\to A,若X\to A_1A_2A_3..,依次拆分成X\to A_1,X\to A_2,X \to A_3 X→A,若X→A1A2A3..,依次拆分成X→A1,X→A2,X→A3
2. 检查依赖 X → A X\to A X→A,若 G = F − { X → A } G = F-\{X\to A \} G=F−{X→A} , A ∈ X G + A\in X_G^+ A∈XG+ ,那么从集合中去掉该依赖 X → A X\to A X→A
3. 检查依赖 X → A X\to A X→A ,设 X = B 1 B 2 . . . B m X=B_1 B_2 ...B_m X=B1B2...Bm ,需要逐个 考察左部X单个元素 B i B_i Bi ,若 A ∈ ( X − B i ) F + A \in (X - B_i)_F^+ A∈(X−Bi)F+ ,就用 X − B i X-B_i X−Bi取代 X
候选键求法
- 分类:把属性分为L(仅在左部),R(仅在右部),LR(左右都有),N(两边都没有)
- 令 X = L ∪ N X = L \cup N X=L∪N ,若X的 闭包=U ,则X一定是R的唯一候选键
- 从 LR 中选择 一个属性Y ,若( Y ' = ( Y ∪ X ) = U Y^`=(Y \cup X )=U Y'=(Y∪X)=U )则( Y ' Y^` Y'是候选键)
- 从 L , R L,R L,R中选择 2 , 3 , . . . 个属性 2,3,...个属性 2,3,...个属性,执行第三步步骤。 请注意:候选键对于 相同长度的要全部求闭包
3NF求法
- 求最小依赖集
- 合并左部相同,构成模式
- 模式中若 都不包含R的候选键 , 要单独加入R的候选键(多个候选键只放一个)
数据库完整性
维护完整性,DBMS提供的功能
1.提供定义完整性约束条件的机制
2.提供完整性检查的方法
3.违约处理
实体完整性
sql
# 把Student表中的Sno定义为码
Create table student (
Sno char(9) primary key,
Sname char(20) ,...
)
sql
# 把(Sno,Cno)定义为码
Sno char(9) not null,
Cno char(4) not null,
Primary Key (Sno,Cno)
参照完整性
- 在定义表的时候加 Foreign key (属性列) references Student(别的表的主码)
sql
Sno char(9) not null,
Cno char(4) not null,
Foreign key (Sno) references Student(Sno)
Foregin key (Cno) references Course(Cno)
用户定义的完整性
数据库安全性
数据保护的功能
- 数据的 安全性保护
- 数据的 完整性保护
- 并发控制
- 数据的恢复
实现数据库安全性的方法(五种)
用户标识与鉴别
存取控制
自主存取控制方法(DAC)
- 定义 存取权限 称为授权。
- 使用grant进行授权
sql
grant <权限>(update,insert,delete)
on 对象类型
to 用户
- 使用revoke
视图
审计
数据加密
数据库的安全性
- 数据库的安全性是指 保护数据库以防止 不合法的使用 以造成的 数据泄露 ,更改或破坏。
关系数据库标准语言SQL
数据定义(DDL)
Create
sql
CREATE TABLE <表名>
(
列名1,属性值,约束
);
Alter(修改)
sql
Alter table <表名>
[add 列名, 数据类型]
Drop(删除)
修改功能
sql
update 表名
set 列名 = 列的值
where 条件
sql
# 把计算机学生的成绩全部置零
update sc
set Grade = 0
where Sdept = 'CS'
删除功能
sql
# 删除学号为213的学生记录
delete from Student where Sno = 213
SQL查询的转化
全程量词转化
由于SQL中没有全称量词,所以对于 全部字样的查询,要进行否定的转化
例题:查询选修了全部课程的学生姓名。之前的逻辑是,查询学生p,对于所有的课x它都选修了。
现在是,查询学生p,没有 一门课是该学生 不选修的
sql
select sname from Student Where not exists (
select * from Course where not exists (
select * from sc where Cno = Course.Cno and student.Cno = cno
)
)
SQL的特点
1. 综合统一:SQL集数据定义语言 DDL,数据操纵语言DML,数据控制语言DCL,数据查询语言DQL功能于一体
2. 高度非过程化 :用SQL进行数据操纵,只用提出 做什么 ,无需指出 怎么做,因此无需了解存取路径,存取路径的选择和SQL语句的执行过程由系统完成。
3. 面向集合的操作方式 :SQL采用 集合操作方式,操作对象,查找结果可以是元组的集合。
4. 以同一种语法结构提供两种使用方式 :SQL既是 自含式 语言,又是 嵌入式语言
5. 语言简洁 ,易学易用
视图
视图是一张 虚表 ,只存放 定义 ,不会存放数据,数据仍然存放在原本的表中
视图一经定义,就可以被删除查询,但视图的更新(增,删,改)有一定限制
建立视图
sql
CREATE VIEW <视图名>
AS <子查询>
[WITH CHECK OPTION]
其中,若有 WITH CHECK OPTION 表示进行update,insert,delete操作时要保证操作的行 满足视图定义
视图不仅可以建立在一个或多个 基本表 中,也可以建立在一个或多个 视图上
删除视图
sql
DROP VIEW <视图名> CASCADE
# CASCADE指明级联删除视图
查询视图
1. 首先进行 有效性检查,检查查询中的表,视图是否存在
2. 从数据字典中取出视图的定义,把定义的 子查询 和 用户的查询 结合,转换 成等价的 基本表查询 。这一转换过程称为: 视图消解
更新视图
由于视图是不实际存储数据的 虚表,因此对视图的更新,最终要转换为对基本表的更新,对视图的更新操作也是通过对视图的消解,转换为对基本表的更新操作。
视图的作用
1. 视图能简化用户的操作:通过定义视图,让数据库看起来更加清晰,简化用户的查询工作
2. 视图使用户能以多种角度看待同一数据
3. 视图对重构数据库提供了一定程度的逻辑独立性
4. 视图能够对机密数据提供安全保护:通过限制每个用户看到的视图,可以限制用户仅修改子集定义的视图
5. 适当利用视图可以进行更加清晰的表达
关系数据库
关系的属性
- 候选码 :若关系中的某一个 属性组 能唯一地标识某一个元组,则称该属性组为 候选码
- 主码 :一个关系中可以从 候选码中选择一个成为主码
- 主属性 :候选码的诸属性称为 主属性 ,不包含在任何候选码的属性称为 非主属性
- 全码:关系模式所有的属性是这个关系模式的码
关系系统
- 支持 选择,投影,连接
分类
- 表示系统
- 最小关系系统
- 关系上完备的系统
- 全关系系统
关系的完整性
实体完整性
- 若属性是 主属性,则不能为空
参照完整性
- 若属性 F 是基本关系R的 外码 ,与关系 S的主码对应,则R中每个元组在F上必须为:1.空值(F的每个属性都是空值) 2. 或者等于S中某个元组的主码
用户参照完整性
- 某一具体应用所涉及的数据必须满足语义需求
关系运算
选择( σ 选择条件 ( 表的名字 ) \sigma_{选择条件}(表的名字) σ选择条件(表的名字))
- 实际上是查询满足条件的行(元组)
- 查询信息系全体学生: σ S d e p t = ′ I S ′ ( S t u d e n t ) \sigma_{Sdept = 'IS'}(Student) σSdept=′IS′(Student)
- 查询年龄小于20岁的学生: σ S a g e < 20 ( S t u d e n t ) \sigma_{Sage<20}(Student) σSage<20(Student)
投影( π 属性列 ( 表的名字 ) \pi_{属性列}(表的名字) π属性列(表的名字))
- 实际上是查询新的 关系的子集
- 查询学生关系中都有哪些系: π S d e p t ( S t u d e n t ) \pi_{Sdept}(Student) πSdept(Student)
连接
- 自然连接(要求连接的两个属性组有相同的分量)
除法
- 关系X,Y,X÷Y=(X中拥有Y列的属性列)