一、层次和网状数据模型
层次数据模型:基本想法:现实生活中很多东西都用层次
记录和域:比如学生是记录(现实生活中的实体),学号、班级等就是域
双亲子女关系:表达现实世界中的一个一对多关系,两个记录类型之间;比如一个系有多个班级
多个PCR关系形成树形结构,一个记录类型只能有一个父类型
现实世界中有很多多对多关系,并且一个记录类型可能有多个父类型,并且还存三元模型,难以表示;为此引入了虚记录类型,实际上是一个指针;
网状数据模型:
基本数据结构为set,一个set表达了现实世界中的两个记录类型的一对多关系,1为主记录,N为属记录,一个记录类型可以是多个系的主记录,也可以是多个系的属记录
突破了层次数据模型的限制、记录和数据项(可以是一个向量,即复合类型)、set(系)、LINK记录类型(表达现实世界中表达多对多和N元模型)
二、关系数据模型
基本数据结构:表 实体和联系都用表来表示
特性:A、基于集合论,抽象级别更高
B、屏蔽了底层细节,容易理解
C、可以建立新的代数系统-关系代数
D、定义非过程化查询语言-SQL
E、软连接
属性(attribute):比如姓名、学号等等
域(domain):取值范围 原子的,不能再分,基本数据类型,允许为null;
关系(relation):实体和实体之间的联系被表达为一个或多个关系;一个关系是在它所有属性的值域上定义的N元联系,属性的个数称为目
元组(tuple):一行
主键(primary key):
1、这个关系里任意两条不同元组在这个属性上的值不相等(即该属性的值唯一决定其他属性的值)
2、这个属性组的任何子集不满足条件1
A、满足1不满足2称为超键
B、如果有多个,则有DBA选择一个为primary key,其余的为alternate key
C、如果由所有属性组成,则称之为全键
外键(foreign key):用一组属性引用其他表内的元组,该属性为其他表内的主键,则称为这张表内的外键(不为空)
其他完整性约束:A、域完整性约束(每个值都应该复合值域)B、实体完整性约束(主键不能为空)
关系代数:
基本操作:selection()选择满足关系的元组
模式:与原关系相同
projection(π)删除不需要的属性
模式:结果关系里面的属性就是运算符里面的属性
必须消除结果中可能出现的重复元组,因为重复元组表示同一个实体(实际系统中,不会特意删除, 除非用户自己要求)
cross—product(x)笛卡尔乘积,把两个关系拼接
set-difference(-)找出属于第一个关系不属于第二个关系的元组
union(并)合并两个满足并兼容关系的元组
并兼容条件:A、属性个数相同 B、对应属性类型相同
condition join(条件连接):R和S条件连接,先RXS,在根据条件C选择
Equi-Join:等值连接,如果条件连接里面的条件全是等值,等值只保留一个
Natural-Join:自然连接,所有的公共属性都做等值连接
Division(除法):常用于查找所有;A/B(A中有x,y,B中有y):对关系B中任何一个y,A中都有对应的 xy,这样的x即为所求
Outer-Join(外连接):左外连接,右外连接,全外连接;
Outer-Unions(外并操作):参与运算的属性的并,元组也是参与运算的属性的并
关系演算(非过程化)
原子公式:<x1,x2,...,xn>属于Rnname,XopY,X op constant
元组关系演算(TRC)
域关系演算(DRC)
三、E-R模型
基数比约束:可以一对多,多对多,多对一,一对一
参与度约束:每一个实体参与某一个联系的最大最小次数