2.1 “关系”数据库,什么是“关系”?
2015-01-09 23:31
316 查看
1. 关系数据库由表组成,各表名称唯一。
2. 简单的表的例子:instructor表,由四列组成:ID、Name、Dept_Name、Salary,表中的每一行都记录了一位老师的信息。再比如course表,由course id,title,
dept name, andcredits四列组成。注意到,Instructor表中每个老师通过ID来唯一区分,Course表中每门课由course_id来唯一区分。
3. 再来看prereq表,记录了要上某一门课的话,得先上哪些别的课。该表由course idandprereq
id两列组成。 Prereq表中的一行记录了两门课程之间某种的“关系”——要上这门课得先上另外一门课。从同样的角度来看instructor表,这个表中每一个ID都对应着某个老师的姓名、其所属学院以及他的工资,也就是说,这个表中的行记录了教师的ID与其姓名、院系、工资之间的对应“关系”。
4. 一般来说,表中的行代表了一组值之间的某种关系。而表则是这种关系的集合,从这个角度来看,表和数学意义上的“关系”含义十分接近(数学意义上的关系是什么?),这也是“关系模型”中的关系二字的由来。
5. 在数学上,我们称一组值为一个Tuple(元组)。n个值之间的关系在数学上可表示为一个“n元组”——由n个值组成的元组——也就是表里的一行。
6. 一般概念与关系模型中的概念之间的对应关系:表——关系、行——元组、列——属性Attribute。
7. 关系(Relation)与关系实例(Relation Instance)。Relation——表的结构,或者说列之间的关系。relation instance ——行的集合,具体的数据。
8. 关系是元组的集合,在数学上,集合里的元素是不分顺序的,因此关系里的元组也不讲顺序。两个关系是否相等,只看其包含的元组是否相同,不考虑顺序。
9. 每个属性可取的值的范围称为那个属性的值域Domain。比如Instructor表中Salary字段的值域是所有可取的工资值的集合。
10. 关系的属性的值域应当是原子化的Atomic——当一个值域里的元素可以被视为不能再细分单元时我们说这个值域是原子化的。假设Instructor表中有Phone_Number属性用于存储一个老师使用的多个电话号码,那么Phone_number属性的值域就不是原子化的,因为这个值域里的元素是一组电话号码,那就可以进一步划分为单个的电话号码。
11. 原子化是相对的,还是以电话号码为例,假设phone_number字段现在只许存一个电话号码,如果把这个号码视为一个整体,那么其值域就是原子化的,如果把一个电话号码看成由几部分组成,比如座机号码就可分为区号和电话号码,那电话号码本身又是非原子化的了。一个属性的值域本身是什么不是重点,重点是我们如何使用这个值域。
12. null表示值未知或者值不存在。仍以Instructor表的Phone_number属性为例,如果一个老师不用电话,或者我们不知道他的电话号码,那么在表里头就只能用null来表示他的phone_number属性值。Null值的使用会给数据访问和更新带来许多不便,应该尽量避免在数据中使用Null值。
2. 简单的表的例子:instructor表,由四列组成:ID、Name、Dept_Name、Salary,表中的每一行都记录了一位老师的信息。再比如course表,由course id,title,
dept name, andcredits四列组成。注意到,Instructor表中每个老师通过ID来唯一区分,Course表中每门课由course_id来唯一区分。
3. 再来看prereq表,记录了要上某一门课的话,得先上哪些别的课。该表由course idandprereq
id两列组成。 Prereq表中的一行记录了两门课程之间某种的“关系”——要上这门课得先上另外一门课。从同样的角度来看instructor表,这个表中每一个ID都对应着某个老师的姓名、其所属学院以及他的工资,也就是说,这个表中的行记录了教师的ID与其姓名、院系、工资之间的对应“关系”。
4. 一般来说,表中的行代表了一组值之间的某种关系。而表则是这种关系的集合,从这个角度来看,表和数学意义上的“关系”含义十分接近(数学意义上的关系是什么?),这也是“关系模型”中的关系二字的由来。
5. 在数学上,我们称一组值为一个Tuple(元组)。n个值之间的关系在数学上可表示为一个“n元组”——由n个值组成的元组——也就是表里的一行。
6. 一般概念与关系模型中的概念之间的对应关系:表——关系、行——元组、列——属性Attribute。
7. 关系(Relation)与关系实例(Relation Instance)。Relation——表的结构,或者说列之间的关系。relation instance ——行的集合,具体的数据。
8. 关系是元组的集合,在数学上,集合里的元素是不分顺序的,因此关系里的元组也不讲顺序。两个关系是否相等,只看其包含的元组是否相同,不考虑顺序。
9. 每个属性可取的值的范围称为那个属性的值域Domain。比如Instructor表中Salary字段的值域是所有可取的工资值的集合。
10. 关系的属性的值域应当是原子化的Atomic——当一个值域里的元素可以被视为不能再细分单元时我们说这个值域是原子化的。假设Instructor表中有Phone_Number属性用于存储一个老师使用的多个电话号码,那么Phone_number属性的值域就不是原子化的,因为这个值域里的元素是一组电话号码,那就可以进一步划分为单个的电话号码。
11. 原子化是相对的,还是以电话号码为例,假设phone_number字段现在只许存一个电话号码,如果把这个号码视为一个整体,那么其值域就是原子化的,如果把一个电话号码看成由几部分组成,比如座机号码就可分为区号和电话号码,那电话号码本身又是非原子化的了。一个属性的值域本身是什么不是重点,重点是我们如何使用这个值域。
12. null表示值未知或者值不存在。仍以Instructor表的Phone_number属性为例,如果一个老师不用电话,或者我们不知道他的电话号码,那么在表里头就只能用null来表示他的phone_number属性值。Null值的使用会给数据访问和更新带来许多不便,应该尽量避免在数据中使用Null值。
相关文章推荐
- 数据库中事务、会话、线程这几个概念是什么关系
- ORACLE数据库中 方案,实例,数据库,用户,角色,表空间,表 这些概念都是什么意思,之间有什么关系
- 在关系数据库中。存放在数据库中的逻辑结构以什么为主 (4选一)
- 【巨杉答疑】巨杉数据库和mongodb有什么关系吗?
- 【巨杉答疑】巨杉数据库和mongodb有什么关系吗?
- 回复网友提问:云计算,大数据,数据库,数据仓库之间是什么关系
- oracle 的数据库、表空间、表是什么关系
- 什么是网站空间和数据库空间,有什么区别,他们之前的关系是?
- oracle 的数据库、表空间、表是什么关系
- 全局数据库名称.数据库名称.SID是什么关系?
- 全局数据库名称.数据库名称.SID是什么关系?
- 数据库、后台、服务器、mysql、和python分别是什么关系?
- 老李分享:大数据,数据库,数据仓库之间是什么关系
- Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)
- 云计算,大数据,数据库,数据仓库之间是什么关系
- 老李分享:大数据,数据库,数据仓库之间是什么关系
- 文档型数据库相对关系数据库的缺点是什么?
- 数据云计算回复网友提问:云计算,大数据,数据库,数据仓库之间是什么关系
- 解释一下关系数据库的第一第二第三范式? 第一范式不可分割?第三范式没有传递依赖?没看懂是什么意思希望指点!
- 很难界定数据库与编程的关系,学数据库最基础的是什么