数据库系统原理-期末速成

应对期末考试,快速过一遍数据库系统原理

1. 数据库概览

1.1数据库管理技术的发展

1.数据的含义称为数据的语义。例:93是一个数字,语义1:学生某课成绩。语义2:某人的体重。
2.数据管理时数据处理的核心。

1.2理解数据库系统

3.数据库(DB)是长期储存在计算机内、有组织的、可共享的大量数据集合。
4.数据库管理系统(DBMS) 是位于用户与操作系统之间的一层数据管理软件。例如Mysql,Mssql,Oracle等。
5.数据库系统(DBS) 是指带有数据库并利用数据库技术进行数据管理的计算机系统。

1.3数据库系统体系结构

1.三级模式: 外模式、模式、内模式

a.模式:

1.数据库中全体数据的逻辑结构和特征的描述。

2.一个数据库只有一个模式。

b.外模式:

1.是模式子集。外模式面向具体应用,是数据库用户所能使用的局部数据的逻辑结构和特征的描述。

2.一个数据库可以有多个外模式

c.内模式(存储模式)

1.是数据库的物理结构。

2.一个数据库只有一个内模式。

2.数据库系统的二级映像:

外模式/模式映像:

1.定义了外模式与模式的对应关系。

2.外模式/模式映像保证了数据的逻辑独立性。

模式/内模式映像:

1.定义了数据库全局逻辑结构与存储结构之间的对应关系。

2.模式/内模式映像保证了数据库的物理独立性。

1.4数据模型

1.模型是现实世界特征的模拟与抽象。
2.数据模型的层次: 概念数据模型->逻辑数据模型->物理数据模型
3.两步抽象: 1.现实世界中的客观对象抽象为概念模型 2.把概念模型转换为某一DBMS支持的数据模型。

概念模型的表示方法(重点!)
实体-联系方法(E-R方法)
1.E-R三要素: 实体、属性、联系
2.E-R图

几种联系的画法参考书或课件!

E-R图例题:

逻辑数据模型三要素: 1.数据结构 2.数据操作 3.数据的约束条件
逻辑数据模型的类别: 1.格式化模型 2.关系模型 3.面向对象模型 4.对象关系模型

2.关系数据模型

2.1关系数据结构

1.一个关系就是一个规范化的二维表。规范化是指表中每列都是原子项,即没有表中表。
一个关系由关系名(表名)、关系模式(表头)和关系实例(数据)组成。
2.二维表基本术语:

  1. 关系: 二维表
  2. 元祖: 二维表中的一行即为一个元祖
  3. 属性: 二维表中的一列即为一个属性
  4. 码: 表中可唯一确定元祖的单个属性或属性组
  5. 域: 属性的取值范围
  6. 分量: 元组中的一个属性值
  7. 关系模式: 对关系”型”描述 。通常表示为: 关系名(属性1,属性2,…,属性n)

3.笛卡尔积

例如:

元祖: 笛卡尔积中每一个元素交n元祖或元祖
分量: 笛卡尔积元祖(d1,d2,…,dn) 中的每一个值di 叫做一个分量
基数: 每个域中元素的数量的乘积。如上例中,即为2x2x3
笛卡尔积表示方法:

4.关系:

  1. D1xD2x…xDn的子集成为在域D1,D2,…,Dn上的关系,表示为 R (D1,D2,…,Dn)。R为关系名, n:关系的目或度。

  2. 关系中的每个元素是关系中的元祖,通常用t表示。
    5.关系模式

    1. 定义通常简记为R(U) 或R(A1,A2,…,An)
    2. 关系模式是型, 关系式值

6.关系数据库:

1. 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
1. 关系数据库的型称为关系数据库模式。关系数据库的值称为关系数据库。
1. 关系元祖中允许出现空值。空置代表未知的值或不存在的值。一般用关键词NULL表示。

7.码

具体内容参照教材或课程ppt!

2.2关系操作

1.关系代数: 将关系看成元祖的集合,运算从关系的”水平”方向即行的角度来进行
2.表示记号

3.关系操作实例:
并, 提取出R和S各自的元祖,去重后组合在一起

