前言
"<数据库原理及应用>(MySQL版)".以下称为"本书"中4.1节内容
引入
关系模型是目前最流行的RDBMS(关系型数据库管理系统)的基础.本章主要讲关系代数和关系运算.
4.1关系模型的基本概念
基本术语
1)关系
用于描述数据的一张二维表.如前所述,二维表第一行是关系模式,由各种属性组成;其他行是"元组".
2)域
指列(属性)的取值范围 .这里还需要指出列(属性)有数据类型,在数据类型基础上再提取值范围.本书P102举了个例子,属性"性别"的域为(男,女,NULL),他的数据类型是++字符串++,NULL适用于各种数据类型,表示空.
3)候选键
又称候选码.他能唯一标识关系中的元组的最小属性集合.++一个关系可能有多个候选键++.重点是唯一确定,
本书举的例子中,如果有重名,但重名学生的性别不同,则姓名+性别可以做候选键,有一个小bug---如果有两个人名称和性别都相同,则姓名+性别不可做候选键(这种几率很小,但严格上讲仍有可能).读者考虑没有重名的情况下,姓名+性别不可以做候选键,"姓名"一项可以,性别属于多余,两者加一起不是标识元组的++最小属性集合++.
4)主键
又称主码 ,他能唯一标识关系中的元组的最小属性集合.用户可以从关系的候选键中指定一个作为关系的主键.一个关系最多只能指定一个主键,作为主键的列不能取NULL值.
5)主属性、非主属性、全码
候选键中所有属性均称为主属性. 与之对应,非候选键的属性称为非主属性.
**当关系中所有属性的组合是该关系的一个候选码,称为全码.**全码的条件是必须全部属性放一起才能标识该元组的唯一性,同时也是他的主码.
这三项放一起,是因为暂时看不出他们有什么用.
6)外键
当关系R中的某属性K是另一个关系S中的主键,则称该属性K是关系R的外键.通过外键可以建立两表间的联系 .有了前面的查询做基础,很容易理解外键的概念:外键是两表属性之间的桥梁.
关系的特征
关系的特征关注点在于"唯一"
1)列是同质的.列的取值来自同一个域
2)不同列可以取自同一个域
3)各列顺序理论上可以无序,使用时考虑习惯.
4)任意两个元组的候选码不能相同.
因为候选码是表内元组唯一标识,所以不能相同.例如学生表内不能有两个相同学号.
5)行的顺序无所谓,可以任意交换
6)分量必须取原子值,即每个分量都必须是不可分的数据项.
本书P103和P104举了个例子,不能称为表的是表4-2,在EMPNO为7499的员工处,MGR项出现了两个值.
在本书P104特别强调了:这些规范条件中最基本的一条是,关系的每一个分量必须是一个不可分的数据项.
=============================内容分割线↓===================================
以下为笔者发散思考,不保证对错.
在关系模型中,分量必须是一个不可分的数据项,意味着关系模型容量"有限".每个属性的取值只能是VCHAR,CHAR,INT(DECIMAL),BOOL,DATETIME中的一个值.最大的问题是***++不能表示集合++***.
例如 如果现在要设计一个表,里面内容有学生家庭情况表,学生评价,该怎么办?
|----|----|-------|------|
| 学生表 ||||
| | | | |
| 学号 | 姓名 | 学生家庭表 | 学生评价 |
其中嵌套了另一张表(学生家庭表),学生评价(单独文件).可以想到的办法是,"学生评价"做成一个.txt文件(或其他类型文件),把和所有学生评价的txt文件放入一个文件夹,学生评价这一栏填入文件名,如张三评价.txt.如下图所示
|----|----|-------|----------|
| 学生表 ||||
| | | | |
| 学号 | 姓名 | 学生家庭表 | 学生评价 |
| 1 | 张三 | 2 | 张三评价.txt |
但这不属于关系模型,是非关系模型?由此可见非关系模型也是从关系模型发展而来.如果上述非关系模型要成立,则需要和表相关的内容上增加:
1.数据类型设计:对学生家庭表而言,要设计一个表类型.当然由于他仍然是一个表,所以不算新加入的内容,txt文件也不需要新的设计.这个例子中没有新数据类型的设计,假设要有一张"人际关系图",那么就需要设计一个"图"的数据结构,并在相应位置填入指向图对象的指针.
|-----|------|-----|----|
| 学生家庭表 ||||
| | | | |
| 家庭号 | 本人姓名 | 父亲 | 母亲 |
| 2 | 张三 | 张某某 | 某某 |
2.容器:一个新文件夹,里面放所有的学生评价的txt文件
3.对应的算法---增删改查.
两者对比:关系模型的特点是简单直观,1是1,2是2.
非关系模型信息量大,但针对每个表需要更多空间放置数据
=============================内容分割线↑===================================
从关系模型到非关系模型的拓展,基于一个理念:无论数据大小,都是以指针表示.
小结
关系模型基本概念的整理,以及非关系模型的思考