数据库期末总结笔记( 零基础 )--数据库安全性与完整性-范式-E-R图

第四章 数据库安全性与完整性

  • 1.三大完整性约束

基本概念:
(1)候选码:一个或一组属性能唯一的标识一个元组,而其子集不能

例:Student表中的学号sno

(2)主码:若有多个候选码,则选其中一个为主码

例:SC表里面学号sno和课程号cno

(3)外键,也称外码:一个表中一个(多个)属性,不是自身的主码且这个属性和另一个表中的主码属性是同一个属性,则这个(组)属性称为外码

在这里插入图片描述

例:Student表中的主键是Sno,
Course表中的主码是课程号,
而Sc表中的主键是sno和课程号cno(两个组合在一起构成主码,由学号和课程号确定成绩,且这两个属性是两个不同表中的同一个属性)

Sc表中的外码是sno和cno(这两个属性是两个不同表中的同一个属性)

  • 2.完整性

(1)实体完整性:主码不能重复,主码不能为空

例:学生表里面学号不能为空,且不能重复

(2)参照完整性:外键不能为空(或者均为空值)。外键等于被参照表的主码值

例:Sc表中的学号sno参照了student表中的sno(且这两个值必须相等),Sc表中的cno参照了course中的cno

(3)用户定义完整性:用户自己定义的完整性约束条件

▲可能出现考题:创建一个表,给出属性以属性的条件,定义主键和外键,而且当你更新或删除与外键有关的另一个表时,这个表是否要级联,拒绝删除、更新

  • 3.基本概念

(1)数据类型
①char(n):长度为n的定长字符串
②varchar(n):最大长度为n的变长字符串
③int:长整数(4字节)
④smallint:短整数(2字节)

(2)定义主键、外键
①主键:primary key(属性1,属性2)

②外键:foreign key (外键)(属性1,属性2) references 被参照表 (主键)两者属性相同

③级联更新/删除: on update/delete cascade

④拒绝更新/删除:on update/delete no action
注:一般③④跟在外键后面

(3)结构
create table 表名
(属性 数据类型[constraint] 定义的约束条件//可省(包括①非空:not null ②唯一:unique)
属性 数据类型[constraint] 定义的约束条件 ③check:自己定义的约束条件 ④定义为主码

primary key(属性1,属性2…)) //定义主键
foreign key(外键属性) references(参照) 被参照表(属性) on update/delete
…)

例:定义SC表中的参照完整性
create table Sc (sno char(9) not null,
cno char(4) not null,
grade smallint,
prinmary key(sno,cno),
foreign key (sno) references student(sno),
foreign key (cno) references student(cno));

外键:Sc表中的学号sno参照了student表中的sno(且这两个值必须相等),Sc表中的cno参照了course中的cno

(4)授权
grant 权限(select) on 对象类型(table,view) 对象名 to 用户 [with grant option] //可省,加上表示可以将这个权限授予其他用户

例:通过角色来实现将一组权限授予一个用户
create role R1;

使用grant语句让R1拥有student表中的select、update、insert权限
grant select ,update,insert on table student to R1;

将这个角色授予王平

grant R1 to 王平;

(5)对权限收回
revoke 权限(如select)on 对象类型(如table,view )to 用户

revoke select on table student from R1;

第六章 范式

  • 1.1NF:关系中的每个属性都是原子,不可再分的,每个关系都要满足1NF (平表不可嵌套)

  • 2.2NF:满足1NF且这张表中不存在属性对主键的部分函数依赖(部分函数依赖指的是依赖于主键的一部分)

例:s(sno,sname,age,cno,grade)
主键(sno,cno) ,成绩由sno,cno共同决定
但sname,age仅由sno就可以决定,即sname,age只依赖于主键的一部分,所以不满足2NF

解决办法:“一事一地“ ,就是一张表只管一件事,拆分原表

把学生表分成学生基本信息和选课表
s(sno,sname,age)
sc(sno,cno,grade)

3.3NF:满足2NF且不存在属性对主键的传递依赖

例:Teacher(Tno ,sal_level,salary)
Tno ---->(决定)sal_level
sal_level—>(决定)salary

将2级工资水平的工资2000改为2级工资水平的工资3000,虽然工号没有变,但是工资额已经变了

老师号决定工资级别,工资级别决定工资多少,这就是典型的传递依赖

解决方案:“一事一地“
将其分为Teacher(T#,sal_level)
level(sal_level,salary)

4.BCNF:要求关系模式中,属性之间的函数依赖关系里面的决定值都必须为主键

例:邮政编码,城市,街道
在这里插入图片描述
城市和街道可以决定邮政编码,可以由邮政编码反过来知道城市和街道;存在这种关系就不是BCNF范式,但它是3NF范式

解决办法:“一事一地“ ,就是一张表只管一件事,拆分原表
在这里插入图片描述


第七章 E-R图

1.基本概念

(1)实体:□(矩形)
(2)属性:椭圆
(3)联系:◇(菱形)

2.画E-R图

3.转换为关系模型

(1)E-R图的实体转为关系(表名)

(2)E-R图的属性转换为关系的属性

(3)联系转换

①联系种类:一对一 1:1、一对多 1:n、多对一 n:1 、多对多n:m
②联系转换方法

a.1:1 两种方法
第一种:将联系转换成一个关系(表),这个关系的属性是两个关系的主码+联系的属性

第二种:将一个关系的主码+联系的属性写到另一个关系中

b.1:n 转换两种方法

第一种:将联系转换成一个关系(表),这个关系的属性是两个关系的主码+联系的属性

第二种:此时是将联系的1:n中1端关系的主码写到n端上

c.n:m

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值