超键:在关系中能唯一标识一行(元组)的属性集称为关系模式的超键。(注意,超键也是一个属性集,不一定只是一个属性。)

候选键:不含有多余属性的超键称为候选键。(候选键可以是一个属性集,也可以只是一个属性。一个表中可以包含一个或多个候选键。候选键在设计阶段被标识)

主键:用户选作元组标识的一个候选键为主键。(最好选择包含最少的属性的候选键作为主键)

 外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是另一关系的外键,如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外键。 (外键可以有重复的值或空值,可以是一组属性集,用来匹配本表或其他表的候选键;外键:如果模式R中某属性集是其他模式的候选键,那么该属性集对模式R而言是外键(foreign key))



实体完整性是通过主键的定义来实现的。一旦某个属性或属性组被定义为主键,该主键的每个属性就不能为空值,并且在表中不能出现主键值完全相同的两个记录。主键可以在CREATE TABLE语句中使用PRIMARY KEY定义。

参照完整性(引用完整性)在更新记录时,参照完整性保持表之间已定义的关系。参照完整性基于外键与主键之间外键与唯一键之间的关系。参照完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改

 

关系模式:关系模式实际上就是记录类型。它包括:模式名,属性名,值域名以及模式的主键。关系模式仅是对数据特性的描述。 (这通常在数据库中表现为一个数据表的结构)


关系子模式:就是用户所用到那部分数据的描述。

存储模式:关系存储时的基本组织方式是文件,元组是文件中的记录。

 

关系模型的形式定义:数据结构、数据操作和完整性规则。

 

关系代数运算

1、关系代数的五个基本操作:并、差、笛卡尔积、投影和选择。

2、关系代数的四个组合操作:交、联接、自然联接和除法


 

查询优化

查询优化的目的就是为了系统在执行时既省时间又能提高效率,在关系代数运算中,通常是先进行笛卡尔积或联接运算,再进行选择和投影,恰当地安排选择、投影和联接的顺序,就可实现查询优化。

优化的策略主要有以下几点:

(1)在关系代数表达式中尽可能早地执行选择操作(早选择).

(2)把笛卡尔积和随后的选择操作合并成F联接运算(F联接)

(3)同时计算一连串的选择和投影操作(同时算)

(4)保留同一子表达式的结果

(5)适当对关系文件进行预处理

(6)计算表达式之前先估计一下怎么计算合算。

以上几点需要理解。根据表达式优化的算法步骤对给定表

 

存储过程

经过编译了的,存储在数据库的一次执行的,批处理SQL语句,只有一个批处理。

 

数据库服务器执行SQL命令的顺序

1,检查语法

2,编译 

3,优化 

4,执行

对于存储过程,1和2只执行一次,3只有在缓存中没有的时候才可以再次执行,其余情况下,都只需要执行4。

 

各种键的题目


  

例如:学生信息表

学号 身份证号    姓名 年龄 性别

其中:学号:是唯一的(能唯一标识一个学生记录),所以是超键,而且没有多余属性,所以也是候选键

        身份证号:也是唯一的,也是超键,而且没有多余属性,所以也是候选键

       (学号,姓名):唯一,是超键,有多余属性姓名,不是候选键

        (学号,姓名,年龄): 唯一,是超键,有多余属性姓名和年龄,不是候选键

          --这里可以看出,超键的组合是唯一的,但可能不是最小唯一的,最小唯一的才是候选键或称为码

         这里我们可以将学号作为主键,也可以将身份证号做主键

         --主键是选中的一个候选键

问题:(学号,身份证)是候选键吗?答案:不是


强制参照完整性时,SQL Server 禁止用户进行下列操作:
<1>当主表中没有关联的记录时,将记录添加到相关表中。
<2>更改主表中的值并导致相关表中的记录孤立。
<3>从主表中删除记录,但仍存在与该记录匹配的相关记录。

用户自定义完整性约束SQL提供非空约束、对属性的CHECK约束、对元组的CHECK约束、触发器等来实现用户的完整性要求。 
约束的更新约束与数据库中的表、视图等一样,可以进行增加、删除和修改的更新操作。为了更新约束,需要在定义约束是对约束进行命名,在约束前加上关键字CONSTRAINT和该约束的名称。