数据库技术

目录

数据模型

关系数据库

 Access数据库

SQL基础

关系数据库的设计


数据模型

现实世界中的数据要转换为抽象的数据库数据,需要经过以下阶段:

·数据模型基本可以分为:概念模型(信息模型)、逻辑模型、物理模型

·概念模型 相关术语:

属性:一个实体可以有多个属性

码(键、关键字):在实体型中能够唯一标识一个实体的属性或属性集称为实体的码。

 ·实体形之间的联系

一对一

一对多

多对多(分两个方向,从1出发)

·E-R图是概念模型

E-R图提供了表示实体、属性和联系的方法

图素:
矩形 表示实体
椭圆 表示属性
菱形 表示联系
无向边 + 联系类

 ·逻辑模型

层次模型 联系:一对多(树型结构)

网状模型 联系:多对多 (图/网)

关系模型 联系:一对一、一对多、多对多三种均有(表格)

关系数据库

·关系模型

1. 关系:二维表
2. 属性 :列=字段; 元数(列的个数)
3. 域:值域
4. 元组 :行=记录(标题那行不算)
5. 分量:属性值
  如,( 01001 ,赵乾,女,讲师,计算机, 6000 ) 中“ 01001 ”为一个分量
6. 关系模式 :二维表结构 表名(列名...)
如, T TNo TN Sex Prof Dept Sal
元数:6
元组:5(标题那行不算)
· 关系的性质
列是同质的,每一列中的分量必须来自同一个域且必须是同一类型的数据。
不同的属性可来自同一个域,但不同的属性有不同的名字。
关系中不允许出现相同的元组。关系中的一个元组表示现实世界中的一个实体或一个实体间的联系。
关系中的每个分量必须是不可再分的数据项。
· E-R图和关系模式的转换
1. 一对一联系的转换
规则 :选择一个合适的实体,在其中加入另一实体的码。

关系模式转换步骤:
①分别写出每个实体对应的关系模式: 学生(学号,姓名,性别,系别) 身份证(身份证号,签发机关,有效时间)
②选择其中一个实体,加入另一实体的码 学生(学号,姓名,性别,系别, __________
③得出最终答案 【不唯一】 学生(学号,姓名,性别,系别,身份证号) 身份证(身份证号,签发机关,有效时间)
2. 一对多联系的转换
规则 :在“多”的那端实体中加入“一”的那端实体的码。

 

关系模式转换步骤:
①分别写出每个实体对应的关系模式
班级(班级编号,学院,系别,人数)
学生(学号,姓名,性别,系别)
②在多的那端实体中加入一端实体的码
学生(学号,姓名,性别,系别, ________
③得出最终答案
班级(班级编号,学院,系别,人数)
学生(学号,姓名,性别,系别,班级编号)
3. 多对多联系的转换
规则 :联系也需要转换,码为两个实体的码的 组成

关系模式转换步骤:
①分别写出每个实体对应的关系模式
学生(学号,姓名,性别,系别)
课程(课程编号,课程名称,学分)
②增加联系的关系模式,同时加上两个实体的码
选课( ____________________ ,成绩)
③得出最终答案
学生(学号,姓名,性别,系别)
课程(课程编号,课程名称,学分)
选课(学号,课程编号,成绩)
·关系模型的完整性约束
3 类:实体完整性、参照完整性、用户定义完整性
实体完整性和参照完整性是关系模型 必须 满足的完整性约束条件。
不同的关系数据库系统由于应用环境不同,需要用户自己定义一些特殊的约束条件,即 用户自定义完整性
实体完整性 :指每个关系都必须具有主码,且主码对应的所有属性值均不可为空。
参照完整性:指如果关系R2的外码X与关系R1的主码相对应,则X的每个值或等于R1的主码的某一个值或取空值。
·关系的码
候选码可以有多个,主码只能一个,都可以唯一决定这个表格。
学生( 学号 身份证号 ,姓名,班级编号) 候选码2个 从中任意选一个为主码/主键
班级( 班级编号 ,学院,系别,人数)
选课( 学号,课程编号 ,成绩) 学号和课程编号共同决定 属性集 联合主键
班级编号是学生表的外键(外码)一般用波浪线表示
参照完整性: 约束外键的取值范围 值应该在主键里选。
实体完整性:约束的是 主键 不能空着也不能重复
用户定义完整性:看用户自定义的值域
学号  课号   成绩
01     yw01   98
01     sx02    98
02     yw01   97
候选码里的属性都是主属性
· 关系代数
1、传统的集合运算

 交

广义笛卡尔积

3列2行   4列3行

列数相加,行数相乘

列:3+4

行:2*3

R m列 x行

S n列 y行

R*S=m+n列,x*y行

1. 2022 · 高 中 ) 已 知 R ={a1 ,a2 ,a3 } S ={1,2} T =R × S 。 那 T 关 系 中 的 元 组 数为
( )。
A. 2 B. 3 C. 5 D. 6

元组 行和行间做乘法

D

并集会变多,交集变少。

2、专门的代数运算

投影和选择都针对一个表。

选择 【根据条件得到

 投影 【根据条件得到

 

连接

①等值连接

 

 

②自然连接(特殊等值连接)
规则 :①两表有相同的属性 ②结果(字段 - 相同属性列只保留一列)(记录 - 相同属性做等值连接)

默认相同属性做等值连接 结果去掉重复的一个

2022 · 初中) 在关系代数中,从两个关系的笛卡尔积选取它们属性间满足一定条件元组
的操作称为( )。
A. 投影
B. 选择
C. 自然连接
D. 等值连接

