第1章 绪论

1.1 数据库系统概述

基本概念

数据:描述事物的符号记录

数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合

数据库系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator,DBA)组成的存储、管理、处理和维护数据的系统

 

数据独立性包括物理独立性和逻辑独立性

物理独立性:指用户的应用程序与数据库中数据的物理存储是相互独立的

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

 

1.2 概念模型

1.2.1 基本概念

实体(entity):客观存在并可相互区别的事物

属性(attribute):实体所具有的某一特性

码(key):唯一标识实体的属性集

实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体。例如学生(学号,姓名,性别,出生年月日,所在院系,入学时间)就是一个实体型

实体集(entity set):同一类型实体的集合。例如,全体学生就是一个实体集

联系(relationship):实体之间的联系通常是指不同实体集之间的联系,实体之间的联系有一对一、一对多和多对多等多种类型

 

1.2.2 层次模型

类似于树结构

(1)只有一个根节点

(2)不存在多对一关系,可以有一对一、一对多

 

1.2.3 网状模型

(1)允许一个以上的结点无双亲

(2)可以有多对多

 

1.2.4 关系模型

关系数据库系统采用关系模型作为数据的组织方式

基本概念:

关系(ralation):一个关系对应通常说的一张表

元组(tuple):表中的一行即为一个元组

属性(attribute):表中的一列即为一个属性,给每一个属性起一个名称即为属性名

码(key):表中的某个属性组,它可以唯一确定一个元组

域(domain):域是一组具有相同数据类型的值的集合。即某个属性的取值范围

分量:元组中的一个属性值

关系模式:对关系的描述,一般表示为

关系名(属性1,属性2,···,属性n)

 

1.3 数据库系统的结构

 

1.模式(schema)

模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图

2.外模式(external schema)

它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述

3.内模式(internal schema)

一个数据库只有一个内模式。它是数据物理结构和存储方式的描述

 

第2章 关系数据库

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

基本概念:

候选码:某一属性组的值能唯一地标识一个元组,而其自己不能,则称该属性组为候选码(candidate key)

主码:若一个关系有多个候选码,则选定其中一个为主码(primary key)

主属性(prime attribute):候选码的诸属性称为(主属性)

非主属性:不包含在任何候选码中的属性

全码(all key):关系模式的所有属性是这个关系模式的候选码

 

2.2 关系的完整性

2.2.1 实体完整性

若属性A是基本关系的主属性,则A不能取空值

2.2.2 参照完整性

2.3 关系代数

1.选择(selection)

选择是在关系R中选择满足给定条件的诸元组,记作

δF(R) = {t|t∈R∩F(t)=\’真\’}

其中F表示选择条件,它是一个逻辑表达式

例如:查询信息系(IS系)的学生

δSdept=\’IS\’(Student)

2.投影(projection)

关系R上的投影是从R中选择出若干属性列组成新的关系,记作

A(R) = {t[A]|t∈R}

其中A为R中的属性列

例如:查询学生的姓名和所在系

Sname,Sdept(Student)

 

3.连接

其中,A和B分别为R和S上列数相等且可比的属性组,θ是比较运算符

 

  • 等值连接:θ为“=”的连接运算
  • 自然连接:是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉
  • 悬浮元组(dangling tuple):因为公共属性组不相等被舍弃的元组
  • 外连接(outer join):把悬浮元组保存在结果关系中
  • 左外连接(left outer join或left join):只保留左边关系R中的悬浮元组
  • 右外连接(right outer join或right join):只保留右边关系S中的悬浮元组

 

第3章 关系数据标准语言SQL

3.1 数据定义

3.1.1 模式

1.定义模式

CREATE SCHEMA<模式名> AUTHORIZATION<用户名>

 

2.删除模式

DROP SCHEMA<模式名><CASCADE|RESTRICT>

 

3.1.2 表

1.定义基本表

CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]

           [,<列名><数据类型>[列级完整性约束条件]]

           ···

           [,<表级完整性约束条件>]);

