关系数据库的代数性质
前言
本文只是尝试利用代数的方法推倒关系数据库的一些性质。下面简要回顾一下关系数据库的发展: 1) CODASYL于1962发表“信息代数”一文。 2) E.F.Codd从1970起发表了序列的论文。 3) 20世纪70年代末的实验系统System R 和Ingres。 4) 从20世纪80年代逐步走向成熟。 本文的一些想法是受关系数据库代数性质的启发,同时也避免抄袭前人的成果,写本文纯属回顾大学接受的代数知识。 一 基本定义 从数学的角度来讲,一个关系数据库表是一个向量的集合。为了研究关系数据库的代数性质,有必要先做一些基本的定义。 定义(1):
S = {x| x
∈
D1X D2…X…DN}
,
Di(1<=i <=N)是x第i分量的值域。称这样的
S是一个
N元关系集合。即若
x
∈
S,则
x=(d1,…,di,…, dN),其中
di
∈
Di。 定义(2): 称
0i 是
Di(1<=i <=N)的
NULL值。 定义(3): 对于
x=(d1,…,di,…, dN),称
x
δ
(i)
=( 01,…, 0i-1, di, 0i+1,…0N)是
x在
Di(1<=i <=N)上的投影,其中
di=0i。 称
x
δ
(i)…
δ
(j)为
x在
Dix…Dj上的投影,其中
x的分量
di
≠
0i,…, dj
≠
0j,
并且
1<=i<=j<=N。
定义(4): 定义映射
F,
F满足以下的关系,即:
F(x)=
x
δ
(i)…
δ
(j),
x
δ
(i)…
δ
(j)是
x在
Dix…xDj上的投影,
x
∈
S。 由于
x
δ
(i)…
δ
(j)是
x在
Dix…xDj上的投影是惟一的,所以很容易验证
F是一个映射。 定义(5) 对于任意的投影域
D=
Dkx…xDp,构造集合
S(D)={ Dk,…, Dp},称投影域
Dkx…xDp
S(Dkx…xDp)ix…xDj)。其中集合的
<是真子集关系。 定义(6) 对于投影域
Dkx…xDp,称这样的运算
τ:
τ
(x)
∈
Dkx…xDp,
x
∈
S 为
S对
Dkx…xDp的投影运算。 接着,先利用定义(4)来构造一个集合
J:
J={
x
∈
S | φ(F(x))=x,
τ
(F(x))
∈
Dix…Dj},
φ是
F的反函数。 现在,将对
J的各种情况解释。 1)若投影域是
Dix…xDj,如果
J=Φ,且
S的个数大于1,那么
S的元素在
Dix…xDj的投影重复。如果
i=1,
j=N那么的
S元素是重复的。 2)若投影域是
Dix…xDj,如果
J<
S(真子集关系
),且
S的个数大于1,那么
S的元素在
Dix…xDj的投影部分重复。如果
i=1,
j=N那么的
S元素部分重复。 3)若投影域是
Dix…xDj,如果
J=
S,那么
S的元素在
Dix…xDj的投影不重复。如果
i=1,
j=N那么的
S元素不重复。 4)在3)的基础上,称
Dix…xDj是关键投影域。 定义(7) 极小关键投影域: 称
Dix…xDj是极小关键投影域,对于任意的投影域
D,根据定义(5)有:
D
(1)J={
x
∈
S | φ(F(x))=x,
τ
(F(x))
∈
D}
(2)J<
S 称极小关键投影域是
S的关键字域,称其他不存在极小关键投影域的投影域为非关键字域。 由极小关键投影域的定义,很显然可以知道对于任何的关键投影域必存在极小关键投影域。 思路受到阻塞,并且在思考写下去的意义!如果要写下去,必须写什么方面的内容? 待续&#8230;&#8230;!!!!!!!!!!!!!!!!!!!!!!!