MOOC 数据库笔记(三):关系模型之基本概念
关系模型的基本概念
关系模型简述
1.最早由E.F.Codd在1970年提出。
2.是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义的基础上,引入集合理论与逻辑学理论提出的。
3.是数据库的三大经典模型之一,现在大多数数据库系统仍然使用关系数据模型。
4.标准的数据库语言(SQL语言)是建立在关系模型基础之上的,数据库领域的众多理论也都是建立在关系模型基础之上的。
关系模型研究什么
1.我们把关系(relation)都抽象成了一个一个Table。
2.关系模型就是处理Table的,它由三个部分组成:
①描述DB各种数据的基本结构形式(Table/relation)
②描述Table与Table之间所可能发生的各种操作(关系运算)
③描述这些操作所应遵循的约束条件(完整性约束)
关系模型的三个要素
①基本结构:Relation/Table
②基本操作:Relation Operator(例如:交∩、并∪、差-、投影π等等)
③完整性约束:实体完整性、参照完整性和用户自定义完整性。
关于关系运算
关系运算:关系代数和关系演算:关系演算:元组演算和域演算。
详见下周博客(可能)
关系的数学描述
首先定义列的取值范围“域(Domain)”
域(Domain)
1.一组值的集合,这组值具有相同的数据类型。如整数的集合、字符串的集合、全体学生的集合
2.集合中元素的个数为域的基数(Cardinality)
再定义“元组”及所有可能组合成的元组:笛卡尔积
笛卡尔积(Cartesian Product)
1.一组域D1,D2,......,Dn的笛卡尔积为:
D1×D2×......×Dn={(d1,d2,.....,dn)|di∈Di,i=1....n}
2.笛卡尔积的每个元素(d1,d2,......,dn)称作一个n-元组
元组(d1,d2,......,dn)的每一个值di叫做一个分量(component)
元组(d1,d2,......,dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合
若Di的基数为mi,则笛卡尔积的基数,即元组个数为m1×m1×...×mn
由于笛卡尔积中的所有元组不都是有意义的,因此...
关系(Relation)
1.一组域D1,D2,......,Dn的笛卡尔积的子集
2.笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)
由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名。
3.关系可用R(A1:D1,A2:D2,...,An:Dn)表示,可简记为R(A1,A2,...,An),这种描述被称为关系模式(Schema)或表标题(head)
4.R是关系的名字,Ai是属性,Di是属性所对应的域,n是关系的度或目(degree),关系中元组的数目称为关系的基数(Cardinality)
例如:家庭(丈夫:男人,妻子:女人,子女:儿童)或家庭(丈夫,妻子,子女)
5.关系模式R中属性向域的映像在很多DBMS种一般直接说明为属性的类型、长度等。
例如:Student(S# char(8),Sname char(10),Ssex char(2),Sage integer,D# char(2),Sclass char(6))
关系模式与关系
1.同一关系模式下,可有很多的关系
2.关系模式是关系的结构,关系是关系模式在某一时刻的数据
3.关系模式是稳定的:而关系是某一时刻的值,是随时间可能变化的
关系的特性及相关概念
1.列是同质的:即每一列中的分量来自同一个域,是同一类型的数据
2.不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
3.列位置互换性(无关性)
4.行位置互换性(无关性)
5.理论上,关系的任意两个元组不能完全相同。(集合的要求:集合内不能有相同的两个元素);现实应用中,表(Table)可能并不完全遵守此特性。
(这也说明了关系和表并不是完全相同的)。
6.元组相同是指两个元组的每个分量都相同。
7.属性的不可再分特性:又被称为关系第一范式
关系上的一些重要概念
候选码(Candidate Key)/候选键
关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
候选码不一定只有一个,候选码也可能是多个属性的集合。
例如学生表中学生的学号就是一个候选键。
主码(Primary Key)/主键
当有多个候选码时,可以选定一个作为主码。
DBMS以主码为主要线索管理关系中的各个元组。
主属性与非主属性
包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性
最简单的,候选码只包含一个属性。
最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)。
外码(Foreign Key)/外键
关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。
两个关系通常是靠外码连接起来的。
关系模型的完整性
实体完整性
关系的主码中的属性值不能为空值。
空值:不知道、不存在或者无意义的值
数据库中有了空值,会影响许多方面,如影响聚集函数运算的正确性,不能参加与算术、比较或逻辑运算等。
有空值的时候是需要特殊处理的,要特别注意。
参照完整性
一个关系的外码一定要在该外码多对应的关系的属性范围内。
一个关系的某一元组可以没有外码。
用户自定义完整性
用户针对具体的应用环境定义的完整性约束条件。
当有更新操作发生时,DBMS将自动安照完整性约束条件检验更新操作的正确性。
MOOC 数据库笔记(三):关系模型之基本概念的更多相关文章
- 数据库设计和ER模型-------之关系模型的基本概念(第二章)
关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...
- Odoo10学习笔记三:模型(结构化的应用数据)、视图(用户界面设计)
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189263.html 一:模型 [Odoo中,一切皆模型,连视图都是模型.Odoo将各种数据,如:权限数据 ...
- java中对象模型与数据库中的关系模型
实体类还需要配置到hibernate.cfg.xml中,以便Hibernate初始化实体类与数据库表的映射关系.如果只配置了映射关系,而没有配置到hibernate.cfg.xml中,Hibernat ...
- MOOC 数据库笔记(五):关系演算
关系演算 概述 (这部分的内容大多与离散数学有关,我没有相关基础,所以现在只是简单看一下) 关系演算是以数理逻辑中的谓词演算为基础的. 关系演算是描述关系运算的另一种思维方式. SQL语言是继承了关系 ...
- MOOC 数据库笔记(四):关系代数
关系代数 关系代数概述 特点 基于集合,提供了一系列的关系代数操作:并.差.笛卡尔积(广义积).选择.投影和更名等基本操作 以及交.连接和关系除等扩展操作,是一种集合思维的操作语言. 关系代数操作以一 ...
- MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)
五.数据查询语言(DQL) (重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...
- MOOC python笔记(三) 序列容器:字符串、列表、元组
容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器,如:字符串.列表. 通用序列容器操作 容器连接+ 加号可以把两个序列连接成一个更大的容器,相加后两个序列的值并不 ...
- 数据库设计与 ER 模型 - 数据库系统原理
数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...
- 在SQL Server中实现关系模型
使用SQL Server的Transact-SQL(T-SQL)方言,此楼梯将为您提供如何使用SQL Server表中的数据的基本了解. DML是数据操作语言,是处理数据的语言的一个方面.它包括SEL ...
随机推荐
- tomcat做成Windows自启动服务
一.下载Tomcat 下载Windows版本的tomcat,一般是以zip结尾的包,免安装的包,而Linux包虽然解压可以运行,但是缺少service.bat关键文件,无法做成服务形式 下载网站: h ...
- 【AtCoder】 ARC 099
link C-Minimization 枚举覆盖\(1\)的区间,两边的次数直接算 #include<bits/stdc++.h> #define ll long long #define ...
- Linux expect详解
随处可见的expect第一次见expect这个命令还是我第一次参加全量上线的时候,那是公司的一个牛人用Shell脚本写的一套自动部署.MD5 比对.发布的全量上线工具,没事的时候,看了下其中的几个脚本 ...
- 第一章 Electron介绍 | Electron in Action(中译)
Github 官方地址 代表作: Visual Studio Code Atom - Code editor. Github开源的代码编辑器,Electron起源地 Visual Studio Cod ...
- 冰多多团队-第七次scrum例会
冰多多团队-第七次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj 接入IAT模块 debug, IAT 牛雅哲 调研科大讯飞SDK中其他模块,寻找符合我们的需求的部分,将接口更换成 ...
- springboot框架在容器加载完成之后执行某个方法
问题描述: 想在websocket实现的Handler中执行一些初始化操作,但是初始化操作使用到了@Autowired自动注入的变量,而且是保护类型.第一个想法是放到Handler构造函数中执行,但是 ...
- Leetcode 222:完全二叉树的节点个数
题目 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置. ...
- 在 RPA10.X 运行异常,RPA9 却正常的问题处理
一.现象 RPA10.X 在一些极少数 win7/win10 环境中一运行就崩溃或无运行结果. 二.原因 出现上述现象已经确定是OPenGL 驱动兼容性造成的. 三.解决方法 方法一 只要把流程的管理 ...
- android ------ 高版本的 Tablayout 下划线宽度
前面呢,有写过TabLayout的博客,最近开发用到了高本版遇到一些问题,来总结一下 Android--------TabLayout实现新闻客户端顶部导航栏 Android中Tablayout设置下 ...
- dubbo连接过程
场景1 启动时 dubbo服务提供端在Zookeeper上注册的节点目录:假设接口名称是:com.bob.dubbo.service.CityDubboService dubbo服务提供端连接到注册中 ...