差 R-S=R减去R和S共有的部分

交 R和S共有的部分

笛卡尔积

4.专门的运算符!

​ 1.选择: 从行的角度进行运算:

​ 2.投影: 从列的角度进行运算:

​ 3.连接: 从R和S的广义笛卡尔积RXS中选取满足给定关系的元祖
​ 1.一般连接

​ 2.等值连接:

​ 3.自然连接: 和前两者相比,需要取消重复列

​ 4.外连接: 左外连接,又外连接,外连接

​ 左外连接以左边R为主,结果中包含左表中全部的行,以及右表中所有匹配的行。右外连接相反。
​ 全外连接:自然连接中把舍弃的元祖都保存在结果中,而在其他属性上填空值(NULL)

​ 5.除
​ 像极:

​ 除法:

3.关系数据库语言SQL

3.1 SQL概述

1.SQL结构化查询语言是关系数据库的标准语言。
2.SQL特点: 综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方法、语言简洁易学易用。
3.基本表:独立存在于数据库中的表,是“实表”
4.视图是从一个或几个基本表导出的表,是“虚表”。它本身不存在与数据库中,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中数据变化时,视图中查询出来的数据也随之改变。
5.数据库是逻辑的,存储文件时物理的。数据库的所有信息都保存在存储文件中。
6.索引:索引是根据索引表达式的值进行逻辑排序的一组指针,可以实现对数据的快速访问。是关系数据库的内部实现技术,属于内模式,被存放在存储文件中。

3.2 SQL语言的数据类型

1.数值型:包括整形(bigint、int、smallint、tinyint、bit)、定点实数(numeric、decimal)、浮点数(float、real)。
2.字符型: 包括定长字符串char和变长字符串varchar。
3.Unicode字符型: 包括nchar[(n)]和nvarchar[(n)]两类。
4.文本型: 包括text和ntext两类。
5.日期时间类型: 包括datetime和smalldatetime两类。用户以字符串形式输入日期时间类型数据,系统也以字符串形式输出日期时间类型数据。
例如: 2009-10-10 7:18:18 PM /*12小时格式*/
2009-10-10 19:18:18 /*24小时格式*/
6.二进制数据类型表示为位数据流。

3.3 数据定义

在学习前,先把环境搭一下。
参考文章https://blog.csdn.net/weixin_46081857/article/details/128127425

3.3.1 模式定义

1.定义数据库

CREATE DATABASE <数据库名>

2.使用数据库

USE <数据库名>

3.修改数据库

该语句可以对指定的数据库的数据文件和日志文件等进行修改

ALTER DATABASE <数据库名>

4.删除数据库

DROP DATABASE <数据库名>

3.3.2基本表定义

1.定义基本表

CREATE TABLE <基本表名> 
( <列名> <数据类型> [<列级完整性约束条件>]
{,<列名> <数据类型> [<列级完整性约束条件>]} ...
[,表级完整性约束条件]
)

列级完整性约束,作用范围仅限于该列

NOT NULL 非约束控制:限制列取值不能为空
DEFAULT 指定列的默认值
UNIQUE 唯一性约束:限制列的取值不能重复
CHECK 限制列的取值范围
PRIMARY KEY 主约束:制定本列为主码
FOREIGN KEY 指定本列为引用其他表的外码 [FOREIGN KEY(<外码列名>)] REFERENCE<外表面>(<外表列名>)

表级约束条件,表级完整性约束的作用范围是整个表

UNIQUE、CHECK、PRIMARY KEY、FOREIGN KEY可以用于定义表级完整性约束
NOT NULL、DEFAULT不可以

例:

2.修改基本表

ALTER TABLE <基本表名>
ALTER COLUMN <列名> <新数据类型> [NULL|NOT NULL] --修改已有列
|ADD <列名> <数据类型> [约束] --增加新列
|DROP COLUMN <列名> --删除列
|ADD [CONSTRAINT <约束名>] <约束定义> --添加约束
|DROP CONSTRAINT <约束名> --删除约束

例:

3.删除基本表

DROP TABLE<基本表名>

删除一个表时,表的定义、表中的所有数据以及表的索引、触发器、约束等均被删除

