从笛卡尔积出发,到关系数据库那里,这八个看上去好像简单的组合背后,暗藏着涵盖整个关系型数据库理论的基石。
若你理解了,这个数学概念向实际的数据管理工具如何进行转化时,那你便能够真正去掌握数据库设计拥有的核心思想了。
关系模型的数学起源
笛卡尔积是理解关系模型的关键起点。
要是设定存在三个域,其中一个是学号集合,具体为{S01,S02},另一个是姓名集合,是{张三,李四},还有一个是性别集合,为{男,女},那么这三个域之间的笛卡尔积就会生成总计2×2×2,也就是8种具有可能性的组合。
这八种组合之中,有包含了“S01,李四,男”这种情形的合理数据之情况,同时,还存在另外的一种景象,即为其中包含了“S02,张三,女”这般在现实的情境下根本不可能出现的匹配状况。
在数据库理论中,关系被严格定义为笛卡尔积的子集。
这表明,学生关系S,该关系由stno、stname、stsex构成,并非在于涵盖全部的那八种可能出现的组合情况,实则是仅仅挑选出那些契合实际情形的元组。
好比真正存在着的学生记录或许仅仅有四条,这四条记录共同构成了一种具备实际意义的关系。
关系的基本构成要素
属性是关系表中每一列的命名标识。
即使有着多个列,或许它们源自同一个域,然而每一个列都必定得拥有独一无二的名称,唯有如此才能够防止产生混淆。
于学生关系里,stno、stname、stsex属于三个不一样的属性,它们分别对应着不同的语义意思。
候选码是能唯一标识每个元组的属性组合。
最为简单的情形是,单个属性,像学号这一属性,能够作为候选码,而在复杂的状况之下,或许需要多个属性进行组合。
当所有的属性一块儿组合而成候选码的时候,就叫做全码,而这样的情形在多对此关系里常常会出现。
关系的不同类型
基本关系乃是实际存储数据的那种物理表,它直接映射至存储设备之上的数据。
数据库里,这类关系持久存在,它涵盖所有实际记录,它是应用程序直接能够操作的对象。
查询表是从基本关系中通过查询操作临时生成的结果集。
与实际存储数据不同,视图表属于虚拟表,它里头储存的并非实际数据,而是定义,并且在每次用到它的时候,都是动态生成的。
这两种表类型为数据访问提供了灵活性和安全性控制。
关系模式的规范化要求
关系模型强调整每一个分量都必须是不可分的数据项。
这表明,表里面不可以含括组合数据项,或者多值属性,每一个单元格仅仅能够贮存单一的值。
这是关系规范化的最基本条件,称为第一范式。
存在一种名为关系模式的形式化表示,其呈现为R(U, D, DOM, F这样的形式),其中,U所代表的是属性集合,D表示的是属性来源的域,DOM是属性到域的映射,F代表的则是属性间的数据依赖关系,有句号。
这四部分共同定义了关系的结构和约束。
关系操作的集合特性
关系操作的最大特点是以集合为处理单位。
选择操作以整个关系作为输入,投影操作以整个关系作为输入,连接操作以整个关系作为输入,且选择、投影、连接等操作的输出均为完整的关系。
这和非关系模型那种一次只处理一个记录的方式,形成了极为显著的差异,极大幅度地提升了数据进行处理时的那项效率。
五种基本操作包括并、差、笛卡尔积、选择和投影。
其他操作如连接、除等都可以通过这五种基本操作组合实现。
这种封闭性确保了关系代数的完备性和可扩展性。
完整性约束的保障机制
实体完整性规则要求主属性不能取空值。
在学生关系里头,学号充当主码的时候,得唯一标识每一个学生,不可以有未知或者重复的情形出现。
这条规则保证了实体的可识别性。
参照完整性通过外码实现关系间的引用约束。
若发生学生关系引用学院关系的学院号这一情形,那就一定要保证所引用的值于学院关系里面是实际存在着的,又或者要允许呈现为空值这种情况来表明还未作分配,才行。
专门为具体应用场景而设置特殊约束的用户定义的完整性,就像年龄得大于零同时还得小于150这种情况。
先是将抽象的数学概念和严格的完整性规则组合到一起,这样便形成关系数据库,且这一关系数据库由此变成现代信息系统的基石。
当前,你已然知晓了关系模型的核心原理,可否列举出一个日常运用的应用系统,剖析其中有可能存在的关系完整性约束呢?
欢欢喜喜地在那个评论区域之内分享你所发现的一些种种,去点动并收集保存这篇文章,使得更多的人能够掌握数据库的那种精髓所在。

Comments NOTHING