实体-联系模型

基本概念

实体和属性

实体是客观存在并且可以相互区分的任何事物

属性是实体所代表事物具有的某种特性

每个属性都有一定的取值范围,成为该属性的值域

实体集和码

实体集是具有相同属性的实体的集合

实体的值是该实体诸属性值的列表

实体集的值是该实体集中所有实体值的集合

其值可以唯一确定实体集中每个实体的属性集称为该实体集的超码

那些其真子集都不是超码的极小超码称为候选码

主码是数据库设计者选中的,是用来区分同一实体集中不同实体的候选码

属性分类

属性大部分都是简单的不能划分成更小的结构、单值的只能取单个值、基本的不能由其他属性推导出

复合属性与简单属性对应是可以划分成更小部分的属性

多值属性对应单值属性是特定的实体在该属性上可以取多个值的属性

派生属性对应基本属性的值可以从其他相关属性或实体计算得到,因此又称为计算属性

联系与联系集

联系是多个实体之间的相互关系

联系集是相同的类型联系的集合

实体在联系中的作用称为实体的角色

联系的类型

联系的类型又称为联系的函数性或映射函数

一对一联系E2与E1中的每个实体最多与另一个实体集中的一个相互关联

一对多联系(1:n联系)

多对一联系(n:1联系)

多对多联系(m:n联系)

实体集与参与类型

如果实体集中的每个实体都必须参与联系R,则称实体集对联系R的参与是强制的,或全部参与,否则是随意的,或部分参与

联系的属性

联系也可以包含属性,这种情况多出现在多对多联系中

实体联系图

实体-联系模型用实体-联系图(E-R图)对现实世界建立概念模型

E-R图包含如下成分

椭圆表示属性,属性写在框内

矩形表示实体集,实体集名写在框内

菱形框表示联系,联系名写在框内

弱实体集

一般地,如果一个实体集的任何属性集都不足以形成该实体集的码,则称该实体集为弱实体集,相反的,存在码的实体集称为强实体集

每个弱实体必须存在依赖于一个强实体

弱实体集必须与另一个称为标识实体集或属主实体集的强实体集相关联才有意义

将弱实体集与其标识实体集相关联的联系称为标识性联系

分辨符、部分码

关系数据模型

关系数据库结构

关系

域是具有相同类型的值的集合,域中的元素个数为该域的基数,记作|D|

n个域的笛卡尔集的每个元素称为一个n-元组(简称元组),第i个元素为第i个分量

基数为|D1| * |D2| * ... * |Dn|

域上的关系是笛卡尔积的任意字集

在关系数据库中,关系通常用关系名命名,并被看作一个二维表

表的每一列对应于一个分量。列通常是命名的,称为属性

表的第一行是表头,给出各列的属性名

关系的每一个属性都必须是原子的

关系模式

粗略的说,关系模式概念对应于程序设计语言中的类型概念,它是型,定义关系的结构

我们把关系模式简记为R(A1,A2,...,An)R是关系名,A是属性名

关系的型用关系模式刻画,关系的值即关系在某一时刻的快照,又称为关系实例

关系数据库模式由若干域的定义和一组定义在这些域上的关系模式组成

关系数据库的值就是这些关系模式对应的关系在某一时刻的值

关系的码

主码用于表示由多个码中选出的作为唯一识别关系元组的码,而所有的码又称候选码。码中的属性称为主属性,不在任何码中的属性称为非主属性

从E-R数据库到关系模型

基本E-R图的转换

属性处理

派生属性:忽略

复合属性:忽略复合属性本省,直接考虑它的成分属性

多值属性:

如果多值属性m是实体集E的属性,k是E的主码,则关系Rm的属性由m和K组成

多主码时由m和K1、K2...Kn组成

将基本E-R图转换成关系模式

每个强实体集用一个关系表示

每个弱实体集用一个关系表示

每个集合用一个关系表示,但是若实体集于其标识实体集之间的存在依赖联系将被忽略

如果两个关系具有相同的码,则可以合并它们

关系数据库标准语言SQL

SQL语言的特点

集多数数据库语言于一身

高度非过程化

面向集合的操作方式

一种语法两种使用方式

功能强大,语言简洁

数据定义

SQl的数据类型

CHAR(n) VAECHAR(n) BIT(n) BIT VARYING(n) INT SMALLINT NUMERIC(p,d) DEC(p,d) FLOAT(n) REAL DATA TIME

定义、修改和删除基本表

1.创建基本表

CEARTE TABLE Teachers