不能删除系统表和有外码约束所参照的表!

3.4数据查询

3.4.1SELECT 语句结构

1.SELECT语句的基本格式如下

SELECT [ALL|DISTINCT] <目标列表达式> 
[, <目标列表达式>]...
FROM <表名或视图名>[, <表名或视图名>]...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]]

例:

SELECT 客户编号,客户姓名,联系电话
FROM CustomerInfo
WHERE 所在省市='江苏南京'

3.4.2 单表查询

查询仅涉及一个表,是一种最简单的查询操作

1.选择列

(1)选择指定列

查询全体学生的学号与姓名

SELECT Sno,Sname FROM Student

(2) 选择表中全部列

查询全体学生的详细记录

SELECT * FROM Student

(3)查询经过计算的值

查询全体学生的姓名及出身年份, Sage为年龄

SELECT Sname,2022-Sage FROM Student
//2列是一个算术表达式

(4)更改结果列标题

查询全体学生的姓名及出生年份,出生年份标题为Sbirth

SELECT Sname,2022-Sage AS Sbirth FROM Student

(5)替换查询结果中的数据

需要使用查询中的CASE表达式

CASE 
WHEN 条件1 THEN 表达式1
WHEN 条件2 THEN 表达式2
...
ELSE 表达式
END

替换查询结果中的数据

SELECT 商品编号,商品名称,价格等级=
CASE
WHEN 单价 IS NULL THEN '尚未定价'
WHEN 单价<20 THEN '低'
WHEN 单价>=20 AND 单价<=50 THEN '中'
WHEN 单价>50 AND 单价<=100 THEN '较高'
ELSE '高'
END
FROM GoodsInfo

(6) 去除重复行

在OrderList表中查询订购了商品的客户编号

SELECT DISTINCT 客户编号 FROM OrderList

查询选修课程的各种成绩

SELECT DISTINCT Cno,Grade FROM SC
2.选择表中的若干元祖

(1)比较大小

常用比较运算符: =,<,>,>=,<=,!= 或 <> , !>, !<, 逻辑运算符 NOT + 比较运算符

查询所有年龄在20岁以下的学生姓名及其年龄

SELECT Sname,Sage FROM Student WHERE Sage<20
SELECT Sname,Sage FROM Student WHERE NOT Sage>=20

(2) 指定范围

使用谓词 BETWEEN … AND … , NOT BETWEEN … AND …

查询年龄在20~23岁之间(包括20岁和23岁)的学生姓名、系别和年龄。

SELECT Sname,Sdept,Sage WHERE Sage BETWEEN 20 AND 23

(3)确定集合

使用谓词 IN<值表> 或 NOT IN <值表>

<值表> : 用, 分隔的一组取值

查询信息系,数学系和计算机学生的姓名和性别

SELECT Sname,Ssex FROM Student WHERE Sdept IN ('IS','MA','CS')

(4)字符串匹配

a.[NOT] LIKE ‘<匹配串>’ [ESCAPE ‘<换码字符>’]

= 可以用来取代LIKE。!=或<>运算符取代NOT LIKE 谓词

b.通配符

%代表任意长度(长度可以为0)字符串

例: a%b, 如ab,asjdlab,acb 都满足该匹配串

_(下划线)代表任意单个字符

例: a_b,如acb,afb都满足该匹配串

1)精确匹配

匹配学号为95001的学生的详细情况

SELECT * FROM Student WHERE Sno LIKE '95001'
SELECT * FROM Student WHERE Sno='95001'

2)模糊匹配

查询所有姓刘学生的姓名、学号和性别

SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE '刘%'

查询姓’欧阳’且全名为三个汉字的学生姓名

SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE '欧阳_'

查询所有不姓刘的学生姓名

SELECT Sname FROM Student WHERE Sname NOT LIKE '刘%'

3)ESCAPE 短语:

当用户要查询的字符串本身就含有%或_时,要使用ESCAPE ‘<换码字符>’ 短语对通配符进行转义

查询DB_Design课程的课程号和学分

SELECT Cno,Ccredit FROM Course WHERE Cname LIKE 'DB\_Design' ESCAPE '\'

