一关系模型 ;关系模型是年由EFCodd提出的与层次网状模型相比它有以下特点 数据结构简单—二维表格 扎实的理论基础 a关系运算理论 b关系模式设计理论 关系模型的基本概念 ;用二维表格结构表示实体外键表示实体间联系的数据模型称为关系模型 ;介绍二维表格中的术语体系结构完整性约束和关系模型的形式定义 ; 二维表格的基本术语 二维表格 关系模型中字段称为属性字段值称为属性值记录类型称为关系模型关系模式名是R记录称为元组元组的集合称为关系或实例一般用大写字母ABC……表示单个属性用小写字母表示属性值关系中属性的个数称为元数元组的个数称为基数例子的关系元数为基数为有时也称关系为表格元组为行属性为列 键 键由一个或几个属性组成分为以下几种 a超键在关系中能惟一标识元组的属性集称为关系模式的超键 b候选键不含多余属性的超键称为候选键即在候选键中若要再删除属性就不是键了 c主键用户选作元组标识的一个候选键称为主键一般情况下键指主键 关系的定义和性质 关系是一个元数为K(K>=)的元组的集合 关系是一种规范化的表格它有以下限制 a关系中的每一个属性值都是不可分解的 b关系中不允许出现相同的元组 c关系中不考虑元组之间的顺序 d 元组中属性也是无序的 关系模式关系子模式和存储模式 关系模型中概念模式是关系模式的集合外模式是关系子模式的集合内模式是存储模式的集合 关系模式 关系模式实际就是记录类型包括模式名属性名值域名以及模式的主键它不涉及物理存储方面的描述只是对数据特性的描述 关系子模式 子模式是用户所用到的那部分数据的描述除了指出用户的数据外还应指出模式与子模式之间的对应性 存储模式 关系存储时的基本组织方式是文件元组是文件中的记录由于关系模式有键因此存储一个关系可以用散列方法或索引方法实现 关系模型的三类完整性规则 实体完整性规则 这条规则要求关系中元组在组成主键的属性上不能有空值如有空值那么主键值就起不了惟一标识元组的作用 参照完整性规则 如果属性集K是关系模式R的主键K也是关系模式R的外键那么在R的关系中K的取值只允许有两种可能或为空值或等于R关系中某个主键值 使用时应注意 a外键和相对应的主键可以不同名只要定义在相同的值域上即可 bR和R也可以是同一个关系模式表示了属性之间的联系 c 外键值是否允许为空应视具体问题而定 用户定义的完整性规则 这是针对具体数据的约束条件由应用环境而定 ;关系模型的形式定义 三个组成部分数据结构数据操作和完整性规则 关系模型的基本数据结构就是关系 关系运算分为关系代数和关系演算 关系模型的三类完整性规则 二关系代数 关系数据库的数据操作分为查询和更新两类查询语句用于各种检索操作更新操作用于插入删除和修改等操作 关系查询语言根据其理论基础的不同分成两大类 关系代数语言查询操作是以集合操作为基础运算的DML语言 关系演算语言查询操作是以谓词演算为基础运算的DML语言 关系代数的五个基本运算 关系代数是以关系为运算对象的一组高级运算的集合关系定义为元数相同的元组的集合集合中的元素为元组关系代数中的操作可分为两类 传统的集合操作并差交笛卡尔积 扩充的关系操作投影选择联接和自然联接除 并 设有两个关系R和S具有相同的关系模式R和S的并是由属于R和S的元组构成的集合记为R∪S 注意R和S的元数相同 差 设有两个关系R和S具有相同的关系模式R和S的差是由属于R但不属于S的元组构成的集合记为R-S 注意R和S的元数相同 笛卡尔积 设关系R和S的元数分别为r和s定义R和S的笛卡尔积是一个(r+s)元的元组集合每个元组的前r个分量(属性值)来自R的一个元组后s个分量来自S的一个元组记为R×S 若R有M个元组S有n个元组则R×S 有m×n个元组 选择 从关系中找出满足给定条件的所有元组称为选择其中的条件是以逻辑表达式给出的 该逻辑表达式的值为真的元组被选取这是从行的角度进行的运算即水平方向抽取元组经过选择运算得到的结果可以形成新的关系其关系模式不变但其中元组的数目小于或等于原来的关系中的元组的个数它是原关系的一个子集 记为 δF(R)≡{t∣t属于R∧F(t)=true} 投影 从关系中挑选若干属性组成的新的关系称为投影这是从列的角度进行运算经过投影运算可以得到一个新关系其关系所包含的属性个数往往比原关系少或者属性的排列顺序不同如果新关系中包含重复元组则要删除重复元组 记为∏A(R)={t[A] ∣t属于R} A为R中的属性列 例如 ∏(R) 关系代数的四个组合操作 交 关系R和S的交是由属于R又属于S的元组构成的集合记为R∩SR和S要求定义在相同的关系模式上 R∩S≡ {t∣t属于R∧t属于S}R和S的元数相同 联接 联接有两种θ联接和F联接(θ是算术比较符F是公式) ⑴ θ联接 θ联接是从关系R和S的笛卡尔积中选取属性值满足某一θ操作的元组记为 R︱×i θj︱S这里i和j 分别是关系R和S中第 i个第j个属性的序号 R︱×i θj︱S≡ δi θ (r+j)( R×S ) 如果θ是等号=该联接操作称为等值联接 ⑵F联接 F联接操作是从关系R和S的笛卡尔积中选取属性值满足某一公式F的元组记为 R︱×F︱S这里的F是形为F∧F∧…∧Fn的公式每一个f都是形为i θj的式子而i和j 分别是关系R和S中第 i个第j个属性的序号 自然联接 两个关系R和S的自然联接用R︱×︱S表示具体计算过程如下 ①计算R×S ②设R和S的公共属性是A……Ak挑选R×S中满足R A=SA……RAk=SAk的那些元组 ③去掉SA…… SAk的这些列 如果两个关系中没有公共属性那么其自然联接就转化为笛卡尔积操作 除法 给定关系R(XY)和S(YZ)其中XYZ为属性组R中的Y与S中的Y可以有不同的属性名但必须出自相同的域集R与S的除运算得到一个新的关系P(X)P是R中满足下列条件的元组在X属性上的投影元组在X上分量值x的象集YX包含S在Y上投影的集合 关系代数表达式及其应用实例 在关系代数运算中把由五个基本操作经过有限次复合的式子称为关系代数表达式这种表达式的结果仍然是一个关系可以使用关系代数表达式表示各种数据查询操作 例题设教学库中有三个关系 学生关系S(S#SNAMEAGESEX) 学习关系SC(S#C#GRADE) 课程关系C(C#CNAMETEACHER) 下面用关系代数表达式表达各个查询语句 检索学习课程号为C的学生学号与成绩 检索学习课程号为C的学生学号与姓名 检索选修课程名为MATHS的学生学号与姓名 检索选修课程号为C或C的学生学号 检索至少选修课程号为C或C的学生学号 检索不学C课的学生姓名有年龄 检索学习全部课程的学生姓名 ∏S#GRADE(δC#=C(SC)) 或∏(δ=C |