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

  • 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

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

  1. 学习笔记-零基础学习人工智能(0)

    学习笔记-零基础学习人工智能(0) 背景 规划 背景 作为物理专业的大龄青年,由于兴趣爱好想学习下人工智能.主要感兴趣的方向是对抗样本生成.自己也做了一些了解,但是发现千头万绪,不懂的东西太多.为了梳 ...

  2. 数据库期末总结笔记( 零基础 )

    第二章 关系数据库 一.关系代数的五个基本操作 1.选择(δ):把满足条件的基本元组找出来(元组对应行) 分析:题目中出现找条件一般就用选择(学号在一定范围,性别男还是女,年龄在什么范围-) 例:①查 ...

  3. MySQL数据库 学习笔记 零基础入门 面试 整理

    一.MySQL基础篇 1. 数据库技术的基本概念和方法 1.1 数据库基本概念 1] 数据 数据(Data)指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的.抽象的,不仅仅指狭义上的数字,而是 ...

  4. 【Sofice小司笔记】1 关系数据库基础,包含关系数据库设计,索引,事务,安全性,完整性,查询处理优化等

    数据库管理系统 DataBase Management System / DBMS DBMS 是位于用户和操作系统之间的一层数据管理软件.数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复 ...

  5. SQLsever数据库期末复习笔记

    SQL 语法 数据库表 数据库通常包含一个或多个表.每个表都有一个名称(例如"客户"或者"订单").表包含记录(行). 以下是"客户"表的选 ...

  6. 数据库期末总结笔记(零基础)-第三章 关系数据库SQL

    第三章 关系数据库SQL 三.SQL查询 1.基本查询格式 select [distinct] (去重)所查内容 from 所查询的表(可多个)where 要求条件 例:查计算机科学系全体学生 sel ...

  7. 数据库期末总结笔记( 零基础 )-第二章 关系数据库

    第二章 关系数据库 一.关系代数的五个基本操作 1.选择(δ):把满足条件的基本元组找出来(元组对应行) 分析:题目中出现找条件一般就用选择(学号在一定范围,性别男还是女,年龄在什么范围-) 例:①查 ...

  8. 华南农业大学 2021 数据库 期末复习笔记

    CH2 Relational Model 在这里,表即称为关系 table == Relation 关系模式 是对关系的描述,关系模式的逻辑结构就是一张二维表,即table,也即关系relation. ...

  9. 学习笔记 | 零基础平面设计入门

    一.文字排版 文字排版是文本的样式或风格,也是文字运用的艺术. 常见字体的基础知识 衬线体:附加在字母的主要部分,适合传统的项目(印刷出版物:杂志.报纸

最新文章

  1. studio-引入外来包
  2. Linux系统安全工具之NMAP
  3. SpringBoot配置嵌入式Servlet容器
  4. JAVA的JDK环境变量的配置JAVA_HOME;PATH;CLASSHOME
  5. 高可用架构-- MySQL主从复制的配置
  6. 力扣-1791. 找出星型图的中心节点
  7. 总是找不到电脑文件?学会这 3 个 Mac 搜索技巧,一秒就能找到
  8. 剑桥: 一个完美的读书地方
  9. 关闭linux系统命令是什么,linux shutdown关闭系统命令使用介绍
  10. C语言 摄氏度与华氏度转换
  11. mysql 数字正则_mysql 正则
  12. Vue前端技术知识整理
  13. 阿里架构大牛说:JVM从入门到入魔,就是这么简单
  14. google浏览器无法更新_如何更新谷歌浏览器
  15. NYOJ 首字母变大写
  16. 华为鸿蒙和美的,美的与华为鸿蒙合作,为智能家居领域带来更深度的场景与服务...
  17. PID控制及整定算法
  18. 二、TabLayout自定义图片指示器
  19. STM32C8T6小板下载问题
  20. ISO-12233图卡

热门文章

  1. python经典程序实例-Python简单基础小程序的实例代码
  2. python爬虫菜鸟教程-Python爬虫学习100练001
  3. 干货:科大讯飞最新语音识别系统和框架深度剖析
  4. 语音识别中的CTC算法的基本原理解释
  5. 动态定义table每行两列
  6. 在设备上添加项目失败_使用VisualGDB将Keil项目导入VisualStudio
  7. c语言 统计数量用count_C语言编程学习之递归实现汉诺塔图解!还有零基础入门视频~...
  8. Vue中this.$router.replace和this.$router.push的区别
  9. 【java笔记】ArrayList类的使用
  10. android toast 自定义时间,android自定义Toast设定显示时间