第3讲-关系模型之基本概念
300-本讲学习什么(44秒)及第3讲教学课件PDF
301-什么是关系模型(10分50秒)
关系模型
- 最早由E.F.Codd在1970年提出
- 是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义基础上,引入集合理论与逻辑学理论提出的
- 是数据库的三大经典数据模型之一,也是现在大多数商品化数据库系统所仍然使用的数据模型
- 标准的数据库语言(SQL语言)是建立在关系模型基础之上的,数据库领域的众多理论也都是建立在关系模型基础之上的
关系运算:关系代数和关系演算;关系演算:元组演算和域演算。
关系代数示例:基于集合的运算
即:操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的操作。而非关系型的数据操作通常是一次一记录(Record-at-a-time)的操作
元组演算示例:基于逻辑的运算
域演算示例:基于示例的运算
302-什么是关系(13分26秒)
为什么把“表”称为关系?
怎样严格定义一个“表”?
“表”和“关系”有什么异同?
标题/模式:对应于定义 Table 的 SQL 语句
在关系模型中,域名是指关系中的每一列的数据类型,即此列中的数据的取值范围。例如,在一个名为“学生”的关系中,可能会有一个字段(域名)叫做“学生姓名”,其域可能是字符串类型;另一个字段叫做“学生年龄”,其域可能是整数类型。
而属性名则是指关系中各个字段的名称,即每一列的标题。继续以“学生”关系为例,其中可能包含“学生姓名”和“学生年龄”两个属性,分别对应关系中的两列数据。
总结来说,域名指的是数据类型,即数据的取值范围,而属性名则指的是字段的名称,即列的标题。在关系数据库设计中,域名和属性名是设计关系模型时需要考虑的两个重要因素。
关系模式 R(A1:D1, A2:D2, ... ,An:Dn) 中属性向域的映象在很多 DBMS 中一般直接说明为属性的类型、长度等。例如:Student(S# char(8), Sname char(10), Ssex char(2), Sage integer,D# char(2), Sclass char(6));
303-关系有什么特性(7分12秒)
特性:
1、列是同质的:即每一列中的分量来自同一域,是同一类型的数据
2、不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
3、列位置互换性、行位置互换性
4、关系的任何两个元组不能完全相同
5、属性不可再分
304-候选码与外码(10分16秒)
有时,关系中有很多组候选码,例如:
学生(S#,Sname,Sage,Sclass,Saddress)
其中属性S#是候选码,属性组(Sname,Saddress)也是候选码(同名同地址的两个同学是不存在的
再如:
Employee(EmplD, EmpName, Mobile)
每一雇员有唯一的 EmpID,没有两个雇员有相同的手机号 Mobile ,则EmplD是候选码,Mobile也是候选码
305-关系模型的完整性(7分50秒)
空值的含义
空值:不知道、不存在或无意义的值;
在进行关系操作时,有时关系中的某属性值在当前是填不上的,比如档案中有“生日不详”、“下落不明”、“日程尚待公布”等,这时就需要空值来代表这种情况。关系模型中用“?表征
数据库中有了空值,会影响许多方面,如影响聚集函数运算的正确性,不能参与算术、比较或逻辑运算等
例如:"3+?"
结果是多少呢?"3*?"
结果是多少呢?"? and (A=A)
结果又是多少呢?
再例如,一个班有30名同学,如所有同学都有成绩,则可求出平均成绩;如果有一个同学没有成绩,怎样参与平均成绩的计算呢,是当作0,还是当作100呢?还是不考虑他呢?
有空值的时候是需要特殊处理的,要特别注意。
DBMS对关系完整性的支持
实体完整性和参照完整性由DBMS系统自动支持
DBMS系统通常提供了如下机制:
(1)它使用户可以自行定义有关的完整性约束条件;
(2)当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合用户自定义的完整性
第3讲模拟练习题
概念理解题目:
1某关系R的外键是指其它关系的候选键,可以是R中的主属性或非主属性
2关系模型中,下列关于候选键说法正确的是可由其值能惟一标识该关系中任何元组的一个或多个属性组成
关系是以内容(名字或值)来区分的
区分哪一列是靠列名
区分哪一行是靠某一或某几列的值
21关于“关系”的说法,正确的是关系是一个由行与列组成的、能够表达数据及数据之间联系的二维表。
25参照完整性规则是指表的外键必须是另一个表主键的有效值,或者是空值。