数据库必知词汇:关系模型

关系模型(Relational Model) 是以集合论中的关系概念为基础发展起来的。关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系来表示。在实际的关系数据库中的关系也称表。一个关系数据库就是由若干个表组成。关系模型是指用二维表的形式表示实体和实体间联系的数据模型。

1970年,IBM的研究员E.F.Codd博士发表《大型共享数据银行的关系模型》一文提出了关系模型的概念,论述了范式理论和衡量关系系统的12条标准,如定义了某些关系代数运算,研究了数据的函数相关,定义了关系的第三范式,从而开创了数据库的关系方法和数据规范化理论的研究。后来Codd又陆续发表多篇文章,奠定了关系数据库的基础。

关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。但是当时也有人认为关系模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。

为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持和反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。此后许多人把研究方向转到关系方法上,陆续出现了关系数据库系统。

关系模型的基本概念和基本术语如下:

  1. 关系:一个关系对应着一个二维表,二维表就是关系名。
  2. 元组:在二维表中的一行,称为一个元组。
  3. 属性:在二维表中的列,称为属性;属性的个数称为关系的元或度;列的值称为属性值。
  4. (值)域:属性值的取值范围为值域。
  5. 分量:每一行对应的列的属性值,即元组中的一个属性值。
  6. 关系模式:在二维表中的行定义,即对关系的描述称为关系模式。
  7. 键(码):如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关系的任何一个关系状态中的两个元组,在该属性上的值的组合都不同。
  8. 候选键(候选码):若关系中的某一属性的值能唯一标识一个元组如果在关系的一个键中不能移去任何一个属性,否则它就不是这个关系的键,则称这个被指定的候选键为该关系的候选键或者候选码。
  9. 主键(主码):在一个关系的若干候选键中指定一个用来唯一标识该关系的元组,则称这个被指定的候选键称为主关键字,或简称为主键、关键字、主码。每一个关系都有并且只有一主键,通常用较小的属性组合作为主键。
  10. 主属性和非主属性:关系中包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性为非主属性。
  11. 全键或者全码:一个关系模式中的所有属性的集合。
  12. 外键或者外码:关系中的某个属性虽然不是这个关系的主键,或者只是主键的,但它却是另外一个关系的主键时,则称之为外键或者外码。
  13. 超键或者超码:如果在关系的一个键中移去某个属性,它仍然是这个关系的键,则称这样的键为关系的超键或者超码。
  14. 参照关系与被参照关系:是指以外键相互联系的两个关系,可以相互转化。

常用的关系操作包括查询操作和插入、删除、修改操作两大部分。其中查询操作的表达能力最重要,包括:选择、投影、连接、除、并、交、差等。

关系的数据完整性包括:域完整性、实体完整性、参照完整性以及用户自定义的完整性。具体解释如下:

  • 域完整性:指属性的取值范围。
  • 实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值。
  • 参照完整性:若属性(或属性组)F是基本关系R的外键,它与基本关系S的主键Ks相对应(关系R和S不一定是不同的关系),则对于关系R中每个元组在属性F上的值必须为空值(F中的每个属性值均为空)或者等于S中某个元组的主键值。

资料来源:
周屹 李艳娟.数据库原理及开发应用(第二版):清华大学出版社,2013
Relation Data Model https://www.tutorialspoint.com/dbms/relational_data_model.htm
Relational Data Model in DBMS: Concepts, Constraints, Example https://www.guru99.com/relational-data-model-dbms.html
Relational Model https://www.techopedia.com/definition/24559/relational-model-database
Relational Model in DBMS https://www.geeksforgeeks.org/relational-model-in-dbms/

上一篇:Kafka - SQL 代码实现


下一篇:Kafka 分区备份实战