数据库——复习

关系数据库

关系数据库由(table)的集合构成,每个表由唯一的名字。

在关系模型的术语中:
关系指代表,元组指代行,属性指代列,关系实例来表示一个关系的特定实例(一张实际的表),关系模式是一些属性的集合(可以产生关系实例(即实际的表)(参考类与对象的关系))
域:对于关系中的属性,都有一个允许取值的集合。

若域中元素是不可再分的单元,则域是原子的。

超码:一个或多个属性的集合,可以唯一地标识一个元组。

最小的超码定义为:
该超码的任意真子集都无法当作超码,且属性数量不大于其他超码。
候选码:这样最小的超码定义为候选码。

主码:被选中的用来识别一个关系中不同元组的候选码。(随意选)

外码:一个关系模式(a)中的属性中存在属性是另外一个关系模式(b)的主码,则这个属性在a称为参照b的外码。
其中 a叫外码依赖的参照关系,b叫外码依赖的被参照关系。


关系模型的完整性约束

类型:
1.实体完整性规则:在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。(即满足元组唯一)
2.参照完整性规则(引用完整性规则:不引用不存在的实体*)
3.域完整性规则(用户自定义完整性规则:由用户根据实际情况,定义表中属性的取值范围,保证数据有效性)


关系运算

在这里插入图片描述
选择:σ salary>85000(instructor)

from instructor 
where salary>85000;

投影:Π ID,salary(instructor)

select ID,salary 
from instructor;

:Πname(instructor)∪Πname(student)

(select name from instructor) 
union 
(select name from student);

同理的 Except, Intersact

笛卡儿积:instructor Χ department

自然连接:instructor ⋈ department (自然连接属性不从复,元组数更少,连接元组有意义)

自然连接Natural join与迪卡儿积Χ两点最大不同:
1)仅包含符合连接条件的元组
2)连接属性仅出现一次

连接方式

inner join(内连接(默认))
left outer join(左外连接):只保留出现在左外连接运算左边的关系中的元组(未匹配到的元组)
right outer join(右外连接):同理
full outer join(全外连接):左右均保留


通配符

与 SQL LIKE 操作符一起使用,查找数据。

%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]或[!charlist]不在字符列中的任何单一字符

SQL中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。(第三种与第四种)

LIKE’M[^c]%’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

MySQL 、SQLite 只支持 % 和 _ 通配符


ER图转关系模型规则

(1) 一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码
就是关系的码.

(2) 一个1 : 1的联系可以转换为一个独立的关系模式,也可以与任意一端对
应的关系模式合并.如果转换为一个独立的关系模式,则与该联系相连的各实体
的码及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选
键.

(3) 一个l:n联系可以转换为一个独立的关系模式,也可以与任意n端对应
的关系模式合并。如果转换为一个独立模式,则与该联系相连的各实体的码及联
系本身的属性均转换为关系的属性,而关系的码为n端的实体的码。如果与n端
实体对应的关系模式合并,则需要在该关系模式的属性中加入1端关系模式的码
和联系本身的属性。



(4) 一个m:n的联系可以转换为一个独立的关系模式,与该联系相连的各实体
的码及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。






(5) 三个以上实体间的一个多元联系可以转换为一个独立的关系模式,与该联
系相连的各实体的码及联系本身的属性均转换为关系的属性,而关系的码为各实
体码的组合。



S1:处理强实体
建立一个新表T,将所有简单属性(复合属性拆解为简单属性)添加进表,确定主码;
S2:处理1:1的弱实体W
找到其依附的强实体所映射的表T,将弱实体所有简单属性(复合属性拆解为简单属性)
添加进该表;
S3:处理1:N或M:N的弱实体W
建立一个新表T,将W所有简单属性(复合属性拆解为简单属性)添加进T表;
如果是1:N的弱实体,添加W依附的强实体的主码为外码到T表,T表的主码由该外码和W的鉴别器组成;
如果是N:M的弱实体,建立新的具有唯一值的一列为主码;

S4:处理1:1的联系R
确定参与该联系的表S和T,选定全参与的一方S,将另一方T的主码作为外码加入S,将联系R的所有属性(复合属性拆解为简单属性)添加入S;

S5:处理1:N的联系R
确定处于N端的实体S和处于1端的实体T,将T的主码作为外码加入S,将联系R的所有属性(复合属性拆解为简单属性)添加入S:

S6:处理N:M的联系R
建立新表T,将参与该关系的实体的主码作为外码加入T,将联系R的所有属性(复合属性拆解为简单属性)添加入T:

S7:处理多值属性A
建立新表T,将A的所有属性(复合属性拆解为简单属性)添加入T,将A所属的实体或联系的主码作为外码加入T,将该外码和A对应的属性作为T的主码。


关系模式的分解

有的时候为了更好的设计模式,我们往往会将当前的几个关系模式合并为新的关系模式,或者将当前的关系模式分解为新的几个关系模式。

**函数依赖:**函数依赖可形式化表示为: X→Y, 其中 X and Y 是属性集。
如果对于关系实例r中的任意一对元组t1和t2,有t1.X = t2.X 逻辑蕴涵 t1.Y =t2.Y,那么,函数依赖 X→Y在关系r中成立。
即关系r中给定两个元组,如果 X 属性值相等,则 Y 的值也必须相等. (X 和 Y 是属性集)
平凡的函数依赖: X->Y(Y⊆X)

函数依赖的规律:
(增广律): If X → Y, then XZ → YZ for any Z
(传递律): If X → Y and Y → Z, then X → Z
(增补率): If X → Y and Z为一个属性集, then ZX → ZY
(合并率): If X → Y and X → Z ,then X → YZ
(分解率): If X → YZ, then X → Y and X → Z

非主属性:包含在任何一个候选码中的属性成为主属性。除了主属性以外的就是非主属性。

范式

第一范式(1NF): 关系的属性具有原子性
第二范式(2NF): 在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
第三范式(3NF): 在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
巴斯-科德范式(BCNF): 在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)

数据库语言

SQL(Structure Query Language)结构化查询语言
DQL(data query language)数据查询语言:SELECT … FROM … WHERE。
DML(data manipulation language)数据操作语言,主要是数据库增删改三种操作:INSERT、UPDATE、DELETE。
DDL(data defination language)数据库定义语言,主要是建表、删除表、修改表字段等操作:CREATE,DROP,ALTER。
DCL(data control language)数据库控制语言,如commit,revoke之类的,在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL:GRANT、REVOKE。
TCL:事务控制语言。关键字:COMMIT、ROLLBACK、SAVEPOINT。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值