2.1 “关系”数据库,什么是“关系”?

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值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值