数据库学习笔记 | 青训营

360 阅读10分钟

1.绪论

1.1 数据库系统概述:

1.1.1 数据库的4个基本概念
  1. 数据库(DB)是长期储存在计算机内、有组织可共享的大量数据的集合

  2. 数据库管理系统(DBMS)是位于用户和操作系统之间的一层数据管理软件

  3. 数据库管理系统(DBMS)的主要功能:

    • (1)数据定义(DDL)

    • (2)数据组织、存储和管理

    • (3)数据操纵(DML)

    • (4)数据库的事务管理和运行管理

    • (5)数据库的建立和维护

    • (6)其他

      SQL功能动词
      数据查询select
      数据定义create,drop,alter
      数据操纵insert,update,delete
      数据控制grant,revoke
  4. 数据库系统(DBS) 是由 数据库(DB)数据库管理系统(DBMS) 、应用程序和数据库管理员组成的存储、管理数据的系统。

1.1.2 数据管理技术的产生和发展
  • 数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段。
1.1.3 数据库系统的特点
  1. 数据库系统的特点:
  • (1) 数据结构化
  • (2) 数据的共享性高,冗余度低且易扩充
  • (3) 数据独立性高(逻辑独立性、物理独立性)
  • (4) 数据由DBMS统一管理和控制
  1. 物理独立性:指用户的应用程序与数据库中数据的物理存储是相互独立的。

(由 模式/内模式映像 保证)

  1. 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。

(由 外模式/模式映像 保证)

1.2 数据模型:

1.2.1 两类数据模型

image.png

关系模型:独立于计算机软件和DBMS

1.2.3 数据模型的三大组成要素

image.png

1.2.4 常用的数据模型

image.png

1.2.5 层次模型:
  • 类似树,不能表示m:n的关系
  • (1) 有且只有一个结点没有双亲结点,这个结点称为根结点
  • (2) 根结点以外的其他结点有且只有一个双亲结点
1.2.6 网状模型:
  • 类似图,所有关系都可以表示
  • (1) 允许一个以上的结点无双亲
  • (2) 一个结点可以有多于一个的双亲
1.2.7 关系模型:

完整性约束条件:

  • (1) 实体完整性
  • (2) 参照完整性
  • (3) 用户定义完整性

1.3 数据库系统的结构:

1.3.2 数据库系统的三级模式结构
  1. 数据库系统的三级模式结构是指数据库系统是由外模式、模式、和内模式三级构成。
  2. 模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
  3. 外模式:也称子模式或用户模式,是数据库用户能够看见的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。一个数据库可以有多个外模式
  4. 内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。一个数据库只有一个内模式
1.3.3 数据库的二级映像功能与数据独立性
  1. 二级映像功能保证了数据库系统中的数据能够具有较高的逻辑独立性(外模式/模式映像)和物理独立性(模式/内模式映像)。

  2. 外模式/模式映像:

    • 对于每一个外模式,数据库系统都有一个外模式/模式映像(会有多个外模式/模式映像)
    • 保证了数据与程序的逻辑独立性
  3. 模式/内模式映像:

    • 唯一性。
    • 保证了数据与程序的物理独立性

2. 关系数据库

2.1 关系数据结构及形式化定义

2.1.1 关系
  • (1)域:是一组具有相同数据类型的值的集合。
  • (2)候选码:是关系中的某一属性组,能唯一地标识一个元组,而其子集不能
  • (3)主码:若一个关系有多个候选码,则选定其中一个作为主码
  • (4)主属性:候选码的诸属性
  • (5)非主属性(非码属性):不包含在任何候选码中的属性
  • (6)全码:包含了关系模式的所有属性的候选码
  • (7)关系的三种类型:基本关系(基本表)、查询表和视图表
  • (8)关系模式:关系名和属性名的集合
  • (9)关系:关系模式在某一时刻的状态或内容
  • (10)关系模型独立于计算机软件和DBMS模型

2.2 关系操作

2.2.1 基本的关系操作:
  • 选择、投影、并、差、笛卡尔积

2.3 关系的完整性

  • 关系模型中有三类完整性约束:实体完整性、参照完整性、用户定义完整性
2.3.1 实体完整性
  • 基本关系的主属性不能取空值
2.3.2 参照完整性
  • 外码:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码。
  • 外码的值必须或者取空值,或者取另外一个基本关系中的主码值
2.3.3 用户定义完整性
  • 暂无

2.4 关系代数

2.4.1 专门的关系运算符:
  • 专门的关系运算符:选择、投影、连接、除

3.关系数据库标准语言 SQL

3.1 SQL概述

3.1.1 SQL的使用方式
  • (1)交互式SQL
  • (2)嵌入式SQL
3.1.2 SQL的特点:
  • (1)综合统一
  • (2)高度非过程化
  • (3)面向集合
  • (4)以同一种语法结构提供多种使用方式
  • (5)语言简洁
SQL功能动词
数据查询select
数据定义create,drop,alter
数据操纵insert (into, values),update (set),delete (from)
数据控制grant(on, to),revoke (on, to)

3.3 数据定义(DDL)

