数据库系统概论(2)——Chap. 2 关系数据库基础
数据库系统概论(2)——Chap.2 关系数据库基础
一、关系数据结构及形式化定义
1、关系
关系模型的数据结构只包含单一的数据结构——关系。在关系模型中,现实世界的实体及实体间的各种联系均用单一的结构类型,即关系来表示。
(1)笛卡尔积
关系是建立在集合基础上的,先介绍笛卡尔积的概念:
【笛卡尔积(cartesian product)】给定一组域D1,D2,……,Dn,允许其中某些域是相同的,D1,D2,……,Dn的笛卡尔积为:
D1 x D2 x…… x Dn = {(d1, d2, ……, dn)|di属于Di,i=1,2,……,n}
其中,每一个元素(d1, d2, ……, dn)叫做一个n元组(n-tuple),或简称元组(tuple)。元素中的每一个值di叫做一个分量(component)。
一个域允许的不同取值个数称为这个域的基数(cardinal number)。
若Di(i=1,2,……,n)为有限集,其基数为mi(i=1,2,……,n),则D1 x D2 x…… x Dn的基数M为:
M = m1 x m2 x …… x mn
(2)关系
下面给出关系的定义:
【关系】:D1 x D2 x…… x Dn的子集叫做在域D1,D2,……,Dn上的关系,表示为:
R(D1,D2,……,Dn)
R为关系的名字,n是关系的目或度(degree)。n=1时,称为单元关系(unary relation)或一元关系;n=2时,称为二元关系(binary relation)。n目关系必有n个属性。
一般来说,D1,D2,……,Dn的笛卡尔积是没有实际语义的,只有它的某个真子集才有实际含义。关系是笛卡尔积的有限子集。
【候选码(candidate key)】:若关系中的某一属性组能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码(primary key)(最小属性集)。
极端情况下,关系模式的所有属性是这个关系的候选码,称为全码(all-key)。
【主属性(prime attribute)和非主属性(non-prime attribute)】:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性(non-key attribute)。
关系可以由三种类型:基本关系(或称基本表或基表)、查询表和视图表。
- 基本表是实际存在的表,它是实际存储数据的逻辑表示;
- 查询表是查询结果对应的表;
- 视图表是由基本表导出的表,是虚表,不对应实际存储的数据。
基本关系具有以下6条性质:
- 列是同质的(homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
- 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
- 列的顺序无所谓。
- 任意两个元组的候选码不能取相同的值。
- 行的顺序无所谓。
- 分量必须取原子值,即每一个分量都是不可分的数据项。
关系模型要求关系必须是规范化的,规范化的关系简称为范式(Normal Form,NF)。
2、关系模式
关系数据库中,关系模式是型,关系是值。
【关系模式】是对关系的描述,关系模式必须指出这个元组集合的结构、元组语义及完整性约束条件、属性的域以及属性与域之间的映像关系。关系模式可以表示为:
R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
关系模式是静态的、稳定的;
关系是动态的、随时间不断变化的,关系是关系模式在某一时刻的状态或内容。
对于关系模型中的联系,一对一的联系可以表示在任意一方,一对多的联系常表示在多的一方。
二、关系操作
1、关系操作包括两部分:
- 查询(QUERY)操作:选择(select)、投影(project)、连接(join)、除(divide)、并(union)、交(intersection)、差(except)、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操作。
- 更新(UPDATE):插入(insert)、删除(delete)、修改(update)。
关系操作是集合操作。(一次一集合(set-at-a-time))。非关系数据模型的数据操作方式是一次一记录(record-at-a-time)。
2、关系数据语言的分类
【关系代数(relational algebra)】:用对关系的运算来表达查询要求。
【关系演算(relational calculus)】:用谓词来表达查询要求。
一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系的完备性。
【结构化查询语言SQL】:介于关系代数和关系演算之间。是集查询、数据定义语言、数据操纵语言和数据控制语言(DCL)于一体的关系数据语言。SQL语言是一种高度非过程化的语言。

三、关系的完整性
1、实体完整性
基本关系R的主属性A不能取空值。所谓空值就是“不知道”或“不存在”或“无意义”的值。
说明:
- 实体完整性规则是正对基本关系而言的。
- 现实世界中的实体是可区分的,即他们具有某种唯一性的标识。
- 相应的,关系模型中以主码作为唯一标识。
- 主码中的属性即主属性不能取空值。
2、参照完整性
先给出外码的定义:
定义:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R是参照关系(referencing relation),基本关系S是被参照关系(referenced relation)或目标关系(target relation)。
关系R和S不一定是不同的关系。目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或同一组)域上。
下面是参照完整性的定义:
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则R中每个元组在F上的取值:
- 或者取空值(F的每个属性值均为空值);
- 或者等于S中某个元组的主码值。
3、用户定义完整性
用户定义完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需要由应用程序来承担这一功能。
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的条件,体现了具体应用领域中的语义约束。
四、关系代数
运算的三大要素:运算对象、运算符、运算结果。
关系代数的运算符包括两类:集合运算符和专门的关系运算符。
关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。
关于关系代数运算这里放上一个链接,以下内容为转载,如有侵犯,请在下方评论联系。
请尊重原作者版权,转载注明出处。
【转载】关系代数的基本运算
数据库系统概论(2)——Chap. 2 关系数据库基础的更多相关文章
- 数据库系统概论(1)——Chap. 1 Introduction
数据库系统概论--Introduction 一.数据库的4个基本概念 数据(data):数据是数据库中存储的基本单位.我们把描述事物的符号记录称为数据.数据和关于数据的解释是不可分的,数据的含义称为数 ...
- 数据库系统概论——Chap. 1 Introduction
数据库系统概论--Introduction 一.数据库的4个基本概念 数据(data):数据是数据库中存储的基本单位.我们把描述事物的符号记录称为数据.数据和关于数据的解释是不可分的,数据的含义称为数 ...
- 数据库系统概论学习2-《关系数据库与 E/R 模型》
-----------------------------一直更新学习内容------------------------------------ 建立一个关系数据库需要几步? 2.关系数据库与 E/ ...
- 数据库系统概论学习3-SQL 语句和关系代数(一)SQL 入门
3. SQL 语句和关系代数(一)SQL 入门 3.1 数据库的编程语言 SQL 的优点 SQL 集成了数据查询(data query).数据操作(data manipulation).数据定义(da ...
- 数据库系统概论 SQL
--(一)创建教材学生-课程数据库 create database s_c go use s_c go --建立“学生”表Student,学号是主码,姓名取值唯一. CREATE TABLE Stud ...
- 数据库系统概论——SQL
[toc] 一.SQL查询语言概览 视图 从一个或几个基本表导出的表 数据库中只存放视图的定义而不存放视图对应的数据 视图是一个虚表 用户可以在视图上再定义视图 基本表 本身独立存在的表 SQL中一个 ...
- 数据库系统概论(新技术篇)--中国人民大学【第13讲】KEY-VALUE数据库(键值对数据库)
市面上主流的分布式文件系统(FS): (Hadoop的)HDFS,(Google的)GFS 详见ppt 1.数据服务与键值对数据库: 数据服务:data serving数据服务:数据的简单 ...
- 廖雪峰Java15JDBC编程-1关系数据库基础-1关系数据库简介
1.数据库 1.1 定义 数据库是按照数据结构来组合.存储和管理数据的软件. 1.2 数据库模型 数据库有层次模型.网状模型.关系模型三种模型. 2 关系数据库 关系数据库是建立在关系模型上的数据库, ...
- 数据库系统概论(第5版) P262 例8.12
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <Windows.h& ...
随机推荐
- Struts2访问Servlet API的几种方式
struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前 ...
- bzoj4750
单调栈+前缀和 max很明显用单调栈搞,但是异或和呢?异或和我们拆位,对于每段区间的异或和[l[i]-i],[i,r[i]]答案就是0->1,1->0的乘积,但是统计的时候事实上是[l[i ...
- sql常识性误解
今天在公司一个项目,遇到一个问题,最后解决下来竟然发现自己对sql竟然存在一个常识性的误解 表数据 需求如下 查找 name中的数据被参数 'adsb' 包含的的列 个人原先的误区一直在于一个认识, ...
- JAVA基础--面向对象09
一.适配器设计模式 1.适配器模式 adapter:适配器: 电脑电源适配器:作用:转换电压,将不符合使用要求的220伏特的市电转换成我们电脑可以使用的电压: 适配器:将不符合使用要求的东西转换成符合 ...
- .NET Core 3.0之深入源码理解Configuration(二)
文件型配置基本内容 上一篇文章讨论了Configuration的几个核心对象,本文继续讨论Configuration中关于文件型配置的相关内容.相比较而言,文件型配置的使用场景更加广泛,用户自定义 ...
- (水题)Codeforces - 327C - Magic Five
https://codeforces.com/problemset/problem/327/C 因为答案可以有前导零,所以0和5一视同仁.每个小节内,以排在第 $i$ 个的5为结尾的序列即为在前面 $ ...
- bzoj 3667: Rabin-Miller算法【Miller-Rabin】
Miller-Rabin模板 #include<iostream> #include<cstdio> #include<algorithm> using names ...
- 9-26模拟赛 By cellur925
1.计数 (count.cpp/c/pas)时间限制:1s内存限制:256MB[问题描述]给出 m 个数 a[1],a[2],…,a[m]求 1~n 中有多少数不是 a[1],a[2],…,a[m]的 ...
- 关于${pageContext.request.contextPath}的理解(转载)
${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的应用程 ...
- ubuntu 给文件夹创建桌面快捷方式, 其实就是创建个软链接
ln -s /home/zdj/Documents/windows_backup/2019Spring/ ~/Desktop/2019Spring ln -s /home/zdj/Documents/ ...