例如:

2.修改基本表

ALTER TBALE<表名>

[ADD [COLUMN]<新列名><数据类型>[完整性约束]]

[ADD<表级完整性约束>]

[DROP[COLUMN]<列名>[CASCADE|RESTRICT]]

[DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE]]

[ALTER COLUMN<列名><数据类型>];

 

3.删除基本表

DROP TABLE <表名> [RESTRICT|CASCADE]

 

3.1.3 索引

1.建立索引

CREATE [UNIQUE][CLUSTER] INDEX <索引名>

ON <表名>(<列名>[<次序>][,<列名>[<次序>]]···);

 

 

2.修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>;

 

 

3.2 数据查询

SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]···

FROM <表名或视图名> [,<表名或视图名>···]|(<SELECT 语句>) [AS] <别名>

[WHERE <条件表达式>]

[GROUP BY <列名1> [HAVING <条件表达式>]]

[ORDER BY <列名2> [ASC|DESC]];

 

3.3 数据更新

3.3.1 插入元组

INSERT INTO <表名>[<属性列1>][,<属性列2>···] VALUES(<常量1>[,<常量2>]···)

 

3.3.2 插入子查询结果

INSERT INTO <表名>[<属性列1>][,<属性列2>···] 子查询;

 

 

3.4 修改数据

UPDATE <表名>

SET <列名> = <表达式>[,<列名>=<表达式>]···

[WHERE<条件>];

 

3.5 删除数据

DELETE FROM <表名>

[WHERE<条件>];

 

3.6 视图

3.6.1 定义视图

CREATE VIEW <视图名>[(<列名>[,<列名>]···)]

AS <子查询>

[WITH CHECK OPTION]

 

当更新、插入或删除时,WITH CHECK OPTION可以将子查询中的条件自动加上

 

3.6.2 删除视图

DROP VIEW <视图名> [CASCADE]

 

第4章 数据库安全性

4.1 数据库安全性控制

4.1.1 授权:授予与收回

1.GRANT

GRANT <权限>[,权限]···

ON <对象类型><对象名>[,<对象类型><对象名>]···

TO <用户>[,<用户>]···

[WITH GRANT OPTION]

 如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户

 

2.REVOKE

REVOKE<权限>[,<权限>]···

ON <对象类型><对象名>[,<对象类型><对象名>]···

FROM <用户>[,<用户>]···[CASCADE|RESTRICT]

 

4.1.2 数据库角色

1.角色的创建

CREATE ROLE <角色名>

 

2.给角色授权

GRANT <权限>[,<权限>]···

ON <对象类型>对象名

TO <角色>[,<角色>]···

3.将一个角色授予其他的角色和用户

GRANT <角色1>[,<角色2>]···

TO <角色3>[,<用户1>]···

[WITH ADMIN OPTION]

如果指定了WITH ADMIN OPTION子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色

4.角色权限的收回

REVOKE <权限>[,<权限>]···

ON <对象类型><对象名>

FROM <角色>[,<角色>]···

 

 

第6章 关系数据理论

6.1 规范化

一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,

这种过程就叫规范化(normalization)

 

6.1.1 第一范式(1NF)

每一个分量必须是不可分的数据项

 

6.1.2 第二范式(2NF)

若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF

例如:SLC的码为(Sno,Cno),Sdept和Sloc依赖于Sno,不依赖于Cno,则不满足第二范式

 

6.1.3 第三范式(3NF)

若R∈2NF,且非主属性不能有传递依赖

例如:SLC的码为(Sno,Cno),Sno决定Sdept,Sdept决定Sloc,存在Sno->Sdept->Sloc这样的传递依赖,则不满足第三范式

 

6.1.4 BCNF(Boyce Codd Normal Form)

若R∈3NF,且不能有主属性对码的部分依赖和传递依赖

版权声明:本文为Java-Starter原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/java-starter/p/9591554.html