1 基本概念
- 最终用户——交互式用户。
- 临时用户—用SQL访问DBMS的用户。
- 初级用户——通过菜单访问DBMS的用户。·
- 应用程序员——编写菜单程序的程序员。
- 数据库管理员——管理DBMS的专家。
行列相关
列:属性
行:元组
表:关系
表的标题:关系模式,组成关系的属性的集合
数据库:表/关系的集合
数据库所有的关系模式的集合构成了数据库的模式
表的行(元组)集合:表的内容;行数叫做表的基数
域的概念
表T的属性A的取值范围集合D,D就叫做域
2 关系规则
2.1 规则一:第一范式
-
概念
规则1 第一范式规则 在定义的表中,关系模型坚持不允许含有多值属性(有时称为重复字段)和含有内部结构(比如记录类型)的列。遵守这样规则的表称为第一范式。 -
要求
规则二
- 概念
只能基于内容存取行规则
但是存在RID,一般也不会用这个来查询 - 推论
- 根据规则2,表oRDERS是没有第一行、第二行或者是第三行之分的,由表中行组成的表的内容是集合的无序元素。用更抽象的数学术语来说,可以简单地表述为关系是元组的集合。
- 规则2的另外一个含义是你无法建立一个指向行的指针以便以后可以再次检索它,这种指针是不允许的。
规则三
- 概念
行唯一性原则,关系模型的第三条规则要求关系中的任何两个元组(表中的行)的值在同一时刻不能是完全相同的。关系可以被看做是关系模型中的元组的集合,理所当然集合是不允许包含相同元素的,集合中的任意元组必须唯一。而且,由于纯关系查询语言只能通过它们的列值来区分行(规则2),这也说明了必定有另一个方法可以区分任何一行数据和其他的行的值,这样查询语言语句就可以唯---的检索出它来。
键,超键,空值
-
书中的
超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key): 有时也叫键,不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是超键了!
主键(primary key): 用户选作元组标识的一个候选键程序主键
外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。
空值:未知的或尚未定义的,注意和0以及空字符串区别 -
理解
学生信息(学号 身份证号 性别 年龄 身高 体重 宿舍号)和 宿舍信息(宿舍号 楼号)
超键:只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号 性别)、R2(身份证号 身高)、R3(学号 身份证号)等等都可以称为超键!
候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!
主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了!
外键:宿舍号就是学生信息表的外键
3 关系代数
3.1 集合运算
兼容表:Head(S)=Head(R),且属性是从相同的域中选择并具有相同的属性
- 并,交,差
- 赋值,别名
- 定义2.6.3 赋值、别名 R是一个表,Head(R)=A…A,。假定B,,…,B,是n个属性。对于所有的1≤i≤n,它们的域Domain(B,)=Domain(A,)。通过赋值S(B,,…,B,):=R(A,-,A)
- 我们已经努力使得赋值运算允许对源表的标题里的属性名进行重定义,我们不久就可以体会到这一点的价值。现在我们需要指明,属性的重定义并不总是必要.如果两个表中所有的属性名都是一对一的,并且对于所有的1≤i≤n都有B,=A,成立,我们可以简单地称S为表R的别名,简写为S∶=R。
- 乘积
我们用W.A的形式来表示一个属性的名字(W是相乘表中的表名).并称之为限定属性名,或限定属性。乘积表的标题由限定属性组成,并且当我们需要重点指出属性是从哪个表中取出来的时,可以用这些限定属性,因为在多个乘积表中同时出现相同的列名,有可能造成混乱。如果属性名只出现在一个表中,我们可以直接用它的非限定属性。
两个1000行的表的乘积有100万行
3.2 自然关系运算
- 投影
删除某些列,再把重复的行去掉
投影运算作用在一个表上,删除了表上的某些列,包括标题以及表内容上对应的列上的值。我们说把表投影到没有被删除的列的集合上。注意到表R上不同的行在投影到列的子集上后可能会相同,因为用于区别两个值的列已经被删除掉了。当发生这种情况的时候,投影运算符同样删除重复的行,只在结果集中留下重复行的一个拷贝。
- 选择
注意不要有内容依赖(就是按照自己知道的某个结果来根据其特征去查找,这不一定符合题目的要求) - 连接
如果R和S具有相同的属性集,那么R连接S=R交S - 除法
表T为R÷S(读作R除以S)的结果,如果Head(T)=A…A,并且T中包含的恰好是这样的行t∶对于S中每一个行s,t和s串接的结果的行可以在表R中找到。
注意:R=TXS才能得到:T=R÷S
一般强调查询所有的是用除法
3.3 优先级
投影>选择>乘积>连接,除法>交>并,差