D

投影(列)和选择(行)针对一个表

选取属性间满足一定条件元组    最终结果要和笛卡尔积中的元组个数一样

自然连接:(在等值连接的基础上去掉重复的)相同属性(列)做等值连接+去掉重复 

 Access数据库

·数据类型和字段属性

1、数据类型

文本 255

备注 

数字 字段大小可以设置为1、2、4、8、16

日期时间

货币 计算时禁止四舍五入

自动编号 一个表只能由一个自动编号字段

是/否

OLE文件 通常用附件字段代替OLE对象字段 它不允许将多个文件附加到一条记录中

超链接

附件

2、字段属性

字段大小

格式 控制数据显示或打印的格式

输入掩码

默认值 添加新记录时,自动加入字段中的值

有效性规则  设置限定该字段所能

有效性文本  当数据不符合有效性规则时所显示的信息

必须 设置该字段是否必须填入数据

允许空字符串

文本对齐

小数位数

数据表之间的联系

表格是逻辑模型是由概念模型(E-R图)转换过来

 两个🔑  SNo和CNo共同组成的主键

创建查询

宏观(可视化)

 条件查询

考试一般考Access

SOL中 下划线 =一个 %=多个

【例 3-1 】查询考试 成绩区间在[75,80] 之间的学生的 学号、姓名、课号和成绩 ,并按
成绩降序 排列。

 也可以用 between 75 and 80

 因为CNo这一列是文本 所以要加”“

分组查询

 男 女 按性别分组

数学号的个数 学号不会重复

性别 个数 年龄 显示出来

D

SQL基础

·数据定义

1、创建数据表

CREATE TABLE S 

(

SNo varchar(6)  PRIMARY KEY,

SN  varchar(10) NOT NULL,

Age int

)

常用约束类型:

NOT NULL

UNIQUE 取值唯一

PRIMARY KEY 约束 用于定义数据表中的主码,起到唯一标识的作用,其值不可为空。

当表的主码由多个列组成时:
PRIMARY KEY(SNo,CNo)

2、修改数据表

ALTER TABLE

①增加列

ALTER TABLE S

ADD

ClassNo varchar(6)NOT NULL

②删除列

ALTER TABLE S

DROP COLUMN ClassNo

③修改列

将学生表S中的属性SN加宽到12个字符

ALTER TABLE S

ALTER COLUMN

SN varchar(12) NOT NULL

④删除数据表

DROP TABLE SC

3、数据操纵

①插入数据

INSERT INTO S VALUES('11001','冯明','男','计算机',18)

②修改数据

将学生冯明转入自动化系

UPDATE S

SET Dept=‘自动化’

WHERE SN='冯明'

3、删除数据

DELETE FROM S

WHERE SN='冯明'

单表查询

格式:

SELECT [ALL|DISTINCT] < 列名 > [ AS < 列别名 >]
FROM < 表名 >
[WHERE < 条件 1>]
[GROUP BY < 列名 1> [HAVING < 条件 2>] ]
[ORDER BY < 列名 2> [ASC|DESC]]
说明:
DISTINCT 代表在结果中,去除重复值
②若查询全部列, < 列名 > 可以用 * 代替
③可以通过 AS 给列名和表起别名
GROUP BY 进行分组, HAVING 根据条件进行分组
ORDER BY 进行排序; ASC 升序(可省)、 DESC 降序

条件查询

SELECT [ALL|DISTINCT] < 列名 > [ AS < 列别名 >]
FROM < 表名 >
WHERE < 条件 1>
说明:
①若查询全部列, < 列名 > 可以用 * 代替
②查询条件及运算符对应表格
【例 8-2 】从选课表 SC 中查询选修了课程“ C0201” 并且
成绩高于 80 分的学生的学号与成绩。
*************************************************
SELECT SNo, Grade
FROM SC
WHERE CNo='C0201' AND Grade>80