(Tno CHAR(7) PRIMARY KEY,

Tname CHAR(10) NOT NULL,

Sex CHAR(2) CHECK (Sex='男' or Sex='女'),

Birthday DATE,

Title CHAR(6),

Dno CHAR(4),

FOREIGN KEY(Dno) REFERENCES Departments(Dno));

2.修改基本表

使用 ALTER TABLE语句修改基本表

向基本表中添加列:

ALTER TABLE <> ADD []<>

对于已存在的列修改缺省值:

ALTER TABLE Student ALTER Sex DEFAULT '女';

ALTER TABLE Student ALTER Sex DROP DEFAULT;

删除已存在的列

ALTER TABLE Courses DROP Pno

3.删除基本表

DROP TABLE {CASCADE|RESTRICT}

建立和删除索引

CREATE [UNIQUE][CLUSTER] INDEX

DROP INDEX

模式定义和删除

CREATE SCHEMA Supply_schema AUTHORRIZATION wangqiang;

DROP SCHEMA CASCADE|RESTRICT

数据查询

select语句的一般形式

SELECT Cno,Cname,Period,Credit FROM Courses;

SELECT * FROM Courses;

SELECT 2016-year(Birthday) AS Age FROM Students;

SELECT DISTINCT 2016-year(Birthday) Age FROM Students;

SELECT Tname,Sex FROM Teachers WHERE Grade<60;

SELECT DISTINCT Sno FROM SC WHERE Grade<60;

SELECT Sname, Speciality FROM Students WHERE year(Birthday) BETWEEN 187 AND 1990;

SELECT Sname, Speciality FROM Students WHERE year(Birthday) NOT BETWEEN 187 AND 1990;

SELECT Sno,Sname FROM WHERE Speciality IN ('软件工程','计算机科学与技术');

SELECT Sno,Sname FROM WHERE Speciality NOT IN ('软件工程','计算机科学与技术');

SELECT Cname FROM Courses WHERE Cname LIKE '数据%'

SELECT Sno,Sname FROM Students WHERE LIKE '李__'

SELECT * FROM Courses WHERE Cname LIKE 'C_%' ESCAPE '';ESCAPE定义\为转义字符

SELECT * FROM SC WHERE Grade IS NULL;

排序和分组

将查询结果排序:

ORDER BY [ASC|DESC]{,[ASC|DESC]}

聚集函数

SELECT COUNT(*) FROM SC WHERE Cno='CS302';

SELECT MIN(Grade),AVG(Grade),MAX(Grade) FROM SC WHERE Cno='CS302';

分组

SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;

SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>85;

连接查询

SELECT Cname,Grade FROM SC,Course WHERE SC.Cno=Courses.Cno AND Sno = '200605098';

SELECT Cname,Grade FROM SC,Course WHERE SC.Cno=Courses.Cno AND Cno='CS202' AND Grade>90;

SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Students.Sno=SC.Sno AND SC.Cno=Course.Cno;

嵌套查询

IN引出的子查询

SELECT Sno,Sname FROM Students WHERE Sex = '女' AND Speciality IN (

SELECT Speciality FROM Students WHERE Sname ='王丽丽'

);

集合的比较引出的子查询

SELECT Sno,Sname,Speciality,Birthday FROM Students WHERE Speciality <> '软件工程' AND Birthday > ALL(

SELECT Birthday FROM Students WHERE Speciality = '软件工程'

);

存在量词引出的子查询

SELECT Sno,Sname FROM Students S WHERE EXISTS (

SELECT * FROM SC WHERE Sno=S.Sno AND Cno = 'CS403');

数据更新

插入单个元组

INSERT INTO Students VALUES(......);

INSERT INTO Students(......) VALUES(......);

插入查询结果

INSERT INTO Cardinf(Card-no,Name,Balance) SELECT Tno,Tname,100.00 FROM Teachers WHERE Dno ='IE';

删除

DELETE FROM Students WHERE Sno ='98757';

DELETE FROM Students;删除所有记录

DELETE FROM SC WHERE Sno IN (

SELECT Sno FROM Students WHERE Speciality = '计算机软件于理论');

修改

UPDATE Teachers SET Title = '副教授' WHERE Tno='B050041';

UPDATE SC SET Grade = Grade + 5 WHERE Grade < 60 AND Cno IN (

SELECT Cno FROM Courses WHERE Cname='软件工程');

视图

定义视图和删除视图

定义视图

CREATE VIEW SE_Students AS SELECT Sno,Sname,Sex,Birthday,Dno FROM Students WHERE Speciality = '软件工程' WITH CHECK OPTION;表示该视图是可更新的

CREATE VIEW Student_Grade(Sno,Sname,Cname,Grade) AS SELECT S.Sno,Sname,Cname,Grade FROM Students S,SC,Courses C WHERE S.Sno=C.Sno AND C.Cno= SC.cno;

