关系数据库:关系模式
关系模式是定义这些表格结构的蓝图,包括表的名称、表中列的名称和数据类型,以及表之间的关联关系。
基本概述
关系的相关名词术语
- 关系:简单来说,就是一张二维表格。
- 属性(Attribute):也称字段或列,在现实世界中,要描述一个事务常常取若干特征来表示。这些特征称为属性。例如学生用学号、姓名、性别、系别、年龄、籍贯等属性来描述。
- 域(Domain):每个属性的取值范围所对应一个值的集合,称为该属性的域。如学号的域是6位整型数,姓名的域是10位字符,性别的域为{男,女}。 一般在关系数据模型中,对域还加了一个限制,所有的域都应是原子数据(at omicdata)。例如,整数、字符串是原子数据,而集合、记录、数组是非原子数据。关系数据模型的这种限制称为第一范式(first normal form,简称1NF)条件。但也有些关系数据模型突破了1NF的限制,称为非INF。
- 元组:关系中的某一行记录。
- 分量:某一条元组在字段上的某个值。
- 目或度(Degree): D 1 × D 2 × . . . × D n D_1\times D_2\times ...\times D_n D1×D2×...×Dn的子集的称或关系模式作在域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn上的关系,表示 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn)。这里的R表示关系的名字,n是关系的目或度。
- 候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。
- 主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个为主码。
- 主属性(Prime attribute):包含在任何候选码中的属性称主属性。不包含在任何候选码中的属性称为非主属性(NonPrime attribute)。
- 外码(Foreign key):如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。如客户与贷款之间的借贷联系c-l(c-id,Loan-no),属性c-id是客户关系中的码,所以 c-id是外码,属性loan-no是贷款关系中的码,所以loan-no也是外码。
- 全码(All key):关系模型的所有属性组是这个关系模式的候选码,称为全码。如R(T,C,S),属性T表示教师,属性C表示课程,属性S表示学生。
属性或字段加下划线表示该属性是主码,元组就是记录。
笛卡儿积与关系
定义1:
D
1
,
D
2
,
D
3
,
.
.
.
,
D
n
D_1,D_2,D_3,...,D_n
D1,D2,D3,...,Dn为任意集合,定义
D
1
,
D
2
,
D
3
,
.
.
.
,
D
n
D_1,D_2,D_3,...,D_n
D1,D2,D3,...,Dn的笛卡尔积为
D
1
×
D
2
×
D
3
×
.
.
.
×
D
n
=
{
(
d
1
,
d
2
,
d
3
,
.
.
.
,
d
n
)
∣
d
i
∈
D
i
,
i
=
1
,
2
,
3
,
.
.
.
,
n
}
D_1\times D_2\times D_3\times ...\times D_n=\{(d_1,d_2,d_3,...,d_n)|d_i\in D_i,i=1,2,3,...,n\}
D1×D2×D3×...×Dn={(d1,d2,d3,...,dn)∣di∈Di,i=1,2,3,...,n}
其中集合的每个元素
(
d
1
,
d
2
,
d
3
,
.
.
.
,
d
n
)
(d_1,d_2,d_3,...,d_n)
(d1,d2,d3,...,dn)叫做一个n元组(n-tuple,即n个属性的元组
),元素的每一个值
d
i
d_i
di叫做元组一个分量。若
D
i
(
i
=
1
,
2
,
3
,
.
.
.
,
n
)
为有限集,其基数(
C
a
r
d
i
n
a
l
n
u
m
b
e
r
,
元组的个数为
D_i(i=1,2,3,...,n)为有限集,其基数(Cardinal number,元组的个数为
Di(i=1,2,3,...,n)为有限集,其基数(Cardinalnumber,元组的个数为m_i(i=1,2,3,…,n)
,则
,则
,则D_1\times D_2\times D_3\times …\times D_n$的基数M为:
M = ∏ i = 1 n m i M=\prod\limits_{i=1}^{n}{m_i} M=i=1∏nmi
定义2: D 1 × D 2 × . . . × D n D_1\times D_2\times ...\times D_n D1×D2×...×Dn的子集的称作在域 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn上的关系,表示 R ( D 1 , D 2 , . . . , D n ) R(D_1,D_2,...,D_n) R(D1,D2,...,Dn),称为关系R为n元关系。
元数(属性的个数),基数(记录的条数)。
示例:若 D 1 = 0 , 1 , D 2 = a , b , D 3 = c , d D_1={0,1},D_2={a,b},D_3={c,d} D1=0,1,D2=a,b,D3=c,d,求解 D 1 × D 2 × D 3 D_1\times D_2\times D_3 D1×D2×D3,以及 D 1 × D 2 × D 3 D_1\times D_2\times D_3 D1×D2×D3的基数。
分析:根据定义1可知
D
1
×
D
2
×
D
3
D_1\times D_2\times D_3
D1×D2×D3中的每一个元素是一个三元组,其结果为:
D
1
×
D
2
×
D
3
=
{
(
0
,
a
,
c
)
,
(
0
,
a
,
d
)
,
(
0
,
b
,
c
)
,
(
0
,
b
,
d
)
,
(
1
,
a
,
c
)
,
(
1
,
a
,
d
)
,
(
1
,
b
,
c
)
,
(
1
,
b
,
d
)
}
D_1\times D_2\times D_3= \{(0,a,c),(0,a,d),(0,b,c),(0,b,d),(1,a,c),(1,a,d),(1,b,c),(1,b,d) \}
D1×D2×D3={(0,a,c),(0,a,d),(0,b,c),(0,b,d),(1,a,c),(1,a,d),(1,b,c),(1,b,d)}
由于
D
1
D_1
D1的基数
m
1
=
2
m_1=2
m1=2、
D
2
D_2
D2的基数
m
2
=
2
m_2=2
m2=2、
D
3
D_3
D3的基数
m
3
=
2
m_3=2
m3=2,所以
D
1
×
D
2
×
D
3
D_1\times D_2\times D_3
D1×D2×D3的基数
M
=
m
1
×
m
2
×
m
3
=
8
M=m_1\times m_2\times m_3=8
M=m1×m2×m3=8,也可以用二维表来表示如下:
关系的类型
关系的三种类型如下:
- 基本关系(通常又称为基本表或基表):实际存在的表,它是实际存储数据的逻辑表示。
- 查询表:查询结果对应的表。
- 视图表:是由基本表或其他视图表导出的表。由于它本身不独立存储在数据库中,数据库中只存放它的定义,所以常称为虚表。
关系模式
关系的描述称为关系模式(Relation Schema),可以表示为 R ( U , D , d o m , F ) R(U,D,dom,F) R(U,D,dom,F)。其中,R表示关系名,U是组成该关系的属性名集合,D是属性的域,dom是属性向域的影响集合常常直接说明属性的类型、长度,F为属性间数据的依赖关系集合。也可以简记为 R ( U ) R(U) R(U)或 R ( A 1 , A 2 , A 3 , . . . , A n ) R(A_1,A_2,A_3,...,A_n) R(A1,A2,A3,...,An), A 1 , A 2 , A 3 , . . . , A n A_1,A_2,A_3,...,A_n A1,A2,A3,...,An为属性名或域名,通常在关系模式主属性上加下划线表示该属性为主码属性。
完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。分类如下:
- 实体完整性(Entity Integrity):规定基本关系R的主属性A不能取空值。
- 参照完整性(Referential Integrity):也称引用完整性,关系与关系间的引用。属性上加
实下画线,通常表示该属性为主码属性
。属性上加虚下画线,通常表示该属性为外码属性
。值必须为外码中某个元组的主码值或取空值。 - 用户定义完整性(User defined Integrity):针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,有应用的环境决定。例如,银行的用户账户规定必须大于等于100000,小于999999。
总结
关系数据库基于关系模型,该模型采用表的形式来组织和存储数据。关系模式是定义这些表格结构的蓝图,包括表的名称、表中列的名称和数据类型,以及表之间的关联关系。关系数据库的核心概念包括表、关键字(主键和外键)、数据约束(如唯一性、非空和检查约束),以及规范化过程,旨在减少数据冗余和提高数据完整性。
在关系数据库中,数据操作通常遵循ACID原则,确保事务的原子性、一致性、隔离性和持久性。此外,数据库设计者可以利用索引来提升查询性能,使用视图来简化数据操作和提供安全措施,以及通过存储过程和触发器来自动化复杂的数据处理任务。
总的来说,关系模式是关系数据库设计的基石,它支持高效的数据存储、检索和管理。通过精确的关系模式设计,我们可以构建出既灵活又强大的数据库系统,满足各种商业和技术领域的需求。
更多推荐
所有评论(0)