数据库应用程序开发入门篇—— 关系数据库中的基本概念

来源:互联网 发布:萨德导弹防御系统 知乎 编辑:程序博客网 时间:2024/06/04 13:51

数据库应用程序开发入门篇—— 关系数据库中的基本概念

写在前面:关系数据库是目前应用最广泛的的数据库,了解关系型数据库的基本概念,有助于应用开发。

1.关系数据库中基本概念

关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系数据库中涉及的基本概念(码和键是同个意思,主码即主键)如下:
关系(Relation):一个关系对应通常说的一张表
元组(Tuple): 表中的一行即为一个元组
属性(Attribute):  表中的一列即为一个属性,给每一个属性起一个名称即属性名
候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。 简单的情况:候选码只包含一个属性
全码(All-key)最极端的情况下关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。
主码(Primary key):表中的某个属性组,它可以唯一确定一个元组。若一个关系有多个候选码,则选定其中一个为主码。
外码(Foreign Key):概念见下面参照完整性里面。
主属性(Prime attribute)候选码的诸属性称为主属性(Prime attribute)
非主属性( Non-Prime attribute):不包含在任何侯选码中的属性称为非主属性( Non-Prime attribute)或非码属性(Non-key attribute) 
域(Domain):属性的取值范围。
分量:元组中的一个属性值。
关系模式对关系的描述,形式化的表示为:关系名(属性1,属性2,…,属性n)
                        例如,学生(学号,姓名,年龄,性别,系,年级)

2.关系模型的三类完整性

关系数据模型由关系数据结构、关系操作、关系中的完整性约束规则三个基本部分组成。重点了解三类完整性约束规则和关系上的操作。
关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性

1)实体完整性

实体完整性规则:若属性A是关系R的主属性,则A不能取空值。
实体完整性规则规定,关系的主码中的属性(即主属性)不能取空值。空值(NULL)不是0,也不是空字符串,而是没有值。换言之,所谓空值就是“不知道”或“无意义”的值。由于主码是实体的惟一标识,如果主属性取空值,关系中就会存在某个不可标识的实体,即存在不可区分的实体,这与实体的定义矛盾,因此,这个规则称为实体完整性规则。
注意:实体完整性规则规定基本关系的所有主键的各属性都不能取空值,而不仅是主键整体不能取空值。
例如,选课(学号,课程号,成绩)关系中,属性组“学号”和“课程号”为主键,同时也是主属性,则这两个属性均不能取空值。

2)参照完整性

a.  外码和参照关系(重要概念)
设F是基本关系R的一个或一组属性,但不是关系R的主码(或候选码)。如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),称基本关系S为被参照关系(Referenced  Relation)。
例如,有教师授课关系模型如下:
课程(课号,课名,学分)
教师(工号,姓名,职称,课号
参考书(书号,书名,课号
其中,关系教师中的属性“课号”不是主码,该属性与关系课程中的主码“课号”相对应。
因此,“课号”是关系教师的外码。关系教师是参照关系,关系课程是被参照关系。

b.参照完整性规则
参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应,则对于R中的每个元组在F上的值必须满足:或者取空值(F的每个属性均为空值),或者等于S中某个元组的主码值。
例如,在上述教师授课关系模型中,关系教师中的外码“课号”只能是下面两类值:
(1) 空值。表示还未给该教师安排课。
(2) 非空值,但此值必须为被参照关系课程中某一门课程的“课号”。
在关系数据库中,表与表之间的联系是通过公共属性实现的。这个公共属性往往是一个表的主码,同时是另一个表的外码。
注意:在实际应用中,外码不一定与对应的主码同名。

3)用户定义完整性

任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,关系数据库系统根据现实世界中应用环境的不同,往往还需要另外的约束条件。用户定义的完整性就是针对某一具体要求来定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
例如,某个属性必须取惟一值;某些属性之间应满足一定的函数关系;某个属性的取值范围在0—400之间等。关系模型应提供定义和检验这类完整性的机制,以便系统用统一的方法处理它们,而不需要由应用程序来承担这一功能。

4)完整性约束规则的检查——如何在实际操作中执行完整性约束规则

为了维护数据库中数据的完整性,在对关系数据库执行插入、删除和修改操作时,就要检查是否满足以上三类完整性规则。
(1) 当执行插入操作时,首先检查实体完整性规则,插入行的主码属性上的值,是否已经存在。若不存在,可以执行插入操作;否则不可以执行插入操作。再检查参照完整性规则,如果是向被参照关系插入,不需要考虑参照完整性规则;如果是向参照关系插入,插入行在外码属性上的值是否已经在相应被参照关系的主码属性值中存在。若存在,可以执行插入操作;否则不可以执行插入操作,或将插入行在外码属性上的值改为空值后再执行插入操作(假定
该外码允许取空值)。最后检查用户定义完整性规则,检查被插入的关系中是否定义了用户定义完整性规则,如果定义了,检查插入行在相应属性上的值是否符合用户定义完整性规则。若符合,可以执行插入操作;否则不可以执行插入操作。
(2) 当执行删除操作时,一般只需要检查参照完整性规则。如果是删除被参照关系中的行,则应检查被删除行在主码属性上的值是否正在被相应的参照关系的外码引用,若没被引用,可以执行删除操作,若正在被引用,有三种可能的做法:不可以执行删除操作(拒绝删除),或将参照关系中相应行在外码属
性上的值改为空值后再执行删除操作(空值删除),或将参照关系中相应行一起删除(级联删除)。
(3)当执行修改操作时,因为修改操作可看成先执行删除操作,再执行插入操作,因此是上述两种情况的综合。

3.关系模型上的操作

关系数据库所使用的操作可以由抽象的关系代数和关系演算来表达,这部分内容涉及集合操作等简单数学问题,主要使用抽象符号来表示,能够脱离具体语言来表达查询、更新和控制等操作,对于理解数据库操作十分有用,在这里不做过多介绍,还是等到后面学习SQL语句时感受吧。

4.参考资料

(1)数据库原理及开发应用      清华大学出版社 周屹等编著
(2)http://shujuku.zjwchc.com/
原创粉丝点击