(1)域
域是一组具有相同数据类型的值的集合,可以理解为int[](int类型的数组)是一个域。
(2)笛卡儿积
简单来说,若干个域的笛卡儿积就是将这几个域的元素进行排列组合,即:
D1 =【Q、G、Y】,基数为3
D2 = 【1、2】,基数为2
则:笛卡儿积D1 * D2如下所示:
D1 | D2 |
Q | 1 |
Q | 2 |
G | 1 |
G | 2 |
Y | 1 |
Y | 2 |
该笛卡儿积的基数为3*2=6
(3)关系
N个域(D1~DN)的笛卡儿积的子集称为这N个域上的一个N元关系,表示为:
R(D1, D2, D3, ......, DN)
如下,为上述域D1,D2的一个二元关系:
D1 | D2 |
Q | 1 |
G | 2 |
这里注意:当N = 1时叫单元关系,不叫一元关系。
(1)关系模型的数据结构
关系的描述称作关系模式,关系模式即关系的框架或结构,其形式化表示为
R(U,D,dom,F)
其中的含义分别为
(2)关系操作
关系操作包括数据更新、数据控制和数据查询。关系操作语言有下面几个:
(3)关系完整性约束
(1)关系的性质
(2)关系的类型:基本表,查询表和视图表。
(1)元组关系演算
(t)()表示对所有的t,使都为真,则 (t)()为真,反之则为假;而(t)()表示若存在一个t使得为真,则(t)()为真。
题例:
查询作者“任民宏”编写的《数据库原理与应用》的图书单价,其中书名在第二列,作者在第四列,单价在第七列。
{t|(u)(图书(u)∧u[2]='数据库原理与应用')∧u[4]='任民宏'∧t[1]=u[7]}
解释:
t是新表的属性,只有一个图书单价,u是图书表的属性,该题题意为这本图书既是’数据库原理与应用‘并且作者是’任民宏‘,则两个条件用∧连接,最后将符合条件的图书价格赋给新表的第一个属性。
查询借阅了图书编号为“JSJ101”图书的读者卡号和姓名,其中借阅表和读者表的读者id在第一列,借阅表的图书id在第二列,读者表的读者姓名在第二列。
{t|(u)(v)(借阅(u)∧读者(v)∧u[1]=v[1]∧u[2]='JSJ101'∧t[1]=u[1]∧t[2]=v[2])}
解释:
这里t是新表属性,u为借阅表属性,v为读者表属性,这里要注意的是新表这时候有两个属性。
查询没有借阅图书编号为“JSJ101”图书的读者卡号,表中关系同上。
{t|(u)(v)(读者(u)∧借阅(v)∧(u[1]=v[1]v[2]'JSJ101')∧t[1]=u[1])}
解释:
其中是推出符号,就是从左边可以推出右边,这个题我也没太看懂,背背吧,注意是这里借阅用的是(我觉得是因为这里题目变成了没有借阅)。
(2)域关系演算
查询借阅了图书编号为“JSJ101”图书的读者卡号和姓名,表关系同上。
{|()()(借阅()∧读者()∧=∧='JSJ101'∧=∧=)}
查询没有借阅图书编号为“JSJ101”图书的读者卡号,表关系同上。
{读者借阅}