当前广泛应用的数据库模型
是关系模型,基于关系模型建立的数据库就是关系数据库 下面我们即将介绍关系数据库的基本概念
包括:什么是关系模型,关系模型的特点
主键的概念,数据的完整性
关系模型中使用二维表组织数据,每一个二维表
称为一个关系,也称为表,或者数据表。
像 这个表格,在关系模型中就称为一个关系
每个关系都有一个区别于其它关系的名称,称为 表名。
这个关系我们起的名字 叫教师表
一个关系是同类事物的数据的集合,这些事物是现实中的 个体,称为实体。
这个关系中的实体就是一名一名的 教师。
每个实体对应一行数据,每一行数据称为
一条记录,也叫元组 或数据元素。
表中的每一列 对应实体的一个特征,称为属性或字段
第一行列出了 各个属性的名称,称为属性名
或字段名,这里的编号、 姓名、 性别、
年龄、 专业、 职称,就是字段名,字段名不能够重复
对每条记录,各类的取值就是属性值,也叫
字段值,或分量。
这里的 0601 是
编号这个字段的属性值,张磊是 姓名这个属性的值。
属性值的取值范围 称为域,或值域。
如性别的取值范围是男,或女 年龄的取值范围是
0 到 150 之间
表的第一行决定了表的格式,称为关系模式,也叫 表结构。
关系模式的写法是:表名 一对圆括号,其中列出用逗号隔开的
所有的属性名。
这就是教师表的关系模式
在关系模型中,关系中的每一列不可再分
也就是每一列是一个简单特征。
比如 如果学生表有一列的名字叫基本信息,而基本信息可以包含姓名、
性别、 年龄等信息,这就是一个
可分的字段,是不符合关系模型的要求的
同一个关系中不能出现相同的字段名,因为 相同意味着重复。
关系中不出现完全相同的 两条记录。
关系中任意交换两行位置不影响数据的实际含义 因为信息没有损失。
关系中任意交换两列的位置也不影响数据的 实际含义。
这就是关系模型中对于关系的基本约定
为了减少冗余,希望关系中的数据不重复,但有时
看似重复的数据实际表示的是不同的个体,如果去掉就无法表示这两个 个体了。
比如生活中两个人同名的情况经常 遇到:两个人在同一所学校,都是男性
年龄相同,专业相同,甚至职称也相同。
这时为了区分 这两个人,我们会给他们编号,编号不同,就是 不同的个体。
这时编号是能够唯一表示个体的属性
在数据库中称为键,或者是码
在这个表中,身份证号码也有此作用,也可以作为 键。
所以一个关系可能会有多个键
这时我们会选定一个键作为个体的唯一标识,这个键就称为是主键,或者是
主码,也叫关键字。
键可以有 多个,主键只能有一个,但也要注意:
一个键或主键可能包含多个属性,称为组合键,或
组合主键。
例如 这是学生选课表,学号
代表学生,课程编号代表课程 一名学生可以选多门课程
一门课程也可以被多个学生来选修,但一个人
选一门课程只能选一次,得到一个成绩 在这个表中,学号、
课程编号 都不能唯一标识一条记录。
而学号 和课程编号组合起来就可以,因为一个人
选一门课程不能选两次。
或者说学号和课程编号都 相同的记录,成绩也应该相同,那就是同一条记录
不能够记两次,应该把它删除
所以在这个表中,学号和课程编号构成了这个表的 组合主键。
刚才的学生选课表,其中只有学号
没有学生的班级和姓名信息,它们在另一个
表:学生表当中,要获得学生的班级、
姓名,可以通过学号在学生表中查询,这就是表之间的联系。
注意 两个表中都有学号这一属性 在学生表中学号是主键
在选课表中学号不是主键,但它是另一个表,也就是学生表里头的
主键,所以称为外键
所谓外键,就是说它在这个表中
不是主键,它是另外一个表里头的主键,所以在选课表中,学号就是 外键。
为了保证数据的可用性和 减少冗余,关系数据库约定:在一个表中
主键只能有一个,并且主键的取值既不能重复,也不能为空
这一限定条件称为实体的完整性,或 实体完整性约束,或主键约束
不仅如此,为了保证数据的有效性,关系数据库还要满足另外
两种完整性约束:一个是参照完整性,另一个是用户定义的完整性
参照完整性是说外键的取值必须是另一表中对应
主键的取值之一,例如刚才的
选课表和学生表。
选课表当中学号是外键
它的取值必须是学生表中的一个学号,否则
我们就不能从学生表中查到这个学生的班级和姓名 会产生错误。
比如选课表中有一条记录 学号是 1606002,这个学号在
学生表中是没有的,就违反了参照完整性,这样的数据
通常认为是不合理。
要么应该在学生表中 增加这个学生的信息,要么在选课表中把
这条记录删除,或者说选课表中不应该有这条
选课记录。
用户定义的完整性 是数据库用户根据数据的含义对数据所做的限定
例如性别限定取值为男或女,百分制成绩在 0
到 100 之间等。
完整性 实际是为了重要信息不缺失而做的限定条件
是数据库中的重要概念,一定要理解清楚,在数据库应用中经常用到
[空白_录音]
[空白_录音]