数据库系统概论(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条性质:

  1. 列是同质的(homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
  2. 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
  3. 列的顺序无所谓。
  4. 任意两个元组的候选码不能取相同的值。
  5. 行的顺序无所谓。
  6. 分量必须取原子值,即每一个分量都是不可分的数据项。

关系模型要求关系必须是规范化的,规范化的关系简称为范式(Normal Form,NF)

2、关系模式

关系数据库中,关系模式是型,关系是值。
【关系模式】是对关系的描述,关系模式必须指出这个元组集合的结构、元组语义及完整性约束条件、属性的域以及属性与域之间的映像关系。关系模式可以表示为:

R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

关系模式是静态的、稳定的;
关系是动态的、随时间不断变化的,关系是关系模式在某一时刻的状态或内容。

对于关系模型中的联系,一对一的联系可以表示在任意一方,一对多的联系常表示在多的一方。

二、关系操作

1、关系操作包括两部分:

  1. 查询(QUERY)操作:选择(select)、投影(project)、连接(join)、除(divide)、并(union)、交(intersection)、差(except)、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操作。
  2. 更新(UPDATE):插入(insert)、删除(delete)、修改(update)。

关系操作是集合操作。(一次一集合(set-at-a-time))。非关系数据模型的数据操作方式是一次一记录(record-at-a-time)。

2、关系数据语言的分类

【关系代数(relational algebra)】:用对关系的运算来表达查询要求。
【关系演算(relational calculus)】:用谓词来表达查询要求。
一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系的完备性

【结构化查询语言SQL】:介于关系代数和关系演算之间。是集查询、数据定义语言、数据操纵语言和数据控制语言(DCL)于一体的关系数据语言。SQL语言是一种高度非过程化的语言。

三、关系的完整性

1、实体完整性

基本关系R的主属性A不能取空值。所谓空值就是“不知道”或“不存在”或“无意义”的值。
说明:

  1. 实体完整性规则是正对基本关系而言的。
  2. 现实世界中的实体是可区分的,即他们具有某种唯一性的标识。
  3. 相应的,关系模型中以主码作为唯一标识。
  4. 主码中的属性即主属性不能取空值。

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. 数据库系统概论(1)——Chap. 1 Introduction

    数据库系统概论--Introduction 一.数据库的4个基本概念 数据(data):数据是数据库中存储的基本单位.我们把描述事物的符号记录称为数据.数据和关于数据的解释是不可分的,数据的含义称为数 ...

  2. 数据库系统概论——Chap. 1 Introduction

    数据库系统概论--Introduction 一.数据库的4个基本概念 数据(data):数据是数据库中存储的基本单位.我们把描述事物的符号记录称为数据.数据和关于数据的解释是不可分的,数据的含义称为数 ...

  3. 数据库系统概论学习2-《关系数据库与 E/R 模型》

    -----------------------------一直更新学习内容------------------------------------ 建立一个关系数据库需要几步? 2.关系数据库与 E/ ...

  4. 数据库系统概论学习3-SQL 语句和关系代数(一)SQL 入门

    3. SQL 语句和关系代数(一)SQL 入门 3.1 数据库的编程语言 SQL 的优点 SQL 集成了数据查询(data query).数据操作(data manipulation).数据定义(da ...

  5. 数据库系统概论 SQL

    --(一)创建教材学生-课程数据库 create database s_c go use s_c go --建立“学生”表Student,学号是主码,姓名取值唯一. CREATE TABLE Stud ...

  6. 数据库系统概论——SQL

    [toc] 一.SQL查询语言概览 视图 从一个或几个基本表导出的表 数据库中只存放视图的定义而不存放视图对应的数据 视图是一个虚表 用户可以在视图上再定义视图 基本表 本身独立存在的表 SQL中一个 ...

  7. 数据库系统概论(新技术篇)--中国人民大学【第13讲】KEY-VALUE数据库(键值对数据库)

    市面上主流的分布式文件系统(FS): (Hadoop的)HDFS,(Google的)GFS     详见ppt   1.数据服务与键值对数据库: 数据服务:data serving数据服务:数据的简单 ...

  8. 廖雪峰Java15JDBC编程-1关系数据库基础-1关系数据库简介

    1.数据库 1.1 定义 数据库是按照数据结构来组合.存储和管理数据的软件. 1.2 数据库模型 数据库有层次模型.网状模型.关系模型三种模型. 2 关系数据库 关系数据库是建立在关系模型上的数据库, ...

  9. 数据库系统概论(第5版) P262 例8.12

    #include <iostream> #include <stdlib.h> #include <stdio.h> #include <Windows.h& ...

随机推荐

  1. codeforces 696C C. PLEASE(概率+快速幂)

    题目链接: C. PLEASE time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  2. 收藏产品判断、html 在 UIwebView里面显示

     收藏产品功能 要求:用户点击收藏,如果已经收藏,用户点击就取消收藏 写法一: 点击事件{ if (!isSelect) { [sender setImage:[UIImage imageNamed: ...

  3. Eclipse中快速重写(Override)基类方法的技巧(转载)

    转自:http://blog.csdn.net/guolin_blog/article/details/11952435 在Android开发过程中会引用大量的标准库,还要通过Override基类函数 ...

  4. JAVA基础--函数和数组03

    一.函数的引入 函数的引入 能把相同的代码都抽出来,放到一个地方,等到要使用的时候再去调用,如果有不同的数据,在使用的时候传递就行了: 2. 函数的概念:函数又叫方法,一段独立于代码块 直接卸载类中, ...

  5. 51nod1127【尺取】

    思路: 尺取,写挫了,debug了半天. #include <bits/stdc++.h> using namespace std; typedef long long LL; const ...

  6. POJ3258【二分】

    题意: 问一个河岸,两岸之间有笔直的n块石头,然后拔起(也可以施展魔法)m个石块,假设两岸也是石块,求处理过的石块的最小距离的最大. 思路: 他让我们求移开m个石块,无非是在n+2-m(已经把两岸看成 ...

  7. 洛谷P4841 城市规划(多项式求逆)

    传送门 这题太珂怕了……如果是我的话完全想不出来…… 题解 //minamoto #include<iostream> #include<cstdio> #include< ...

  8. MYSQL性能调优与架构设计之select count(*)的思考

    select count(*)的思考 原文:MYSQL性能调优与架构设计   举例: 这里我们就拿一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计 附加要求:实时更新 在很多人看来,这 ...

  9. SpringMVC + ajax

    1.ajax 返回汉字乱码 解决方法: http://blog.sina.com.cn/s/blog_5f39177b0101it7h.html //方案一 response.setCharacter ...

  10. UVa第十章数学概念与方法

    Bryce1010模板 10.1数论初步 1.欧几里得算法和唯一分解定理 2.Eratosthenes筛法 补充素数筛选 const int MAXN=1e6+10; ll prime[MAXN]; ...