数据库系统概论(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& ...
随机推荐
- 关于布局(Layout)的一切
之前在布局中有很多问题也有很多经验,遗憾都没记下来.现在一点点记下一些东西. 1.外层用LinearLayout的话,常常把orientation设成vertical, android:orienta ...
- [SoapUI] Jenkins 配置不同环境(TP, LIVE)
- BZOJ_1812_[Ioi2005]riv_树形DP
BZOJ_1812_[Ioi2005]riv_树形DP Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了 ...
- 「LuoguP3369」 【模板】普通平衡树 (用vector乱搞平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 x 数 删除 x 数(若有多个相同的数,应只删除一个) 查询 x 数的排名(排名定义为比当前 ...
- 【USACO2017JAN】 Promotion Counting
[题目链接] 点击打开链接 [算法] 离散化 + dfs + 树状数组 [代码] #include<bits/stdc++.h> using namespace std; #define ...
- POJ 1737 经典DP
问题:求含有n个点的连通图的个数. 解: 考虑DP,$f(n)$表示n个点,每个点都和点1相连,且n个点互相连通的图的个数. (蓝字非常重要,这个条件有效地避免了重复计算) $g(n)$表示n个点,每 ...
- 编写hadoop程序并打成jar包上传到hadoop集群运行
准备工作: 1. hadoop集群(我用的是hadoop-2.7.3版本),这里hadoop有两种:1是编译好的hadoop-2.7.3:2是源代码hadoop-2.7.3-src: 2. 自己的机器 ...
- 标准WPS框架下的空间信息处理服务部署方法
笔者第一篇博客里面曾介绍过将专题图制作功能发布为WPS,但随着后面的研究,才发现那时候发布的不是真正WPS框架下的服务,而只是通过Servlet将其发布为可调用的网络服务,所以今天再具体介绍一下真正的 ...
- LIS LCS LCIS (主要过一遍,重在做题)
只详细讲解LCS和LCIS,别的不讲-做题优先. 菜鸟能力有限写不了题解,可以留评论,我给你找博客. 先得理解最长上升子序列吧,那个HDOJ拦截导弹系列可以做一下,然后用o(n)log(n)的在做一遍 ...
- 7天学完Java基础之5/7
接口 接口就是一种公共的规范标准 是一种引用数据类型 定义格式 public interface 接口名称{} java7 中接口可以包含常量,抽象方法:Java8 还可以额外包含默认方法,静态方法: ...