数据库系统基础教程复习
第1章 数据库系统世界
数据库(DB):
- 从本质上讲
数据库
就是信息的集合。 - 一般来说,数据库是指
数据库管理系统
(DBMS)管理的数据集合。
数据库管理系统(DBMS):
- 数据定义语言(DDL)
- 数据查询和操纵语言(DML)
- 支持大容量数据的长期存储
- 具有持久性
- 支持数据共享
数据库系统(DMS):
数据库系统通常由软件、数据库和数据管理员组成。
- 数据库(DB)
- 数据库管理系统(DBMS)
- 数据库管理员(DBA)
- 数据库应用程序(APP)
数据库设计步骤:
- 需求收集和分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 物理实现
- 数据库运行和维护
第2章 关系数据模型
关系模型基础
数据模型:
- 数据结构
- 数据操作
- 数据上的约束
常用的数据模型:层次模型、网状模型、关系模型。
关系:数据以一张二维表格描述。
属性:关系的列,是关系特征的描述。
模式:关系名和其属性的集合。例如movies(title, year, length, genre)。
元组:除属性行外,关系的每一行对应一个元组。例如(红海行动, 2018, 138, 动作)。
域:属性的数据类型即取值范围。
关系的性质:
- 不能出现相同的行
- 不能出现相同的列名
- 列是不可分割的最小数据项
- 可以交换任意两行的顺序
- 可以交换任意两列的顺序
- 每一列的数据类型、取值范围必须一致
关系的操作:
- 关系代数的操作对象是
关系
- 关系代数的操作
- 并、交、差
- 选择、投影
- 乘
- 重命名
R∪S:属于R或属于S的所有元组构成的新关系。R∩S:属于R也属于S的所有元组构成的新关系。R−S:属于R且不属于S的所有元组构成的新关系。R \cup S:属于R或属于S的所有元组构成的新关系。\\ R \cap S:属于R也属于S的所有元组构成的新关系。\\ R-S:属于R且不属于S的所有元组构成的新关系。 R∪S:属于R或属于S的所有元组构成的新关系。R∩S:属于R也属于S的所有元组构成的新关系。R−S:属于R且不属于S的所有元组构成的新关系。
投影运算:
πA1A2...An(R):从关系R中取出A1A2...An列生成一个新的关系。例:πtitle,year,studioName(Movies1)\pi_{A_1A_2...A_n}(R):从关系R中取出A_1A_2...A_n列生成一个新的关系。\\ 例:\pi_{title, year, studioName}(Movies1) πA1A2...An(R):从关系R中取出A1A2...An列生成一个新的关系。例:πtitle,year,studioName(Movies1)
选择运算:
σc(R):从关系R中取出满足条件c的元组生成一个新的关系。例:σlength>100(Movies1)σc(R)中表达式c可以使用的运算符:比较运算符:<,≤,>,≥,=,≠逻辑运算符:!,or,and(非、或、与)\sigma_c(R):从关系R中取出满足条件c的元组生成一个新的关系。\\ 例:\sigma_{length>100}(Movies1)\\ \sigma_c(R)中表达式c可以使用的运算符:\\ 比较运算符:\lt, \le, \gt, \ge, =, \ne 逻辑运算符:!, or, and(非、或、与) σc(R):从关系R中取出满足条件c的元组生成一个新的关系。例:σlength>100(Movies1)σc(R)中表达式c可以使用的运算符:比较运算符:<,≤,>,≥,=,=逻辑运算符:!,or,and(非、或、与)
选择和投影的组合运算:
例:查询2019年以前拍的动作片的片名和年份。
πtitle,year(σyear<2019andgenre=′动作′(Movies1))\pi_{title, year}(\sigma_{year\lt2019 \, and \, genre='动作'}(Movies1)) πtitle,year(σyear<2019andgenre=′动作′(Movies1))
关系的重命名:
ρs(R):命名后的关系S与R有完全相同的元组,属性名也相同,只是关系的名称变为S。ρs(A1,A2,...An)(R):命名后的关系S与R有完全相同的元组,不仅关系的名称变为S,关系R中的属性在S中也依次改名为A1,A2,...,An。\rho_s(R):命名后的关系S与R有完全相同的元组,属性名也相同,只是关系的名称变为S。\\ \rho_s(A1,A2,...An)(R):命名后的关系S与R有完全相同的元组,不仅关系的名称变为S,关系R中的属性在S中也依次改名为A_1,A_2,...,A_n。 ρs(R):命名后的关系S与R有完全相同的元组,属性名也相同,只是关系的名称变为S。ρs(A1,A2,...An)(R):命名后的关系S与R有完全相同的元组,不仅关系的名称变为S,关系R中的属性在S中也依次改名为A1,A2,...,An。
第3章 关系数据库设计理论
BC范式
关系R是BCNF的充要条件:每个非平凡FD的左边必定是超键。
任意一个二元关系是BCNF。
分解BCNF的方法:
找到R中任意一个BCNF违例FD
A -> B
设A = {A1A2…An}
B = {B1B2…Bn}
C = {C1C2…Cn}
计算违例左边属性集的闭包:{A}+ = {A, B, C},其中C是推导出的属性集。
将关系R分解成两个关系:
R1(A, B, C),即A闭包中的所有属性
R2(A, R中除A, B, C之外的所有属性)
对R1和R2重复(1)、(2)的步骤,直到分解出来的
所有关系均没有违例
。
例:关系R(A, B, C, D, E),含有FD:AB -> C,DE -> C 和 B->D。
判断关系R是否BCNF,如果不是,请分解成一系列BCNF关系集合。
从违例AB -> C开始分析:
确定键,通过求元素的闭包,得到键{ABE}
找出一个违例 AB -> C,计算{AB}+ = {ABCD}
将关系R分解为R1 (A,B,
C,D
) 和 R2 (A,B,E
)对R1和R2重复上述步骤
R1的键是{AB},存在违例B -> D,将关系R1分解成R11(B,
D
),R12(B,A,C
),R11和R12都是BCNF。R2的键是{ABE},R2是BCNF。
所以,可以将关系R分解为R11(B,D),R12(B,A,C)和R2(A,B,E)三个关系。
从违例DE->C开始分析:
确定键,通过求元素的闭包,得到键{ABE}
分析违例DE -> C,计算{DE}+ = {DEC}
将关系R分解为R1(D,E,
C
)和R2(D,E,A,B
)对R1和R2重复上述步骤
R1(D,E,C)的键是{DE},不存在违例,R1是BCNF。
R2(D,E,A,B),{ABE}是键,B->D是违例,将R2分解为R21(B,
D
)、R22(B,A,E
),{BAE}是键,R22是BCNF。所以,可以将关系R分解为R21(B,D),R22(B,A,E)和R1(D,E,C)三个关系。
3NF
条件:对于关系R上的任一非平凡FD:A -> B。满足A是超键
或B由主属性
组成(候选键中的属性统称为主属性),称关系R满足第三范式。
3NF与BCNF:
- 关系R若满足BCNF也一定满足3NF
- 关系R若满足3NF不一定满足BCNF
- BCNF是基于函数依赖的最高范式,但不是数据库模式设计的最高范式
第4章 高级数据库模型
E/R模型
三要素:
- 实体集
- 属性
- 联系
第5章 代数和逻辑查询语言
第6章 数据库语言SQL
在SQL中定义关系模式
使用CREATE TABLE定义关系模式
数据类型 | 长度 | 取值范围 |
---|---|---|
NCHAR(n) | 定长字符串,字符串长度规定为n | 最多4000字符,个数由n决定 |
NVARCHAR(n) | 由字符串实际长度决定最多不超过n个字符 | 最多4000字符,个数由n决定 |
NTEXT | 存放文本,长度由字符实际个数决定 | 最多230-1个字符 |
INT | 4字节 | -230~231-1 |
SMALLINT | 2字节 | -215~215-1 |
BIT | 1字节 | 1或0 |
DATETIME | 8字节 | 1753-01-01~9999-12-31 |
SMALLDATETIME | 4字节 | 1900-01-01~2079-06-06 |
FLOAT | 8字节 | 表示近似的浮点数值 |
DECIMAL(n,m) | 允许n位十进制数,小数部分占m位 | 表示精确的浮点数值 |
NUMERIC(n,m) | 同上 | 同上 |
CREATE TABLE Movies (id INT IDENTITY(1,1)title NCHAR(50),year INT,length INT,genre NCHAR(10),studioName NVARCHAR(30),producerC# INT
);
CREATE TABLE Movies_1 (title NCHAR(50),date DATETIME,bookOffice DECIMAL(6,2),length INT,genre NCHAR(10),studioName NVARCHAR(30),producerC# INT
);
定义主键约束
- 有多个主键时
CREATE TABLE Movies (title NCHAR(50),year INT,length INT,genre NCHAR(10),studioName NVARCHAR(30),producerC# INT,PRIMARY KEY(title, year)
);
- 只有一个主键时
CREATE TABLE MovieStars (name NCHAR(30) PRIMARY KEY,address NVARCHAR(255),gender CHAR(1),birthdate DATETIME
);
定义唯一值约束
CREATE TABLE MovieStars(name NCHAR(30) PRIMARY KEY,address NVARCHAR(255) UNIQUE,gender CHAR(1),birthdate DATETIME
);
UNIQUE约束:在该列的取值必须唯一,但可以取空值。
PRIMARY KEY约束:在该列的取值必须唯一,不能取空值。
定义空值约束NULL
CREATE TABLE MovieStars(name NCHAR(30) PRIMARY KEY,address NVARCHAR(255) UNIQUE NOT NULL,gender CHAR(1),birthdate DATETIME
);
NULL约束:除了主键外,默认都是可以取空值的。
NOT NULL约束:表示该列不能取空值。
基于属性的CHECK约束
CREATE TABLE MovieStar(name NCHAR(30) PRIMARY KEY,address NVARCHAR(255) UNIQUE NOT NULL,gender CHAR(1) CHECK(gender in ('F', 'M')),birthdate DATETIME
);
CREATE TABLE MovieStars(name NCHAR(30) PRIMARY KEY,address NVARCHAR(255) UNIQUE NOT NULL,gender CHAR(1),birthdate DATETIME,CONSTRAINT gender_ck CHACK(gender in ('F', 'M'))
);
基于元组的CHECK约束
CREATE TABLE MovieStars(name NCHAR(30) PRIMARY KEY,address NVARCHAR(255),gender CHAR(1),birthdate DATETIME,CONSTRAINT gender_ck CHECK(gender='F' OR address IS NOT NULL)
);
设置默认值
CREATE TABLE MovieStars(name NCHAR(30) PRIMARY KEY,address NVARCHAR(255),gender CHAR(1) DEFAULT 'M',birthdate DATETIME DEFAULT '0000-00-00'
);
修改关系模式
DROP TABLE MovieStars
ALTER TABLE MovieStars ADD mobile NCHAR(11) DEFAULT 'unlisted';
ALTER TABLE MovieStars DROP mobile;
SQL中的简单查询
SELECT…FROM…WHERE
SELECT *
FROM Movies
WHERE studioName='Disney' AND year=2019
SQL中的投影
SELECT title, length
FROM Movies
WHERE studioName='Disney' AND year=2019
投影同时更改属性名
SELECT title AS name, length duration
FROM Movies
WHERE studioName='Disney' AND year=2019
用表达式取代属性
SELECT title name, length/60 lengthInHoues
FROM Movies
WHERE studioName='Disney' AND year=2019
用常量表达式取代属性
SELECT title name, length/60.0 lengthInHoues, 'hrs' inHours
FROM Movies
WHERE studioName='Disney' AND year=2019
查询1980年到1990年间出生的男演员。
SELECT name
FROM MovieStars
WHERE gender = 'M' AND birthdate BETWEEN '1980-01-01' AND '1990-12-31'
拷贝表 SELECT INTO 和 INSERT INTO SELECT的区别
第7章 约束与触发器
第8章 视图与索引
第9章 服务器环境下的SQL
附录 中英文词汇对照
中文 | 英文 |
---|---|
键 | key |
超键 | candidate key |
主键 | primary key |
超键 | superkeys |
外键 | foreign key |
违例 | violation |
约束 | constraint |
第10章 关系数据库的新课题
第11章 半结构化数据模型
第12章 XML程序设计语言
数据库系统基础教程复习相关推荐
- 人机交互基础教程-复习总结
人机交互基础教程 题型分布 考纲及重点 第 1 章 绪论 1.1 什么是人机交互 1.2 人机交互的研究内容(7个) 1.3 人机交互的发展历史(3阶段) 1.4 人机交互的应用 习题 第 2 章 感 ...
- 数据库系统基础教程第三版 部分实验命令
本文为机械工业出版社 出版的<数据库系统基本教程(第三版)>一些课后习题的数据库操作命令. #创建产品数据库 create database products;#使用产品数据库 use p ...
- 大学计算机基础教程复习考试试题
一.单项选择题(每题2分,共50分) 1. 计算机诞生于________. A.1941年 B.1946年 C.1949年 ...
- 大学一年级计算机教程视频教程,大学一年级公开课《计算机基础教程》期末试题复习.doc...
大学一年级公开课<计算机基础教程>期末试题复习 1.在Windows启动后,要执行某个应用程序,下列方法中,___ D __是错误的. A.在资源管理器中,用鼠标双击应用程序名 B.利用& ...
- 2011计算机等级考试二级c语言公共基础教程.doc,2011年全国计算机等级考试二级c语言公共基础知识复习100题及答案.doc...
您所在位置:网站首页 > 海量文档  > 资格/认证考试 > 计算机等级考试 2011年全国计算机等级考试二级c语言公 ...
- 高等学校计算机专业教材精选计算机基础,大学计算机基础教程/高等学校计算机基础教育教材精选简介,目录书摘...
编辑推荐: (1)内容丰富,包括计算机基础知识.Windows 7.Word 2010.Excel 2010.PowerPoint 2010.计算机网络基础.信息安全.多媒体技术基础.数据库基础等内容 ...
- AndoridSQLite数据库开发基础教程(10)
AndoridSQLite数据库开发基础教程(10) 添加触发器 触发器(TRIGGER)是由事件来触发某个操作.这些事件包括INSERT.DELETE.UPDATE和UPDATE OF.当数据库系统 ...
- Spring Boot 2.x基础教程:JSR-303实现请求参数校验
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | didispace.com/spring-boot-learni ...
- Python基础教程(十):CGI编程、MySQL数据库
Python CGI编程 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如: ...
- Oracle数据库基础教程:入门其实很简单
为什么80%的码农都做不了架构师?>>> Oracle数据库基础教程:入门其实很简单 Oracle数据库系统是目前最流行的客户/服务器数据库之一.本文集从初学者的角度出发,由浅 ...
最新文章
- stick footers布局
- PyQt5 技术篇-窗口名、窗口图标的设置方法。
- 5、Power Query-抓取网页数据做漂亮的图表
- ai包装插件_找AI插件很费劲,一次给你66款AI插件合集!每一款都是设计师常用...
- Codeforces 362E Petya and Pipes 费用流建图
- 网络编程+Python
- EE Servlet 3:简单表单处理
- mysql从表截取信息_mysql中循环截取用户信息并插入到目标表对应的字段中
- 手机连接投影机的步骤_家用投影仪如何安装 家用投影仪安装方法【步骤详解】...
- 年近八旬教授曾一次性捐款8000多万,今获省杰出贡献奖!
- IntelliJ IDEA + EmmyLua:Lua IDE的安装与使用
- 联想笔记本声音太小怎么办_图文详解笔记本电脑声音太小解决方法
- TwinCAT 3 xml存储配置文件程序
- Qt 利用海康摄像头的ISAPI协议进行抓图等操作
- ST芯片烧录失败的原因分析及对策
- iOS 开启静音键时APP播放视频没有声音
- python中三个点(…)
- 150款国潮风城市插画
- 记一个小工具——font-spider(字蛛-css压缩中文字体字体)
- Linux Suse修改主机名hostname