首页 > 数据库 >【学习笔记】数据库系统概论之基础篇(二)关系模型

【学习笔记】数据库系统概论之基础篇(二)关系模型

时间:2024-09-21 13:50:23浏览次数:12  
标签:关系 运算 笛卡儿 笔记 元组 集合 数据库系统 概论 属性

教材:

数据库系统概论(第6版)王珊,杜小勇,陈红编著

目录

一、关系模型的数据结构及形式化定义

关系

关系模式

ER图→关系模型(概念模型→关系模型)

关系数据库

二、关系的完整性

实体完整性

参照完整性

用户定义的完整性

三、关系操作

四、关系代数

传统的集合运算   

专门的关系运算


关系模型

E.F.Codd首次系统地提出了关系模型的相关理论

一、关系模型的数据结构及形式化定义

基本数据结构:关系

实体+联系→关系

逻辑结构:二维表

定义一个关系

        ↓

定义列的取值范围 → 

        ↓

定义所有可能的元组 → 笛卡尔积 → 有意义的元组

域是一组具有相同数据类型的值的集合。

基数:一个域允许的不同取值个数

笛卡儿积(笛卡尔积中所有的元组并不都是有意义的)

90c2cc32ae6a467fb0df9010c6bb855a.png

每一个值 di 叫作一个分量

关系

关系模式是型,关系是值

关系是笛卡尔积的子集

         R(D1,D2,…,Dn)        

R:关系名

n:关系的目或度(degree)

三类关系:

基本关系(基本表或基表)

实际存在的表,是实际存储数据的逻辑表示

查询结果

查询执行产生的结果对应的临时表

视图表

由基本表或其他视图表导出的虚表,不存储实际数据

几个概念:

码(键)

在关系中由唯一可标识元组的属性或属性组构成

候选码(键)

且属性个数最少的码

主码(键)

多个候选码,则选定其中一个为主码。主码不允许为空值(非零和空格)

全码(键)

候选码包含关系模式的所有属性组

外码(键)

在关系R中包含另一个关系S的主键所对应的属性或属性组

性质:

关系模式

关系模式可以形式化地表示为:

                     R(U,D,DOM,F)

R      

     关系名

U      

     组成该关系的属性名集合

D      

     U中属性所来自的域

DOM 

     属性向域的映象集合

F       

     属性间数据的依赖关系集合

简记为

      R (U)    或    R (A1,A2,…,An)

A1,A2,…,An  : 属性名

ER图→关系模型(概念模型→关系模型)

实体转换:

关系的属性为实体 的属性,关系的码为实体的码

关系装换处理:

关系数据库

支持关系模型的数据库系统

在一个关系数据库中,某一时刻所有关系模式对应的关系的集合构成一个关系数据库


二、关系的完整性

实体完整性

对主码的约束:

数据非空,唯一,不重复

参照完整性

针对外码的约束:

用户定义的完整性

对其他属性的约束


三、关系操作

常用的关系操作:

查询操作:选择、投影、连接、除、并、差、交、笛卡儿积

选择、投影、并、差、笛卡儿积是5种基本操作

更新操作:插入、删除、修改

特点:集合操作方式——操作的对象和结果都是集合


四、关系代数

是一种抽象的查询语言,它用对关系的运算来表达查询

分类:传统的集合运算和专门的关系运算

运 算 符

含 义

传统的

集合

运算符

-

×

笛卡儿积

专门的

关系

运算符

σ

选择

π

投影

连接

÷

传统的集合运算   

(1)并        RS

仍为n目关系,由属于R或属于S的元组组成

(2)交        RS

仍为n目关系,由既属于R又属于S的元组组成

(3)差        R - S

仍为n目关系,由属于R而不属于S的所有元组组成

(4)笛卡儿积

R: n目关系,k1个元组

S: m目关系,k2个元组

R×S

(n+m)列元组的集合

元组的前n列是关系R的一个元组

后m列是关系S的一个元组

行:k1×k2个元组

并、 差 前提条件:

 RS

  • 具有相同的目n(即两个关系都有n个属性)
  • 相应的属性取自同一个域

运算后不要有重复元组

笛卡儿积运算中属性名相同的要改一下属性名(eg:R关系中A属性改成R.A)

专门的关系运算