删除视图

DROP VIEW [CASCADE|RESTRICT]

基于视图的查询

视图是命名的导出表,从用户角度讲,查询时使用视图与使用基本表并无区别

基于视图的更新

所有视图都是直接或间接由基本表定义的。基于视图的更新最终要转换成对定义视图的基本表的更新。并不是所有视图都可以更新。(●'◡'●)

视图的作用

使用视图可以使一些查询表达更加简洁

视图提供了一定程度的逻辑独立性

视图的安全保护作用

视图使得用户能够以不同角度看待相同的数据

完整性与安全性

完整性概述

数据库的完整性是指数据库中的数据的正确性、一致性和相容性。数据库中的数据要成为有意义的信息,必须满足一定的语义约束条件。

约束分类

类型(域)约束:说明给定类型的合法取值

属性约束:说明属性的合法值

关系约束:说明关系的合法取值

数据库约束:说明数据库的合法取值,通常涉及多个关系

实体完整性是一种关系约束,参照完整性是一种数据库约束,而用户定义的完整性可以是上述四种约束的任何一种

静态约束是关于数据库正确状态的约束

动态约束是数据库从一种正确状态转移到另一种状态的约束

DBMS对完整性的支持

说明和定义完整性约束条件的方法

完整性检查机制

违约处理

实体完整性和参照完整性

实体完整性

每个关系应该有一个主码,每个元组的主码值唯一确定该元组

主码的任何属性都不能取空值

参照完整性

1.参照完整性与E-R模型

如果是由E-R图得到的,则由联系集转换得到的每一个关系都存在参照完整性

如果来源是弱实体集,包含外码,外码不能取空值

2.违反参照完整性的更新

3.保证参照完整性的措施

拒绝

级连

SQL中的参照完整性

SQL支持参照完整性。

用户定义完整性

属性约束

属性上的约束是指属性的取值必须来自其定义的值域

关系约束

关系约束说明关系的合法取值,常常涉及多个同一关系的多个属性和/或多个属性元组(否则可以看作属性约束)

断言与数据库约束

断言是一种命名约束,它表达了数据库状态必须满足的逻辑条件。

触发器

触发器是特殊类型的储存过程,当某个事件发生时它被自动执行

指明什么事件发生和满足什么条件执行触发器

指明触发器执行什么样的动作

SQL中的触发器

CREATE TRIGGER OverdraftTrigger

AFTER UPDATE OF Balance ON Account

REFERENCING NEW ROW AS nrow

FOR EACH ROW

WHEN(nrow.balance<0)

BEGIN ATOMIC

INSERT INTO Loan VALUEA(......);

END

安全性概述

数据库安全保护的多层面

物理层

人际层

网络层

数据库系统层

操作系统层

数据库安全保护的任务

未经授权读区数据(窃取信息)

未经授权修改数据

未经授权删除数据

保护数据设计以下几个任务

防止对数据的未经过授权的存取,确保敏感信息没有被不“需要知道”这些信息的人访问的到

防止未经过授权的人员删除和修改数据

监视对数据的访问和更改等使用情况

SQL的授权

授权与收回

授权语句

GRANT SELECT ON Students TO PUBLIC;

GRANT ALL PRIVILEGES ON Students TO U1;

GRANT ALL PRIVILEGES ON Students,Courses TO U1,U2 WITH GRANT OPTION;

GRANT INSERT,UPDATE(Grade) ON TABLE SC TO U3;

收回权限

REVOKE ON FROM {CASCADE|RESTRICT}

SQL对角色的支持

创建角色和角色授权

CREATE ROLE

GRANT ALL PRIVILEGES ON Account,Loan,Depositor,Borrower TO Teller;

使用角色授权

GRANT TO

GRANT Manager TO niuxianghui WITH ADMIN OPTION;

收回授予角色的权限

可以像从用户回收权限一样,使用REVOKE语句回收授予角色的授权

收回角色

REVOKE FROM {CASCADE|RESTRICT}

其他安全措施

审计技术

数据加密

关系数据库的设计理论

