【高级数据库】第一章 DBMS系统概述
本节主要回顾一下数据库的基础内容。
第03讲 数据库基础知识概览
1、基本概念
(1)数据库(DB):长期存储在计算机内,有组织,可共享的大量数据的集合。
(2)数据库管理系统(DBMS):位于用户好操作系统间的数据管理系统的一层数据管理软件。
(3)数据库系统(DBS):包括数据库、数据库管理系统和数据库管理员。
(4)概念模型:
- 实体:客观存在并可互相区别的事物。其包含属性(实体包含的特性)、码(唯一识别实体的属性集)、域(具有相同数据类型的值的集合);
- 实体型:具有相同属性的实体具有由相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型;
- 实体集:同一类型的实体的集合;
- 联系:通常是指不同实体型的实体集之间的联系,实体之间的联系有一对一,一对多,多对多等多种类型。
(5)三级模式:
- 模式(逻辑模式):数据库中全体数据的逻辑结构和特征的描述。一个数据库只有一个模式。主要内容包括数据的逻辑结构、数据间的联系及数据有关的安全性、完整性等;
- 外模式(子模式/用户模式):数据库用户或应用程序能够看见和使用的局部数据库和逻辑结构特征的描述。一个数据库可以有多个外模式,而一个用户(应用程序)只有使用一个外模式。外模式是模式的子集,不同用户或应用程序对数据的需求不同而产生不同的外模式。
- 内模式(存储模式/内视图):数据库物理结构和存储方式的描述,是数据在数据库中内部时机存储的表示方式。一个数据库只有一个内模式。
(6)二级映像
- 外模式/模式映像:数据库系统都有一个外模式/模式映像。它定义了该外模式与模式之间的对应关系。这些映像通常包含在各自外模式的描述中。当模式改变时(增加新的关系、新的属性、改变属性的数据类型),需要数据库管理员对各个外模式/模式的映像做相应改变,也可以是外模式保持不变。应用程序是依据数据的外模式编写的。因此应用程序也不必修改,这保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
- 模式/内模式映像:模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。比如说明逻辑记录和字段在内部是如何表示。该映像定义通常包含在模式描述中。当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做相应改变。可以使模式保持不变,因此应用程序也不必改变,这就保证了数据与程序的物理独立性,简称数据的物理独立性。
(7)物理独立性:当数据库的存储结构发生变化时,数据库管理员修改模式/内模式映像,使得应用程序不需要修改,保证了物理独立性。
(8)逻辑独立性:当模式改变时,数据库管理员修改有关的外模式/模式映像,使得外模式保持不变,因此对应外模式的应用程序不需要修改,即保持了逻辑独立性。
2、关系数据库
(1)码:
- 候选码:若关系中的某一属性组只能唯一标识一个元祖,则该属性组为候选码;
- 主码:若一个关系有多个候选码,则可选定其中一个作为主码;
- 外部码:若一个关系的一组属性是另一个关系的主码,则该属性组是外部码;
(2)完整性约束:
- 实体完整性:用于标识实体的唯一性。它要求基本关系必须要有一个能够标识元组唯一性的主键,主键不能为空,也不可取重复值;
- 参照完整性:用于维护实体之间的引用关系。 它要求一个关系的外键要么为空, 要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值;
- 用户定义完整性:针对某一具体关系数据库的约束条件,翻译某一具体应用所涉及的数据必须满足的语义要求。
(3)关系代数集合运算:设两个关系 R ( A , B , C ) R(A, B, C) R(A,B,C) 和 S ( A , B , C ) S(A, B, C) S(A,B,C)。
- 并(
∪
\cup
∪):
R
∪
S
=
{
t
∣
t
∈
R
∨
t
∈
S
}
R \cup S = \{t|t\in R \vee\ t\in S\}
R∪S={t∣t∈R∨ t∈S};
- 差(
−
-
−):
R
−
S
=
{
t
∣
t
∈
R
∨
t
∉
S
}
R-S = \{t|t\in R \vee t\notin S\}
R−S={t∣t∈R∨t∈/S};
- 交(
∩
\cap
∩):
R
∩
S
=
{
t
∣
t
∈
R
∧
t
∈
S
}
R\cap S = \{t|t\in R\wedge t\in S\}
R∩S={t∣t∈R∧t∈S};
- 笛卡尔积(
×
\times
×):
R
×
S
=
{
(
t
r
,
t
s
)
∣
t
r
∈
R
∨
t
s
∈
S
}
R\times S = \{(t_r, t_s)|t_r \in R \vee t_s \in S\}
R×S={(tr,ts)∣tr∈R∨ts∈S}。
(4)关系代数关系运算:
- 选择( σ \sigma σ):选择又称为限制。它是在关系R中选择满足给定条件的诸元组, σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ 真 ′ } \sigma_F(R) = \{t|t\in R \wedge F(t) = '真'\} σF(R)={t∣t∈R∧F(t)=′真′}。其中 F F F 为逻辑表达式;
- 投影( π \pi π):关系R上的投影是从R中选择出若干属性列组成新的关系, π A ( R ) = { t [ A ] ∣ t ∈ R } \pi_A(R) = \{t[A]|t\in R\} πA(R)={t[A]∣t∈R}。其中 t [ A ] t[A] t[A] 表示元组中的属性值;
- 除( ÷ \div ÷):给定关系 R ( X , Y ) R(X,Y) R(X,Y) 和 S ( Y , Z ) S(Y,Z) S(Y,Z) ,其中 X 、 Y 、 Z X、Y、Z X、Y、Z 为属性组。 R R R 中的 Y Y Y 与 S S S 中的 Y Y Y 可以有不同的属性名,但必须出自相同的域集。 R R R 与 S S S 的除运算得到一个新的关系 P ( X ) P(X) P(X) , P P P 是 R R R 中满足下列条件的元组在 X X X 属性列上的投影:元组在 X X X 上的分量值 x x x 的像集 Y X YX YX 包含 S S S 在 Y Y Y 上投影的集合。 R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ π Y ( S ) ⊆ Y x } R\div S = \{t_r[X]|t_r\in R \wedge \pi_Y(S) \subseteq Y_x\} R÷S={tr[X]∣tr∈R∧πY(S)⊆Yx}
(5)SQL表操作语句:
- 基本语句:
- 约束条件:
(5)SQL数据操作语句:数据库之sql语句汇总
3、关系数据理论
(1)函数依赖:设 R R R 为任一给定关系,如果对于 R R R 中属性 X X X 的每一个值, R R R 中的属性 Y Y Y 只有唯一值与之对应,则称 X X X 函数决定 Y Y Y 或称 Y Y Y 函数依赖于 X X X ,记作 X → Y X\rightarrow Y X→Y。其中, X X X 称为决定因素。
- 完全函数依赖:如果 X → Y X\rightarrow Y X→Y,且 X X X 中的任一真子集都不能决定唯一的 Y Y Y,则 Y Y Y 完全依赖于 X X X,记做 X → F Y X \xrightarrow{F} Y XFY。例如学生的课程成绩应该依赖于这个学生的学号及该课程的编号。
- 部分函数依赖:与上面相反,如果 X → Y X\rightarrow Y X→Y,但 Y Y Y 不完全依赖于 X X X,即存在一个 X X X 的真子集是可以决定 Y Y Y ,记做 X → P Y X \xrightarrow{P} Y XPY。例如用户的身份证号码、姓名可以确定唯一的一个人,而身份证号码也可以确定唯一的一个人
- 传递函数依赖:设关系 R R R 包含三个属性集 X , Y , Z X,Y,Z X,Y,Z,( Y Y Y 不是 X X X 的子集, Z Z Z 不是 Y Y Y 的子集),且有 X → Y X\rightarrow Y X→Y, Y → Z Y \rightarrow Z Y→Z,则有 X → Z X \rightarrow Z X→Z,记做 X → 传 递 Y X \xrightarrow{传递} Y X传递Y 。
(2)范式:指符合某一种级别的关系模式的集合。在设计关系数据库时,根据满足依赖关系要求的不同定义为不同的范式。以员工表为例,如图所示(参考链接):
修改异常:上表中张三有两条记录,因为他隶属于两个部门。如果我们要修改张三的地址,必修修改两行记录。假如一个部门得到了张三的新地址并进行了更新,而另一个部门没有,那么此时张三在表中会存在两个不同的地址,导致了数据不一致
新增异常:假如一个新员工假如公司,他正处于入职培训阶段,还没有被正式分配到某个部门,如果deptNo字段不允许为空,我们就无法向employee表中新增该员工的数据。
删除异常:假设公司撤销了D3部门,那么在删除deptNo为D3的行时,会将李四的信息也一并删除。因为他隶属于D3这一部门。
- 第一范式(1NF):表中的列只能含有原子性(不可再分)的值。即数据表中一个字段(对应列)只允许包含一个数据,而不能分为多列数据。例如上图中,mobile列中含有重复列,则不满足1NF。
- 第二范式(2NF):满足第一范式的条件下,每一个非主属性完全依赖于码。例如上图中,name依赖于id,deptName依赖于deptNo,mobile依赖于id,因此需要将表拆分。
- 第三范式(3NF):满足第二范式的条件下,每个非主属性都不传递依赖于码。即要求数据库表中不能包含其他表中已包含的非码信息。
- BC范式(BCNF):满足第三范式的基础上,任何属性对码之间均不存在部分函数依赖和传递函数依赖。
博客记录着学习的脚步,分享着最新的技术,非常感谢您的阅读,本博客将不断进行更新,希望能够给您在技术上带来帮助。