数据库系统概论(个人笔记)(第二部分)

数据库系统概论(个人笔记)

文章目录

  • 数据库系统概论(个人笔记)
  • 2、关系模型简介
    • [2.1 关系数据库的结构](#2.1 关系数据库的结构)
    • [2.2 数据库模式](#2.2 数据库模式)
    • [2.3 键](#2.3 键)
    • [2.4 模式图](#2.4 模式图)
    • [2.5 关系查询语言](#2.5 关系查询语言)
    • [2.6 关系代数](#2.6 关系代数)

2、关系模型简介


2.1 关系数据库的结构

Structure of Relational Databases

在逻辑级别上,关系数据库是一个名为 Relations 的二维表的集合。

Relations 表示一个实体集或一个关系集。 (集合)

Relations 的一行表示一个实体或一个关系。(个体)


Basic Structure

关系的每一行都可以称为元组 tuple

关系的每一列都有一个名称 → 关系的命名列称为属性 attributes

每个属性允许的值的集合称为属性的域 domain

属性值(通常)必须是原子的 atomic ;也就是说,它是不可分割的:

  • 属性上的元组的值可以是一个帐号,但不能是一组帐号

特殊值 null 是每个域的成员。


Relation

笛卡尔积 Cartesian Product



Tuple Variable

元组变量 Tuple Variable

  • 是一个变量,代表一个元组
  • 其域是一个特定关系的所有元组的集合

2.2 数据库模式

Database Schema
Relation Schema

关系模式 relation schema


Relations are Unordered

元组的顺序是无关的(元组可以以任意顺序存储)。


Relational Database

一个数据库由多个关系组成。

有关企业的信息被分成若干部分,每个关系存储一部分信息。

将所有信息存储为一个简单的 relation。

university(instr_id, inst_name, stu_id, stu_name,...)

  • 重复的信息------(会导致)如果两个导师给一个学生建议(What gets repeated?)
  • 空值的需要------来代表一个没有老师的学生

规范化理论(第7章)涉及如何设计关系模式


2.3 键

Keys

K 是一组属性,设K ⊆ R

如果 K 的值足以识别每个可能关系 r® 的唯一元组,则K是R的超键 superkey

  • "可能的 r" 是指可能存在于我们正在建模的企业中的关系。

如果K最小,则超键 K 为候选密钥 candidate key

  • 极小意味着它的任何子集都不是超级密钥

主键 Primary key:作为识别关系中元组的主要手段而选择的候选键

  • 应该选择一个其值永远或很少改变的属性

电子邮件地址是唯一的,但可能会改变,不适合主键


Foreign Keys

关系 r1 可能具有与另一个关系 r2 的主键相对应的属性。该属性称为外键 foregin key

  • r1 是引用关系 r1 is referencing relation
  • r2 是被引用的关系 r2 is referenced relation

Referencing Constraint

Referencing Constraint 引用约束

只有出现在被引用关系 referenced relation 的主键属性中的值才可能出现在引用关系 referencing relation 的外键属性中


2.4 模式图

Schema Diagrams

Schema Diagram for University Database


2.5 关系查询语言

Relational Query Languages

用户从数据库请求信息的语言。

语言类别

  • 程序性
  • 非程序性,或声明性

"纯 Pure" 的语言: 形成人们使用的查询语言的基础

  • 关系代数 程序性
  • 元组关系演算 非程序性
  • 域关系演算 非程序性

以上3种纯语言在计算能力上是等价的在本章中

我们将集中讨论关系代数

  • 不是图灵机等价物
  • 由6个基本操作组成

2.6 关系代数

The Relational Algebra

一种由一组操作组成的过程语言,这些操作把一个或两个关系作为输入,并产生一个新的关系作为其结果。

六种基本运算符
select 选择 σ
project 投影
union 并
set difference 集合差 -
Cartesian product 笛卡尔积 ×
rename 重命名 ρ

Select Operation

选择满足给定谓词的元组


Project Operation

一元操作,选取某些列

结果被定义为通过擦除未列出的列而获得的k列之间的关系

从结果中删除重复行,因为关系是集


Composition of Relational Operations

关系代数运算的结果是关系,因此关系代数运算可以组合成一个关系代数表达式 reletional-algebra expression

考虑这个查询------查找物理系所有教员的姓名。
∏ n a m e = ( σ d e p t . . n a m e   =   " P h y s i c s " " ( i n s t r u c t o r ) ) ) \prod _{name}=(\sigma _{dept..name\,=\,"Physics""}(instructor))) name∏=(σdept..name="Physics""(instructor)))

我们不给出关系的名称作为投影操作的参数,而是给出一个计算结果为关系的表达式。


Union Operation

类似于集合并运算

对 r ∪ s 才有效:

  1. r,s 必须具有相同的参数数量 arity (相同数量的属性)
  2. 属性域必须兼容 compatible

r 的第二列处理的值与 s 的第二列处理的值类型相同


Set Difference Operation

类似于集合差运算

集合差必须处在兼容关系之间

  • R和S必须具有相同的参数数量 arity
  • 属性R和S的域必须兼容

Set-Intersection Operation

Set-Intersection Operation 交集运算

Example



Cartesian-Product Operation

将一个关系的每个元组与另一个关系的每个元组配对


Composition of Operations***

可以使用多个运算生成表达式


The instructor x teaches table


Join Operation

Join Operation 连接运算




Rename Operation

允许我们命名,从而引用关系代数表达式的结果

允许我们用多个名称来引用一个关系



The Assignment Operation

The Assignment Operation 赋值运算

有时通过将关系代数表达式的一部分分配给临时的关系变量来编写关系代数表达式是很方便的。

赋值操作用<--表示,其工作方式类似于程序设计语言中的赋值操作。

通过赋值操作,可以将查询编写为一个顺序程序,该程序由一系列赋值和一个表达式组成,表达式的值显示为查询的结果。


Equivalent Queries

Equivalent Queries 相同的查询

在关系代数中编写查询的方法不止一种。


这两个查询并不相同。但是,它们是等价的------它们在任何数据库上都给出相同的结果。

相关推荐
吃着火锅x唱着歌1 分钟前
Go语言设计与实现 学习笔记 第九章 标准库
笔记·学习·golang
孞㐑¥8 分钟前
C语言—顺序表(含通讯录项目)
c语言·开发语言·经验分享·笔记
程序人生51820 分钟前
PostgreSQL分区表
数据库·postgresql·分区表
bug菌¹43 分钟前
滚雪球学MySQL[3.1讲]: 高级SQL查询
数据库·sql·mysql
燕雀安知鸿鹄之志哉.1 小时前
玄机:第二章 日志分析-mysql应急响应
数据库·经验分享·mysql·安全·web安全·网络安全
Janusne1 小时前
高效修复MySQL数据库
数据库·mysql·phpmyadmin·dbf for mysql
LearnTech_1232 小时前
【学习笔记】手写 Tomcat 四
java·笔记·学习·tomcat·手写 tomcat
才艺のblog2 小时前
PG数据库的Jsonb全文检索查询
数据库·postgresql·jsonb
PieroPc2 小时前
用 Django 5 快速生成一个简单 进销存 系统 添加 个打印 按钮
数据库·python·django