目录
2.1数据模型概述
数据模型:对现实世界数据特征的模拟和抽象
数据模型三要素:
2.1.1数据结构(静态特性)
定义:数据结构:描述数据库的组成对象以及对象之间的联系
是刻画一个数据模型性质最重要的方式
(层次结构,网状结构,关系结构的数据模型→层次模型,网状模型,关系模型)
2.1.2.数据操作(动态特性)
定义:数据操作:对数据库中数据允许执行的操作的集合及其规则
主要操作:查询,更新(插入,删除,修改)
2.1.3.数据上的约束
定义:数据约束条件:一组完整性规则的集合
完整性:数据模型中数据及其联系所具有的制约和依存规则,用以限定状态及变化。保证数据的正确,有效,相容
2.1.4重要的数据模型
1.关系数据模型 2.半结构化数据模型(XML) 3.其他(层次,网状)
2.2关系模型基础
关系模型——提供一种描述数据的方法即称为“关系”的二维表
2.2.1 关系数据结构
关系模型中数据的逻辑结构是一张二维表
基本概念的罗列:
- 关系:命名了的二维表:描述事物之间的联系
- 属性:每一列的名字
- 关系模式:关系名和属性的集合(无序)
- 关系数据库模式:一项关系模型包括一个或多个关系模式
- 域:属性的数据类型与取值范围
- 元组:除了属性之外的每一行
- 分量:一个元组中的其中一个量(每个元组中的每个分量都有特定的次序)
- 键:关系中的某个属性或者属性组可以唯一确定一个元组
- 候选码:存在多个属性(组)可以唯一标识该元组;从该属性组中去掉一个就不具备该属性了;则这些属性(组)都是候选码
- 主属性:候选码中的属性;非主属性:不包含在候选码中的属性
- 主码/主键:在多个候选码中指定一个作主码;每个表只有一个主键且不为空,用下划线标记
- 全码:所有属性在一起构成的码
- 外键:将一个表的主键作为数据之间的联系纽带放到另一个表中;这个用于联系的非主属性就是外键(外部关键字)
- 关系是元组的集合(无序),不是列表(有序)。所以可以改变次序。
- 关系实例:元组的集合;当前实例:当前版本的关系的元组集合
- 模式:关系名与属性,不变;实例:元组的集合,会变
2.2.2 关系操作集合
查询,插入,删除,修改
2.2.3 关系完整性约束
(1)实体完整性约束——必须满足
定义:如果属性A是基本关系的主属性,则属性A不能取空值
(2)参照完整性约束——必须满足
定义:简单来说就是——如果一个属性(组)是一个关系A的外码,也就是关系B的主码。那么关系B叫做被参照关系。
同时在关系A中,每个元组在这个属性(组)上的值必须满足:每个属性值为空值;等于关系B中某个元组的主码值
(3)用户定义的完整性——自行定义的约束
对于关系数据库中的数据定义的约束条件
2.3SQL中定义关系模式
定义基本表 | CREATE TABLE |
修改基本表定义 | ALTER TABLE |
删除基本表 | DROP TABLE |
创建索引 | CREATE INDEX |
删除索引 | DROP INDEX |
创建基本表:
CREATE TABLE Movies(
title CHAR(100),
year INT,
length INT,
genre CHAR(10),
studioName CHAR(30),
producerC# INT
);
建表的同时通常还定义完整性约束条件:
1) NOT NULL /NULL约束:不允许/允许该列存在空值
2) UNIQUE约束:不允许表中的一列或者某些列有重复值
3) DEFAULT约束:默认值约束,即向表中插入一个新行时,如果对于特定列没有指定数值,则使用DEFAULT子句指定的默认值。(多为NULL)
4) CHECK约束:检验约束,为插入列中的数据指定约束条件。即该列上的值必须满足这个条件,否则返回一个错误信息
5) PRIMARY KEY约束:主键约束。主键可以是一列或列组。(与UNIQUE约束相比,PRIMARY KEY约束的列不能为空)
6) FOREIGN KEY约束:参照完整性约束,约束外键。
修改基本表:
删除基本表:
2.4关系代数查询语言
关系的集合运算:
交,并,差:(略,只需要注意是集合的运算,没有重复的即可)
投影:R的投影是从R中选择若干个属性组成新的关系(无重复)记为:πA1,A2,A3..An (R)
选择:R的选择运算就是从指定关系中选择满足一定条件的元组,得到新的关系。记为σC(R)
条件C可以用大于,小于,AND,OR等
笛卡尔积:关系R和S的笛卡尔积是有序对的集合,记作R×S
当R和S有公共属性A时,分别用R.A和S.A表示。
自然连接:由关系R和S在公共属性上相同的元组成对链接构成(去掉重复的列)记作:R⋈S
(R1⋈R2)⋈R3 等价于 R1⋈(R2⋈R3) 可简记为 R1⋈R2⋈R3
θ连接:即R和S基于条件C的自然连接,记为Rc⋈S
大题:查询表达式和表达式树
就是给出一个要查询的目标对象,根据这个条件写查询语句,再把语句画成树。
语句画成树——由内向外拆解:自下而上:关系→对关系的操作→集合运算→运算结果的操作
思路就是“先条件再目标,先选行再选列”,例如如下:
“学分大于3”就是条件;课程号和课程名就是目标;
查询语句由内到外先解决条件,也就是选行;再确定要选择的目标,也就是选列。
前者利用“选择σ”确定行,后者利用“投影π”确定列
同时,如果需要的目标在两个表中,需要先将两个表自然连接:
改名:ρs(A1,A2...An)(R),将关系R的名字改成S,并且将属性改名为A1,A2...
2.5关系代数的扩展操作
(1) 消重复操作符:δ(R)返回没有重复元组的关系R
(2) 聚集操作符:用于汇总或者聚焦某一列的数值
求和/平均/最小/最大/“种类”数
(3) 分组操作:对R中的一个属性应用操作,并且对取得的结果命名:
γL(R中的一个属性)→newname(R)
(4) 扩展投影:在投影的途中增加操作得到新属性并命名
(5) 排序操作符:τL(R)按照L的顺序排序
排序操作符是关系代数中唯一一个结果是元组列表的操作符
(6) 悬浮元组和外连接算符
悬浮元组:在连接中不能和任何一个另外关系的元组配队的元组,该元组一般舍弃。例如:
保留悬浮元组并填入NULL值的连接就是外连接:
左外连接:只保留左边关系中要舍弃的元组。右外连接同理
半连接:只取第一个关系中的属性
2.6作为约束语言的关系代数
略