查询以”DB_”开头,且倒数第三个字符为i的课程的详细情况

SELECT * FROM Course WHERE Cname LIKE 'DB\_%i__' ESCAPE '\'

(5) 涉及空值的查询

使用IS NULL 或IS NOT NULL

某些学生选修课程后没有参加,所以有选课记录,单没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。

SELECT Sno, Cno FROM SC WHERE Grade IS NULL

(6)多重条件查询

用逻辑运算符AND和OR来联结多个查询条件

AND的优先级高于OR,可以用括号改变优先级

SELECT Sname FROM Student WHERE Sdept='CS' AND Sage<20

查询信息系、数学系和计算机系学生的姓名和性别

SELECT Sname,Ssex FROM Student WHERE Sdept='IS' OR Sdept='MA' OR Sdept='CS'

(7)对查询结果排序

升序:ASC 降序:DESC 默认值为升序(ASC)

ORDER BY <列名1>[ASC|DESC]

SELECT * FROM SC order by Sno desc, Cno//Cno为升序asc

(8)聚合函数

聚合函数是指对集合操作但只返回单个值的函数

查询GoddsInfo表中所有商品的平均单价

SELECT AVG(单价) AS '平均单价' FROM GoodsInfo

查询GoodsInfo表中最高和最低单价

SELECT MAX(单价) AS '最高单价', MIN(单价) AS '最低单价' FROM GoodsInfo

COUNT用于统计组中满足条件的行数或总行数

查询客户总数

SELECT COUNT(*) AS '客户总数' FROM CustomerInfo

(9)对查询结果分组

SELECT语句的GROUP BY子句作用于查询的中间结果表,按某一列或多列值进行分组,值相等的为一组

分组,聚集函数作用于每个分组

不分组,聚集函数作用于整个查询结果

查询各课程的课程的课程号与相应的选修人数

SELECT Cno,count(Sno) from SC group by Cno

(10)使用HAVING子句进行筛选

HAVING子句必须与GROUP BY 子句结合使用

查询平均成绩为90分及以上的各课程的课程号与相应的平均成绩

SELECT Cno,AVG(Grade) FROM SC GROUP BY Cno HAVING AVG(Grade) >= 90

注!

Where子句中不能用聚合函数作为条件表达式, WHERE AVG(Grade) >=90的写法是错误的!

WHERE子句作用于基本表或视图,HAVING短语作用于组

3.4.3 连接查询

同时涉及多个表的查询称为连接查询

连接查询有两种形式: 1. 连接谓词。2.以JOIN关键字指定的连接。

1.连接谓词

用来连接两个表的条件称为连接条件或连接谓词,可用逻辑运算符AND和OR 来连接多个连接谓词

连接字段:连接谓词中的列名称为联结字段

一般格式: <表名1>.列名 <比较运算符> <表名2>.<列名2>

等值连接实例:

查询每个学生及其选课情况

SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=Sc.Sno

查询选修了三号课程且成绩在90分以上所有学生的学号、姓名-复合条件连接

SELECT Student.Sno,Sname from Student,SC where Student.Sno=Sc.Sno and Sc.Cno=3 and SC.Grade>90

在Customer表中查询具有相同姓名的客户信息

SELECT KH1.* FROM CustomerInfo KH1, CustomerInfo KH2 WHERE KH1.客户姓名=KH2.客户姓名 AND KH1.客户编号<>KH2.客户编号
2.以JOIN关键字指定的连接

INNER JOIN-内连接, OUTER JOIN-外连接

a.内连接

内连接按照ON所指定的连接条件合并两个表,返回满足条件的行,一般格式

FROM <表名1> JOIN <表名2> ON <表名1.列名>=<表名2.列名>

例: 查找商品订购数据库每个订购了商品的客户及订单情况

SELECT a.*,b.商品编号,b.订购时间,b.数量,b.需要日期,b.付款方式,b.送货方式 FROM CustomerInfo a INNER JOIN OrderList b ON CustomerInfo.客户编号=OrderList.客户编号

用FROM的JOIN关键字表达下列查询:在商品数据库中查询订购了类别为”体育用品”的客户的客户编号,客户姓名,联系方式以及商品的需要日期