计算机 数据库知识点,数据库知识点总结相关推荐

  1. 全国计算机等级考试四级数据库易错知识点

    自己做题的一些易错点收纳,红色的是错两次以上的知识点 数据库原理: 两个关系代数表达式相等的条件是 产生的结果有相同的属性集:2.相同的元组集 两个调度等价有3个条件,1.读同样的值:2.readTj ...

  2. 全国OSTA计算机高新技术SQLSever数据库四级证书--考证复习知识点集合(附下载地址)

    全国OSTA计算机高新技术SQLSever四级证书 说明:没找到一样的图.但长就是长这样的.分享给即将考证的朋友们!适合临场考试复习整理思路理顺!有其他点问题欢迎提出!谢谢!祝逢考必过!(文末有文档下 ...

  3. 计算机三级(数据库)备考题目知识点总结

    计算机三级(数据库)备考题目知识点总结 刷题所遇到的知识点总结 考后总结 刷题所遇到的知识点总结 以下都是我在刷题时遇到的常考的知识点,供复习时做参考. 1.DBAS需求分析阶段的一项重要工作是分析D ...

  4. 全国计算机等级三级数据库技术知识点

    第一次用xmind做思维导图,然后做出来的图太大了转成了大纲模式,将就看吧 第 1 章 数据库应用系统开发方法      1.1 数据库应用系统生命周期          1.1.1 软件工程与软件开 ...

  5. 计算机三级数据库技术备考知识点总结:第1~3章

    (黑色为普通内容,蓝色备注,红色重点) 第一章 数据库应用系统开发方法 数据库系统 DBS 主要提供应用数据的组织.存储.维护.访问等数据管理功能,数据库应用系统 DBAS 不仅为用户提供数据管理功能 ...

  6. 管理mysql表知识点,数据库知识点整理(全)

    <数据库知识点整理(全)>由会员分享,可在线阅读,更多相关<数据库知识点整理(全)(12页珍藏版)>请在人人文库网上搜索. 1.UNIT 1四个基本概念1.数据(Data):数 ...

  7. 数据库期末复习知识点:(仅供参考)

    数据库期末复习知识点: 一运用SQL 基本sql语句 授权sql语句: 实体完整性sql语句: 二 ER 画出ER图,并转换成关系模式. 三.范式 范式 存储结构 一运用SQL 基本sql语句 (1) ...

  8. 【数据库E-R图知识点和相关习题(复试真题)】

    文章目录 数据库E-R图知识点和相关习题 E-R图的前置知识 习题 工厂物资管理系统(例题) 防疫管理系统(2021) 社区隔离人员管理系统(2020A) 在线教学管理系统(2020B) 餐厅管理系统 ...

  9. 数据库JDBC(知识点整理)

    文章目录 Mysql数据库表引擎与字符集 1.服务器处理客户端请求 2.存储引擎 MyISAM和InnoDB表引擎的区别 字符集和乱码 MySQL中的utf8和utf8mb4 数据库基础 简介 常见的 ...

  10. 数据库期末考试知识点复习(1~7章)

    数据库总复习 绪论 1.1数据库系统概述 1.1.1数据库的四个基本概念 数据:数据是数据库中存储的基本对象. 定义:描述事物的符号记录称为数据: 数据的含义称为数据的语义,数据与其语义是不可分的. ...

最新文章

  1. ERP系统管理员的工具箱 推荐几款优秀的数据比较同步工具 Data Compare and Sync tool...
  2. w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)
  3. aws iam 架构图_使用IAM保护您的AWS基础架构
  4. bson json c语言,对比平台--JSON和BSON之间的区别
  5. 综述 | 卷积神经网络表征可视化研究
  6. 编译安装android7.0,android7.0 源码编译问题总结
  7. SPOJ8791 DYNALCA LCT
  8. 手把手教你进行R语言的安装及安装过程中相关问题解决方案
  9. 快递小哥逆袭自传:用了6年时间做到了IT部门主管
  10. Zabbix Server 5.2安装教程
  11. java学习第114天,p699-706(05/12),完成QQ群发
  12. 【网络通讯开发系列】如何使用C语言编程通过UDP通讯解析域名
  13. bloomFilter和哈希函数murmur3
  14. 35岁了 软件测试我还可以做多久,往后我怎么发展
  15. Vue 3.0 这个迷人的小妖精,到底好在哪里?
  16. nuxt.js实战asyncdata服务端渲染
  17. linux c查看子进程,Linux 如何查看进程和控制进程
  18. 野人学Android基础篇之初探UI控件第一课--TextView动态赋值
  19. Python自带的服务器
  20. FlexE( Flex Ethernet灵活以太网)

热门文章

  1. C语言——反弹球游戏(第二阶段
  2. JVM学习笔记(一):Java内存区域
  3. php 原生文件下载
  4. 数据同步 rsync+notify架构
  5. 修改vim中的tab为4个空格
  6. Android如何在测试程序中删除被测应用私有的原始数据
  7. C#面向对象设计模式第九讲:Composite 组合模式(结构型模式)
  8. 使用URI设计松散耦合的Metro应用程序
  9. PHP从零开始--基础篇
  10. tracert路由检测命令使用方法