3.3.1 定义基本表
create table sc
(
    Sno char(9),
    Cno char(4),
    Grade smallint,
    primary key(Sno, Cno),
    foreign key(Sno) references Student(Sno)
);
3.3.2 修改基本表
alter table Student add S_time date;
alter table Student alter column Sage int;
alter table Course add unique(Cname);
3.3.3 删除基本表

若选择restrict (默认情况),则该表的删除是有限制条件的,如果存在依赖该表的对象(约束条件、视图、触发器等)则此表不能删除

drop table Student restrict;

若选择cascade,则删除该表没有限制条件,相关的依赖对象会全部删除

drop table Student cascade;

3.4 数据查询(DQL)

select Sno, Sname
from Student;

<目标列表达式>可以是字符串常量、算术表达式、函数等

select Sname, 'Year of Birth', 2014-age, lower(Sdept)
from Student

消除取值重复的行

select distinct Sno
from sc

字符匹配:

查询姓刘的:

where Sname like '刘%';

查询姓欧阳且全名为三个汉字的

where Sname like '欧阳_';

查询名字中第二个字为阳的

where Sname like '_阳%';

查询所有不姓刘的

where Sname not like '刘%'

转义字符, 查询DB_Design

where Cname like 'DB_Design' escape ''

3.5 数据操纵(DML)

  • 以下皆是对一个或多个元组进行操作,where语句中可以嵌入子查询
3.5.1 插入数据

不标明属性名全部都要插入,没有的要写空值

insert
into Sc
values('5720211333','1', NULL);

标明属性名

insert 
into Sc(sno, cno)
values('5720211333', '1');
3.5.2 修改数据
update student
set age = 22
where sno = '5720211333';
3.5.3 删除数据
delete 
from student
where sno = '5720211333'

3.7视图

3.7.1 定义视图

如果定义视图时加上了with check option 语句,以后对视图进行插入、修改和删除操作时,DBMS会自动加上sdept = 'is'的条件

create view is_student
as
select sno, sname, sage
from student
where sdept = 'is'
[with check option]
3.7.4 视图的作用
  • (1)能够简化用户的操作
  • (2)使用户能以多种角度看待同一数据
  • (3)对重构数据库提供了一定程度的逻辑独立性
  • (4)能够对机密数据提供安全保护
  • (5)适当利用视图可以更清晰地表达查询

4. 数据库安全性

4.1 数据库安全性概述

  • 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
  • 在数据库系统中对存取权限的定义称为 授权 。
  • 存取权限包括两方面的内容,一个是要存取的数据对象 ,另一个是对此数据对象进行操作的类型 。

4.2 数据库安全性控制

4.2.1 数据库安全性控制的常用方法:
  1. 用户身份鉴别
  2. 存取权限控制
  3. 视图保护
  4. 审计
  5. 数据加密
4.2.2 两种存取控制
  • 自主存取控制
  • 强制存取控制
4.2.3 自主存取控制方法

授权

grant select 
on table student
to u1
[with grant option]

回收:

cascade 还会收回该用户赋予其他用户的权限

revoke select
on table student
from u1 [cascade]

对角色的都一样,就是with grant option 改成了 with admin option

4.2.4 保护数据安全性的一般方法是
  • (1) 设置用户标识
  • (2) 存取权限控制

5.数据库完整性

  • 数据库的完整性是指数据的 正确性 和 相容性
  • 在数据库系统中,保证数据及语义正确和有效的功能是完整性控制
  • 数据库管理系统中检查数据是否满足完整性约束条件的机制称为完整性检查
  • 数据库的完整性分为实体完整性、参照完整性、用户定义完整性三类

5.7触发器

  • 触发器按照所触发动作的间隔尺寸可以分为行级触发器和语句级触发器。
  • 在图或视图上执行除了 create 以外的语句都可以激活触发器

6.关系数据理论

  • 关系模式可能存在以下问题:
    (1)数据冗余

    (2)更新异常

    (3)插入异常:应该插入的数据插不进去

    (4)删除异常:不该删除的数据被删除了

  • 设计性能较优的关系模式称为规范化,规范化主要的理论依据是关系规范化理论

  • 规范化过程主要为克服数据库逻辑结构中的插入异常,删除异常以及冗余度大的缺陷。

  • 对于非规范化的模式,经过 使属性域变为简单域 转变为 1NF

    将 1NF 经过 消除非主属性对主关键字的部分依赖 转变为 2NF,

    将 2NF 经过 消除非主属性对主关键字的传递依赖 转变为 3NF。

  • 一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。

6.2 规范化

6.2.1 函数依赖

设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个关系r,r中不存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称 Y函数依赖于X

7.数据库设计

7.1数据库设计的基本步骤

  • (1)需求分析 数据字典
  • (2)概念结构设计 E-R 图
  • (3)逻辑结构设计 设计关系模式
  • (4)物理结构设计
  • (5)数据库实施
  • (6)数据库运行和维护

7.3 概念结构设计

  • E-R 图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突
  • 在数据库的概念设计中,最常用的数据模型是 实体联系模型