SELECT DISTINCT CustomerInfo.客户编号,客户姓名,联系电话,需要日期 FROM CustomerInfo JOIN GoodsInfo JOIN OrderList ON GoodsInfo.商品编号=OrderList.商品编号 ON CustomerInfo.客户编号 = OrderList.客户编号 WHERE 商品类别 = '体育用品'

b.外连接

外连接的结果表不但包含满足连接条件的行,还包括相应表中的所有行.

外连接包括三种: 左外连接,右外连接,完全外连接

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from Student left (outer) join SC on Student.Sno=SC.Sno
SELECT Stuent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from SC right join Student ON Student.Sno=SC.Sno

3.4.4 嵌套查询

一个SELECT-FROM-WHERE 语句称为一个查询块

将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询

子查询不能用ORDER BY 子句!

SELECT Sname	//外层查询/父查询
FROM Student
WHERE Sno IN
( SELET Sno FROM SC //内层查询/子查询
WHERE Cno='2')

引出子查询的谓词:

  1. 带有IN谓词的子查询
  2. 带有比较运算符的子查询
  3. 带有ALL(SOME) 或ANY谓词的子查询
  4. 带有EXISTS谓词的子查询
1.带有IN谓词的子查询

IN和NOT IN 子查询只能返回一列数据

SELECT * FROM CustomerInfo WHERE 所在省市 IN (SELECT 所在省市 FROM Customer WHERE 客户姓名='张小林')
2.带有比较运算符的子查询
SELECT * FROM OrderList WHERE 商品编号='10010001' AND 数量 > (SELECT AVG(数量) FROM OrderList WHERE 商品编号='10010001')
3.带有ALL(SOME) 或ANY谓词的子查询

ALL指定表达式要与子查询结果集中地每个值都进行比较,当表达式每个值都满足比较关系时,才返回TRUE,否则返回FALSE

ANY与SOME的限制含义相同,通常采用ANY,表示表达式只要与子查询结果集中的某个值满足比较关系式就返回TRUE,否则返回FLASE

查询比某个食品类的商品单价低的商品信息

SELECT * FROM GoodsInfo WHERE 商品类别<>'食品' AND 单价<ANY
(
SELECT 单价 FROM GoodsInfo WHERE 食品类别='食品'
)

ANY在子查询返回结果为NULL时,表达式为FALSE

ALL在子查询返回结果为NULL时,表达式为TRUE

4.带有EXISTS谓词的子查询

EXISTS谓词用于测试子查询的结果是否为空表,若子查询结果集不为空,EXISTS返回TURE,否则返回FALSE

查找订购了编号为”10010001”商品的客户姓名

SELECT 客户姓名 FROM CustomerInfo a WHERE EXISTS (
SELECT * FROM OrderList b WHERE b.客户编号=a.客户编号 AND
b.商品编号='10010001'
)

查询选修了全部课程的学生姓名

SELECT Sname FROM Student WHERE NOT EXISTS 
(
SELECT *
FROM Course
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE Sno=Student.Sno AND
Cno=Course.Cno
)
)

3.4.5集合查询

集合操作主要包括: 并,交,差

1.并

使用UNION或OR

查询计算机科学系的学生及年龄不大于19岁的学生

SELECT * FROM Student WHERE Sdept='CS' 
UNION SELECT * FROM Student WHERE Sage<19
SELECT DISTINCT * FROM Student WHERE Sdept='CS' OR Sage<=19
2.交

使用INTERSECT

查询单价小于50的商品与库存量大于20的商品的交集

SELECT * FROM GoodsInfo WHERE 单价<50
INTERSECT
SELECT * FROM GoodsInfo WHERE 库存量>20
3.差

使用EXCEPT

查询单价小于50的商品与库存量大于20的商品的差集

SELECT * FROM GoodsInfo WHERE 单价<50
EXCEPT
SELECT * FROM GoodsInfo WHERE 库存量>20
4.集合查询排序

ORDER BY 子句只能用于对最终查询结果排序

SELECT * FROM Student WHERE Sdep='CS'
UNION
SELECT * FROM Student WHERE Sage<=19
ORDER BY Sno