BETWEEN AND 是闭区间

【例 8-3 】从学生表 S 中查询年龄在 [16,19] 之间的学生
学号、姓名和年龄。
*************************************************
SELECT SNo, SN, Age
FROM S
WHERE Age BETWEEN 16 AND 19
也可以 用Age>=16 And Age<=19
【例 8-5 】从课程表 C 中查询课号以“ C ”开头的的所有
课号及课程名 。
*************************************************
SELECT Cno, CN
FROM C
WHERE CNo like 'C*'
聚集函数
AVG
SUM
MAX
MIN
COUNT(*) 统计元组个数
【例 9 】从学生表 S 中查询计算机系学生的人数,以及这
些学生年龄的总和及平均值 。
*************************************************
SELECT COUNT(*) As 个数, SUM(Age) As 年龄和, AVG(Age) As 平均年龄
FROM S
WHERE Dept=' 计算机 ';
分组查询
SELECT [ALL|DISTINCT] < 列名 > [ AS < 列别名 >]
FROM < 表名 >
[ WHERE < 条件 1> ]
GROUP BY < 列名 1>
[ HAVING < 条件 2> ]
说明:
GROUP BY 进行分组
②分组之 有条件进行过滤,用 WHERE
③分组之 有条件进行过滤,用 HAVING

 学号  课号 成绩

01     yw   98

01     sx    98

01      yy   70

02      yw    -

02      yy   77

03      sx    -

把01、02、03的同学筛选出来后 再选出其中选修两门以及上课程的同学

 排序查询

SELECT [ALL|DISTINCT] < 列名 > [ AS < 列别名 >]
FROM < 表名 >
[WHERE < 条件 1>]
ORDER BY < 列名 2> [ASC|DESC]
说明:
ORDER BY 进行排序;
ASC 升序(可省)、 DESC 降序
【例 11 】从学生表 S 中查询学生的学号、姓名和年龄,并
按年龄降序排列 。
*************************************************
SELECT SNo, SN, Age
FROM S
ORDER BY Age DESC;

 C

多表查询p239

关系数据库的设计

21年考过一次

学号——>姓名        学号是一个学生的主键可以决定姓名

(学号,课号)——>成绩  不能拆开

学号——>系号——>系主任  所以学号——>系主任

候选码的求解

关系模式 
R表名 
A,B,C,D 列
四类:L类、R类、LR类、N类
UL:所有L类的集合
UR:所有R类的集合
UB=U-UL-UR
B的闭包:B+=BD(B能决定B,能决定D)
A:L类
B:LR类
【例 1 】设有 R A B C D ),它的函数依赖集
F={D → B B → D AD → B AC → D} ,求
R 的候选码。
A:L
B:LR
C:L
D:LR
UL=AC,UR=空集,UB=BD
UL+=AC+=ACDB=U
AC是唯一的候选码
【例 2 】设有 R A B C D ),它的函数依
赖集 F={AB → C D → B C → A C→D} ,求 R
的候选码。

A:LR

B:LR

C:LR

D:LR

①UL=空集,UR=空集,UB=ABCD

②UL+=空集

A+=A  B+=B C+=CADB=U  所以C为候选码 D+=DB

因为候选码中还未包含全部非R(ABCD)属性 所以还得组合

所有带C的组合也不可以

AB+=ABCD=U  所以AB也为候选码    AD+=ADBC=U 所以AD也为候选码

一个关系里候选码可以有多个  因为候选码中包含全部非R属性 所以停止组合

2021 · 高中)关系模式 R A B C D E ),
根据语义有如下函数依赖集: F={A→C BC→D
CD→A AB→E} 。关系模式 R 的规范化程度最高达到
( )。

A:LR

B:UL

C:LR

D:LR

E:LR

①UL=B UR=E UB=ACD

UL+=B+=B  ×

③BA+=BACED=U   BA

BC+=BCDAE=U   BC

BD+=BD ×

接着拿B和ACD两两组合

BAC 

BAD

BCD

有BA BC都去掉

所以候选码为 BA BC

范式 向下兼容

BC范式(主属性不依赖于非主属性):

不允许非主属性在左边,主属性在右边。

主属性:A、B、C

非主属性:D、E

因为CD决定A 存在这种情况 所以不是BC范式

候选码可以唯一决定其它

AB可以决定D AB可以决定E BC可以决定D BC决定E

找不到AB决定xx xx决定D 所以不传递依赖

同理BC也是

所以是3NF

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值