(1)选择(又称为限制

在关系R中选择满足给定条件的诸元组(行)

                

F:选择条件,是一个逻辑表达式,取值为“真”或“假”

基本形式为:X1θY1

θ表示比较运算符,它可以是>,≥,<,≤,=或<>

X1,Y1是属性名时可以用它的序号来代替

(2)投影

在关系R中选择出若干属性列组成新的关系(从的角度进行运算)

             

A:R中的属性列 

运算后不能有重复元组,可能会消除某些元组

(3)连接

从两个关系的笛卡儿积中选取属性间满足一定条件的元组

A和B:分别为R和S上度数相等且可比的属性组

θ:比较运算符 

连接运算从R和S的广义笛卡儿积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组(从的角度进行运算)

等值连接:θ为“=”的连接运算

从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组

自然连接:一种特殊的等值连接

两个关系中进行比较的分量必须是同名的属性组;

在结果中把重复的属性列去掉(增加了的角度)

(4)除

给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。

R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集

R与S的除运算得到一个新的关系P(X),

P是R中满足下列条件的元组在 X 属性列上的投影:

元组在X上分量值x的象集Yx包含S在Y上投影的集合

标签:关系,运算,笛卡儿,笔记,元组,集合,数据库系统,概论,属性
From: https://blog.csdn.net/Z15922342915/article/details/142357927

相关文章

  • FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
    ​EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。不过EasyPusher有好几年没更新了,尤其安卓版的EasyP......
  • 系统架构设计师教程 第8章 8.3 ATAM方法架构评估实践 笔记
    8.3ATAM方法架构评估实践★★★★★用ATAM方法评估软件体系结构,其工作分为4个基本阶段,即演示、调查和分析、测试和报告ATAM8.3.1阶段1——演示(Presentation)初始阶段,有3个主要步骤:第1步:介绍ATAM评估负责人向所有相关参与者提供有关ATAM过程的信息,说明评估中使用的......
  • 系统架构设计师教程 第10章 10.1 软件架构演化和定义的关系 笔记
    10.1软件架构演化和定义的关系★★★☆☆10.1.1演化的重要性软件架构的演化就是软件整体结构的演化,演化过程涵盖软件架构的全生命周期,包括软件架构需求的获取、软件架构建模、软件架构文档、软件架构实现以及软件架构维护等阶段。首先,软件架构作为软件系统的骨架支撑......
  • Netty笔记09-网络协议设计与解析
    文章目录前言一、协议设计1.数据格式2.消息长度3.编码方式4.错误处理5.安全性二、协议解析1.消息分隔2.粘包与半包处理3.校验机制三、为什么需要协议?四、redis协议五、HTTP协议六、自定义协议要素编解码器......
  • 【文化课学习笔记】【物理】电场
    【物理】电场前置知识绝缘体:本质是物体内部电荷无法自由移动。导体:本质是物体内部电荷可以自由移动。电荷的移动:导体内部能够发生自由移动的电荷只有负电荷。显电性:显示的电性,是内部的正负电荷中和之后的结果,不是一定带有几个单位的正电荷或负电荷。相关概念电荷和元电荷......
  • 【笔记】机器学习算法在异常网络流量监测中的应用
    这段时间在找方向,又看不懂文章,只能先从一些相对简单的综述类看起,顺便学学怎么写摘要相关工作的。机器学习算法在异常网络流量监测中的应用原文:DetectingNetworkAnomaliesinNetFlowTrafficwithMachineLearningAlgorithms原文链接:DetectingNetworkAnomaliesinNet......
  • 慢SQL优化笔记:从3041ms到10ms的优化之旅
    1背景最近项目上要求开发一个查询接口,刚开发完成后,测试环境进行自测发现查询效率非常慢,通过打log计算得到SQL执行时间3041ms,实在太慢了。下面简单记录下本次慢SQL优化的过程。2相关数据新增客户表(其它无关字段省略)createtablenew_customer_info( idbigint(32)not......
  • Asp.net MVC 学习笔记Razor(一)
    接手一个古老的项目,DotNet4.0编写的一个ASP.NETMVC的网页软件,期间结果好几任开发者的不懈努力,编码风格至少有3种,看的头疼。当然最主要的是我一直是做c++开发、c#中的wpf和winform或者python,asp.NET代码看的有点眼生。不管怎么样,先把基础的东西过一遍吧。Razor语法主要的Raz......
  • Living-Dream 系列笔记 第79期
    P1775典。code#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=3e2+5;intn,a[N],sum[N],dp[N][N];signedmain(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n; memset(dp,0x3f,sizeofdp); for(inti=1;i<=n;......
  • C++学习笔记(27)
    十一、把字符串转换成整数有两个任务:1)为了支持把C风格的字符串转换成数字,C++提供了以下四个函数:intatoi(constchar*_String);//把C风格字符串转换为int整数。longatol(constchar*_String);//把C风格字符串转换为long整数。longlongatoll(constchar......