3.5数据更新

插入语句:INSERT

两种插入方式:1.插入单个元祖2.插入子查询结果

1.数据插入

1.插入元祖

插入一条选课记录(‘95020’,’1’)

INSERT INTO SC(Sno,Cno) VALUES('95020','1')

2.插入子查询结果

对每一个系,求学生的平均年龄,并把结果存入数据库

/*第一步建表*/
CREATE TABLE Deptage
(
Sdept CHAR(15) PRIMARY KEY, /*系名*/
Avgage SMALLINT /*学生平均年龄*/
)
/*第二步插入数据*/
INSERT INTO Deptage(Sdept,Avgage)
SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept
2.数据修改

将所有学生的年龄增加1岁

UPDATE Student SET Sage=Sage+1

将计算机系全体学生的成绩置零

UPDATE SC SET Grade=0 WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept='CS')
3.数据删除

DELETE删除的是表中的数据,不是表的结构.

DROP删除的不仅是标的内容还有表的定义

删除商品订购数据库的CustomerInfo表中编号为100007的客户信息

DELETE FROM CustomerInfo WHERE 客户编号='100007'
4.索引定义

删除索引: DROP INDEX <基本表名>.<索引名>

DROP INDEX CustomerInfo.CustomerID_ind

3.6视图

1.视图定义

从一个或多个基本表(或视图)导出的表。视图是一个虚表,数据库中值存储视图的定义。

1.创建视图Customer_NJview,其内容为江苏南京的客户信息

CREATE VIEW Customer_NJview
AS
SELECT *
FROM CustomerInfo
WHERE 所在省市='江苏南京'

创建视图OrderList_NJview 其内容为江苏南京的客户编号及其订购的商品编号

CREATE VIEW OrderList_NJview
AS
SELECT a.*,商品编号
FROM CustomerInfo a,OrderList b
WHERE a.所在省市='江苏南京' AND a.客户编号=b.客户编号

创建”江苏南京”订购了编号为10010001商品的所有客户的客户编号、客户姓名视图Order_NJView_2

CREATE VIEW Order_NJView_2(客户编号,客户姓名)
AS
SELECT 客户编号,客户姓名
FROM OrderList_NJview
WHERE 商品编号='10010001'

2.修改视图Order_NJView_2,使其内容是选购了编号为30010001的所有江苏南京客户的客户编号,客户姓名

ALTER VIEW Order_NJView_2
AS
SELECT 客户编号,客户姓名
FROM OrderList_NJView
WHERE 商品编号='30010001'

3.删除视图OrderList_NJView

DROP VIEW OrderList_NJView
2.视图查询

查询视图与查询表相同

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'

在信息系学生视图中找出年龄小于20岁的学生

SELECT Sno,Sage,
FROM IS_Student
WHERE Sage<20
3.视图更新

1.插入数据:INSERT

INSERT INTO CInfo_JS(客户编号,客户姓名,性别,出生日期,所在省市) VALUES('100008','赵平','女','1993-5-19','江苏南京')

2.修改数据:INSERT

UPDATE IS_Student SET Sname='刘晨' WHERE Sno='95002'

3.删除数据:DELETE

DELETE FROM CInfo_JS WHERE 客户编号='100008'

4.为了防止用户通过对视图数据进行更新时,对不属于试图范围内的基本表数据进行操作,可在定义视图时加上WITH CHECK OPTION

CREATE VIEW IS_Student_1
AS
SELECT *
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION

视图更新

4.数据库设计

1.信息系统是提供信息、辅助人们对环境进行控制和进行决策的系统
数据库是信息系统的核心和基础。

2.数据库的设计的目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境,包括:
数据的存储效率,存储空间利用率,系统运行管理效率

3.数据库设计的基本步骤

4.E-R图像关系模式的转换

a. 1:1 联系

例:

b. 1:N联系

c.M:N联系

5.关系规范化理论

实在来不及了,看的这个速成

https://www.bilibili.com/video/BV1Bq4y1Y7GC?p=2&vd_source=3a0549a10a00b9b6b6653658bbdb92b2