关系数据库的结构
·关系(relation):关系用来指代表。关系数据库由表(table)的集合构成,每个表有唯一的名字。表中的一行代表一组值之间的一种联系,一个表就是这种联系的一个集合。
·元组(tuple):指代表中的一行。元组是一组值的序列,n个值之间的一种联系可以用一个n元组来表示。
关系是元组集合,元组在关系中出现的顺序无关紧要。
·属性(attribute):指代表中的列。
·关系实例(relation instance):指代一组特定的行,表示一个关系的特定实例。
·域(domain):对于关系的每个属性,都存在一个允许取值的集合。
数据库模式
数据库模式(database schema)是数据库的逻辑设计,而数据库实例(database instance)是给定时刻数据库中数据的一个快照。
关系模式(relation schema)由属性序列及各属性对应域组成,还可能包括属性类型和关系上的约束,对应程序设计语言中的类型定义(不常变化)。
关系实例对应程序设计语言中变量的值,可能随时间变化、更新)。
e.g.
department关系的关系模式:department(dept_name, building, budget)
student关系的关系模式:student(ID, name, dept_name, tot_cred)
码
码(不论是主码、候选码或超码)是整个关系的一种性质,而不是单个元组的性质。关系中的任意两个不同元组都不允许同时在码属性上具有相同的值。
·超码(superkey):一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。(e.g. ID属性)
·候选码(candidate key):超码的任意超集也是超码。任意真子集都不能成为超码的最小超码称为候选码。
·主码(primary key):被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。
主码应该选择那些从不或极少变化的属性;
习惯上把一个关系模式的主码属性最先列出,加上下划线。
·外码(foreign key):一个关系模式r1的属性中可能包括另外一个关系模式r2的主码,这个属性在r1上称作参照r2的外码。r1称作外码依赖的参照关系(referencing relation),r2称作外码的被参照关系(referenced relation)。
对于参照关系中的每个元组,它在外码属性上的取值肯定等于被参照关系中某个元组在主码上的取值。
参照完整性约束(referential integrity constraint):要求在参照关系中任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值。
模式图(schema diagram)
一个含有主码和外码依赖的数据库模式可以用模式图来表示。每个关系用矩形来表示,关系名字显示在矩形上方,矩形内列出属性,主码属性用下划线标注。外码依赖用从参照关系的外码属性到被参照关系的主码属性之间的箭头来表示。
关系查询语言(query language)
是用户用来从数据库汇总请求获取信息的语言,定义了一组可作用于表上并输出表作为结果的运算集,这些运算可以组合成表达式表达所需的查询。
可分为过程化语言和非过程化语言。实际使用的查询语言包含两种成分。
过程化语言(procedural language):用户指导系统对数据库执行一系列操作以计算出所需结果。
非过程化语言(nonprocedural language):用户只需描述所需信息,不用给出获取该信息的具体过程。
纯查询语言:关系代数(过程化)、元组关系演算和域关系演算(非过程化)。
关系代数(relational algebra)
提供一组运算,以一个或多个关系为输入,返回一个关系作为输出。
关系运算
所有过程化关系查询语言都提供一组运算,这些运算施加于单个关系或一对关系上,运算结果总是单个的关系。
常用关系运算:
·选择:从单个关系中选出满足一些特定谓词的特殊元组,结果是一个新关系(原始关系的一个子集)。
e.g. 从instructor关系中选择满足谓词”salary > 85000 dollars”)的元组。
·投影:从一个关系中选出特定的属性(列),结果是一个只包含那些选择属性的新关系。
e.g. 从instructor关系中只列出ID和salary两个属性。
·连接运算:把分别来自两个关系的元组对合并成单个元组,有几种不同的连接方式。
自然连接:匹配元组在两个关系共有的所有属性上取值相同。
e.g.自然连接instructor关系和department关系,如果来自instructor关系的一个元组与来自department关系的一个元组在dept_name属性上取值相同,它们就是匹配的。
·笛卡尔积:从两个关系中合并元组,结果包含来自两个关系元组的所有对,无论它们的属性值是否匹配。
·标准的集合运算(因为关系是集合e.g.合并、交、集合差)
关系运算可以施加到查询结果上(因为关系查询的结果本身也是关系),但并非在所有情况下都能任意交换运算顺序。
来源:https://www.cnblogs.com/RDaneelOlivaw/p/7808212.html