【数据库】概述(纯理论)

数据库系统引论

数据管理系统的发展

数据管理:对数据分类、组织、编码、存储、检索、维护

发展:人工管理、文件系统、数据库系统

  • 40-50年代 人工管理 数据不保存,没有专门软件管理数据,应用程序完全依赖于数据,数据不能共享
  • 50年代末-60年代中 文件系统阶段 硬件有磁盘磁鼓,数据可以长期保存,数据面向应用,数据冗余度大,缺乏统一控制
  • 60年代末 数据库系统阶段 有大容量磁盘和数据库管理系统
    • 1968 IBM研究世界上第一个商品化数据库管理系统IMS
    • 1969 网状数据模型报告DBTG
    • 1970 关系模型的论文提出
    • 主要特征:数据结构化;独立性高:独立性体现在物理独立性和逻辑独立性,通过数据库系统所提供的二级映像的实现;减少数据冗余:数据面向系统,集中管理;数据共享;统一的数据保护功能

数据库

  • 存放数据的仓库。
  • 存放在介质上的相关数据的集合
  • 长期存储在计算机内、有组织的、可共享大量数据集合
  • 数据库是长期存储在计算机内,有组织的数据集合,根据数据间的联系组织在一起,具有较高的数据独立性,减少数据冗余,能够为各种用户共享。

数据库管理系统

数据库需要一个软件系统统一管理,这个软件系统是数据库管理系统(DBMS)

  • 统一管理数据库的软件系统
  • 位于用户与操作系统之间的一层数据管理软件
  • 赋值数据库的管理和维护,具有数据定义、数据操纵、运行管理和维护等功能
  • 是数据库系统的核心

其功能有

  • 定义功能。包括模式定义、外模式定义、内模式定义。
  • 操纵功能。
  • 保护功能。包括安全性、完整性、并发控制、恢复。
  • 维护功能。包括转储、数据装入、统计、存储等。

DBMS提供数据定义语言(DDL),定义数据库的数据结构,包括模式定义语言、外模式定义语言和内模式定义语言。

DBMS一般提供一种或两种DDL

数据定义语言描述的模式成为源模式,需要借助编译程序翻译成机器代码形式的目标模式,供DBMS使用。

数据模型

模型方法是一种抽象表示,把表示事物的主要特征抽象的用一种形式化的描述反映。数据模型是将事物之间的联系,转化为数据和数据间的联系。

数据模型是****,包含三个要素:

  • 数据结构,对数据静态特征的描述
  • 数据操作,对数据动态特性的描述
  • 数据的完整性约束,数据间的制约和依存关系

概念模型不涉及信息在计算机的表示,面向用户,只要用户需求不变,概念模型也不变。狭义的数据模型是按照计算机系统的观点建模,又包含两个部分

  • 逻辑数据模型:用户看到的数据模型,用于数据库设计,如E-R模型
  • 物理数据模型:数据存储结构和存取方法,用于DBMS实现,包括网状模型、层次模型、关系模型等等

数据模型是对数据最底层的抽象。

数据结构是最重要的部分,不同数据模型由数据结构来表征。

数据库系统结构

数据库系统中,用户可以逻辑地、抽象地处理数据,而不必考虑数据在计算机中如何组织、存放。

数据库系统结构是一个多级结构,方便用户存取数据,同时高效地组织数据,以最佳形式在物理存储器存放。

特点:

  • 数据结构化

  • 数据的共享性高,冗余度低且容易扩充

  • 数据独立性高(

    物理独立性:应用程序与物理存储相互独立,数据的物理存储改变,应用程序不改变;

    逻辑独立性:应用程序与逻辑结构相互独立,数据的逻辑结构改变,应用程序不改变。)

数据库系统分成三个层次,称为三级结构:

img

image-20250518172503162
  • 模式,Schema,也叫(逻辑模式), 是全体数据的逻辑结构和特征的描述
  • 外模式(子模式、用户模式),SubSchema,是数据库用户能看见的最终表示。外模式是模式的子集,一个数据库可以有多个外模式,不同用户有不同外模式。外模式与应用也是一对多的关系。外模式是保护数据库安全的措施,用户只能看见或访问外模式的数据。
  • 内模式(存储模型),也称存储模式,是数据物理结构和存储方式的描述,一个数据库只有一个内模式。

总的来说,三级模式是对数据的视图级概念级物理级的抽象级别。

三级模式之中有两级映像。这种映像目的是数据库内部实现三个抽象层级的联系和转化。

  • 外模式与模式之间的映像,定义局部数据逻辑结构和全局逻辑结构的对应关系。当模式结构改变,只需要修改外模式与模式的对应关系,不必修改外模式的局部逻辑结构,实现数据逻辑独立性;

  • 模式与内模式之间的映像,定义全局数据逻辑结构和物理数据存储间的对应关系。当物理存储结构改变的时候,仅需要修改模式与内模式间的影响关系,而使模式保持不变,实现数据的物理独立性。

image-20250518191626799 image-20210304164034161

数据库系统的不同使用者

其人员分成四类:数据库管理员、系统分析员、应用程序员、用户。

不同人员设计数据抽象级别不同。

  • 数据库管理员,决定数据库存储结构和策略
  • 系统分析员,涉及需求分析
  • 设计人员,确定数据库的数据和各级模式
  • 应用程序有,编码实现
  • 用户,使用系统

数据库技术的发展

  • 第一代60年代末研制的层次、网状数据库系统
  • 第二代关系数据库系统,现在仍占据主流
  • 围绕面向对象数据模型的研究,OODBMS

数据模型

数据模型是对现实世界数据信息的抽象和表示,分成概念模型和数据模型,对应用户观点的数据模型和狭义的物理存储上的数据模型。

本章主要介绍概念模型和逻辑数据模型,核心是E-R概念模型。对四种逻辑模型只做简单介绍,在第三章重点介绍关系模型。

数据模型的组成要素:

  • 数据结构:描述系统的静态特性 → 描述数据库的组成对象以及对象之间的联系
  • 数据操作:描述系统的动态特性 → 是对数据库中的各种对象的实例所允许的操作的集合,其类型有查询和更新(增删改查)
  • 数据完整性约束:用以限定数据模型的数据库状态以及状态的变化,以保证数据的正确、有效与相容,完整性约束条件是一组完整性规则的集合。

E-R概念模型

概念模型是对信息世界的建模,是数据库设计的有力工具。它需要较强的语义表达能力,简单清晰、易于理解。

一、E-R模型中的基本概念

实体:客观存在并可相互区别的事物实体可以是具体对象,比如一个学生,一本书;也可以是抽象的概念或联系,比如一堂课。

属性:实体所具有的某一特征。一个实体可以由若干属性刻画,有类型和值的区分。类型是属性名,值是属性的具体内容。

联系:在现实世界中,事物内部以及事物之间是有联系的。在信息世界中,常被抽象为实体内部的联系实体之间的联系。内部的联系是组成实体各属性的联系;之间的联系是不同实体集之间的联系。

实体之间的联系最简单的是两个实体之间的联系:image-20250518201001390

一对一联系:A中的一个实体至多与B的一个实体相对应

一对多联系:A中的一个实体与B中的多个实体相对应,反之B的一个实体至多与A的一个实体相对应

多对多联系:A、B中一个实体与另一个实体集多个实体联系

多个实体间也可以存在联系,称为 多元联系。例如

image-20210304174116227

这样的联系称为m:n:p

两两之间多对多的联系和三个实体的多对多的联系,语义有何不同呢?

image-20210304174350580

两两之间的多对多仅能表示一个工程需要哪些零件、由哪些供应商提供。

但是多对多联系可以描述一个工程所用的零件具体由哪个供应商供应。

实体集内部不同实体间的联系也存在一对一、一对多、多对多。比如,一个领导领导多个职工。

二、E-R模型

E-R(Entity-Relationship Approach)是最著名的概念模型,用矩形表示实体,椭圆表示属性,菱形框表示联系。

image-20210304174945596

联系有比较多的语义

  • 基数比约束,比如二元联系中1:1、1:n的联系
  • 参与约束,根据实体是否全部参与联系描述
  • 实体参与度,实体参与联系的最小和最大的次数image-20210304175122838
  • 弱实体,实体存在依赖于其它实体存在image-20210304175506881
  • 子类实体,根据不同特性分成多个子集image-20210304175248989

一个物资管理需求如下

image-20210311151126977 image-20210311151442122 image-20210311151803980

最后,得到

image-20210311151838971

用关系模型来表示学校image-20250518201202882

层次模型

层次模型是数据库系统最早出现的数据模型,用树形结构表示各类实体和实体间联系。

层次模型满足两个条件:

  • 有且只有一个节点没有双亲结点,为根节点;
  • 根以外节点有且只有一个双亲结点。
image-20250518201255890

比如下面一个层次:

image-20210311152150685

其特点是,数据结构简单清晰,查询效率高,提供了良好的数据完整性支持。

但这种模型不能表示两个以上实体间复杂联系和实体间多对多联系,只能通过引入冗余数据或虚拟节点来解决。对数据插入和删除涉及树的操作,所以工作量比较大,查询子女节点需要通过双亲结点。由于结构严密,层次命令趋于程序化。

网状模型

现实世界的联系很多的非层次的,所以用层次模型表达有非直观性。网状模型满足下面的条件:允许一个以上节点无双亲,一个节点可以有多于一个双亲。

网状模型能更直接的描述现实世界,如一个节点可以有多个双亲;同时它性能尚可。但是,它结构非常复杂,不利于用户掌握;DDL、DML语言复杂,不容易使用。

image-20210311152731028

关系模型

1970年,E.F.Codd提出了关系数据模型,1977年出现了第一个关系数据库,而80年代依赖关系数据就占据主流。

(1)基本概念和结构

关系是一张二维表,一个关系描述一个实体集。实体有属性,二维表的列就是属性。一个属性对应的一个集合是域。

关系是元组的集合,一个元组对应实体集中的一个个体。一个元组由若干分量组成,一个分量对应一个属性值。

键是一个或多个属性构成的,能够唯一标识一个元组。一个关系中可能有多组属性都能起到标识元组的作用,所以一个关系可能有多个键。选择其中一个作为主键,其余为候选键。

(2)关系模式

对关系结构的描述称为关系模式。关系模式可表示为:

关系名(属性1,属性2,...,属性n)

(3)ER模式向关系数据模式的映射

关系数据模型中,基本的数据结构是关系。现实世界中,实体和实体间的联系都用关系表示。

联系可以用表来描述。比如,选课联系 -> 选课表。表中有来自学生和课程两个实体的属性,成绩是选课关联自身的描述属性。

关系必须是规范化的,关系的每一个分量必须不可分。也就是,不能存在表中表。

(4)完整性约束

关系数据需要有实体完整性、参照完整性、用户自定义完整性。

(5)数据操纵

允许进行增删改查。

这种关系运算都可以归结为关系代数和关系演算两类。

总的来说,关系数据模型可以表示为下表:

image-20210311154346915

关系模型有下面的优点

  • 数据结构简单
  • 一体化数据子语言
  • 数据独立性高
  • 面向集合的存取方式
  • 坚实的理论基础
  • 有利于开展其他应用

面向对象数据模型

对象关系数据系统是面向对象数据模型和关系数据模型相结合的产物。一般来说,面向对象有两条路线,一条是建立新的数据库系统,另一种是走结合路径。

image-20210311154753572

但缺乏通用数据模型、理论基础、查询优化,导致面向对象数据库理论技术没有成熟,关系数据库仍处于统治地位。

关系数据库

主要讨论基本概念和各种运算。

按照静态数据结构、动态数据操作、完整性约束来介绍。

关系模型基本概念

一、基本概念

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

笛卡尔积:给定一组集合 D 1 , D 2 , ⋯ D n D_1,D_2,\cdots D_n D1,D2,Dn,那么笛卡尔积 D 1 × D 2 ⋯ D n D_1\times D_2 \cdots D_n D1×D2Dn就是所有域的所有组合。

笛卡尔积的每个元素叫做一个元组 ( d 1 , d 2 , ⋯ , d n ) (d_1,d_2,\cdots,d_n) (d1,d2,,dn),每一个值 d i d_i di叫做一个分量。

D 1 × ⋯ × D n D_1\times\cdots\times D_n D1××Dn上任一个子集称为 D 1 , ⋯ , D n D_1,\cdots,D_n D1,,Dn上一个关系, N N N叫做关系的目或度。关系的每一行对应一个元组,用 t t t表示,每一列对应一个域,列称为属性, t [ A i ] t[A_i] t[Ai]表示 t t t A i A_i Ai上的值。

按照定义,关系可以是一个无限集合。并且,笛卡尔积不满足交换律。但是无限的集合在数据库中是无意义的,所以 关系是规范化的二维表中行的集合 ,关系必须是有限集合。

规范化关系有如下性质:

  • 列是同质的,每一列的分量来自同一个域
  • 不同列可出自一个域,每一列称为一个属性,不同属性给予不同属性名
  • 列的顺序无所谓,次序可以交换
  • 各个元组是不同的,不允许出现重复元组。(因为实体不能相同)
  • 行的次序可以任意交换
  • 分量必须为原子值,每一个分量都是不可分的数据项

二、关系模式和关系数据库

关系模式是对关系的描述。该描述包括关系名、属性名、属性的类型和长度、属性间固有的数据关联关系,记为R(A1,A2,…,An)。

关系模式的集合是关系数据库模式,是对所有数据逻辑结构的描述,表示为R={R1,R2,…,Rp}。

三、键

为了区分不同元组,用一个或多个属性值标识,能够唯一标识元组属性或属性组称为关系的键。其标识作用的键是候选键,多个候选键其中之一为主键。如果关系的键由多个属性组成,则称为联合键。关系所有属性构成关系的键,称为全键。

四、完整性约束

为了保证数据域一致性,需要

  • 实体完整性,一般自动支持

    • 主键的值不能为空或部分为空。
    • 实体完整性是针对基本关系而言的,基本表对应现实世界一个实体集。现实世界实体和实体是可区分的,而关系模型中主键是唯一性标识。主键的属性不能取空值。
  • 参照完整性,一般自动支持

    • 如果 R 1 R_1 R1中A是 R 2 R_2 R2的主键,那么R1中让你一个元组在A上的值或者为空,或者为R2中某个元组主键的值。

    • 比如学生和专业信息,二者是参照关系和被参照关系。学生的专业信息要么是空,要么是专业信息中的某个数据项。这个时候,其取值局限在专业代码中。

    • 这个时候,外键参考主键信息。

      image-20210311170428349

      比如这个图中,班长的取值一定是学号之中。

  • 用户定义完整性,用户定义后系统支持

    • 用户定义完整性是针对某一具体关系数据库的约束条件。比如,成绩不能为负数、性别的输入条件。
    • 也叫做预定义完整性。

关系代数

一、关系代数概述

关系代数是抽象的查询语言,用对关系的运算表达查询。

它有三个要素:

  • 运算对象:关系
  • 运算结果:关系
  • 运算符

按照运算符不同,关系代数分成两类:传统的集合运算和专门的关系运算。

二、集合运算

(1)并

假如R、S有相同的目,属性取自同一域,那么
KaTeX parse error: Undefined control sequence: \or at position 24: …S = \{t|r\in R \̲o̲r̲ ̲t \in S\}
image-20210311170908615

(2)差

假如R、S有相同的目,属性取自同一域,那么
KaTeX parse error: Undefined control sequence: \and at position 22: … \{t | t \in R \̲a̲n̲d̲ ̲t \not \in S\}
所以差可以代表删除。

(3)交

假如R、S有相同的目,属性取自同一域,那么
KaTeX parse error: Undefined control sequence: \and at position 26: … \{t | t \in R \̲a̲n̲d̲ ̲t \in S\}
(4)笛卡尔积

R是n目关系,有k1个元组,S是m目关系,有k2个元组,那么
KaTeX parse error: Undefined control sequence: \and at position 36: …_s | t_r \in R \̲a̲n̲d̲ ̲t_s \in S\}

image-20210311171104743

三、关系运算

先引入记号

R R R 表示关系, t t t表示元组, t [ A i ] t[A_i] t[Ai]表示分量, t [ A ] t[A] t[A]表示诸分量的集合, A ‾ \overline A A表示 { A 1 ⋯ A n } \{A_1\cdots A_n\} {A1An}去掉 { A i 1 ⋯ A i n } \{A_{i1}\cdots A_{in}\} {Ai1Ain}的属性组, t r t s t_rt_s trts表示元组连接

(1)选择
σ F ( R ) = { t ∣ t ∈ R ∧ t ( F ) } \sigma_F(R) = \{t|t\in R \land t(F)\} σF(R)={ttRt(F)}
其中 F F F是布尔表达式,其含义是选 t ( F ) t(F) t(F)为真的所有元组,从行的角度进行运算。

image-20210311171527883

(2)投影
Π x ( R ) { t [ X ] ∣ t ∈ R } \Pi_x(R)\{t[X]|t\in R\} Πx(R){t[X]tR}
从列的角度运算,选出若干属性列组成新的关系

image-20210311171659701

(3)连接

条件连接和自然连接

条件连接:
R ⋈ A θ B S = { t ∣ t = t r t s , t r ∈ R ∧ t s ∈ S ∧ t r [ A ] θ t s [ B ] } R\underset{A \theta B}{\large \Join}S = \{t|t=t_rt_s, t_r\in R \land t_s \in S \land t_r[A]\ \ \theta\ \ t_s[B]\} RAθBS={tt=trts,trRtsStr[A]  θ  ts[B]}
θ \theta θ为条件。

image-20210311172544327

所以,条件连接相当于
R ⋈ A θ B S = σ A θ B ( R × S ) R \underset{A \theta B}{\large \Join} S = \sigma_{A \theta B} (R \times S) RAθBS=σAθB(R×S)
θ \theta θ表示=,则称为等值连接。

自然连接是特殊的等值连接,要求两个关系中比较的分量是相同的属性组,并在结果集中把重复的属性列去掉。
R ⋈ S = { t ∣ t = t r t s [ A ‾ ] , t r ∈ R ∧ t s ∈ S ∧ t r [ A ] = t s [ A ] } R \Join S = \{t|t=t_rt_s[\overline A], t_r\in R \land t_s \in S \land t_r[A] = t_s[A]\} RS={tt=trts[A],trRtsStr[A]=ts[A]}
比如下例

image-20210311173207625

如果有多列,也遵循相同规则

image-20210311173401969

所有重复字段都必须严格相同。

(4)除

如果R、S有同一域上的属性或属性组, R ÷ S R \div S R÷S结果生成新关系 R ′ R' R

R ( X , Y ) , S ( Y ) , R ′ ( X ) R(X,Y), S(Y), R'(X) R(X,Y),S(Y),R(X),则
R ÷ S = { t ∣ t ∈ R ′ ∧ t r ∈ R ∧ t s ∈ S ∧ t r [ R ′ ] = t ∧ t ⋈ S ⊆ R } R \div S = \{t|t\in R' \land tr \in R \land ts \in S \land tr[R']=t \land t \Join S \subseteq R\} R÷S={ttRtrRtsStr[R]=ttSR}
也就是R的属性中去掉与S具有公共域属性的其他属性。

image-20210311173851202

也可以这么表示除运算
R ÷ S = Π x ( R ) − Π x ( Π x ( R ) ⋈ S − R ) R \div S = \Pi_x(R) - \Pi_x(\Pi_x(R) \Join S - R) R÷S=Πx(R)Πx(Πx(R)SR)
其中 X X X R R R中除去 S S S属性相同的其余属性。

image-20210311174108415

接下来,我们更进一步解释除运算。首先引入象集 Z X Z_X ZX:给定关系R(X,Z),X、Z为属性组,当 t [ X ] = x t[X]=x t[X]=x时,定义
Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x = \{t[Z]|t\in R, t[X]=x\} Zx={t[Z]tR,t[X]=x}
表示R中属性组X上值为x的诸元组在Z上分量的集合。比如

image-20210311174543933

这样,我们定义除运算

给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组,那么除运算得到的P(X)是满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的象集Yx包含S在Y上投影的集合。再从上面的例子来看:

image-20210311175056846

四、扩充关系运算

下面介绍几个扩充运算。

(1)属性重命名

r是R上一个关系,A是R的一个属性,B是属性名,那么
r ′ ( R ′ ) = δ A → B ( r ) r'(R') = \delta_{A\to B}(r) r(R)=δAB(r)
记为属性重命名。可以同时对一组属性操作,可以在同一个关系上做自然连接运算、做同一个关系的笛卡尔积、将两个关系的等值连接表示为自然连接。

(2)外连接

外连接是对自然连接的扩展,包含除了满足连接条件元组外包含未被连接的元组。

外连接包括左外连接、右外连接、全连接。

左外连接:关系R中不满足连接条件的元组,记为 R ⋈ L S R\Join_L S RLS

image-20210318172710966

此时,比起自然连接,拓展了左面关系不满足条件的2号,并添加了NULL。

右外连接:关系S中不满足连接条件的元组,这些关系补空值,记为 R ⋈ R S R\Join_R S RRS

全外连接:关系R、S都进行考虑,记为 R ⋈ F S R\Join_F S RFS

实例

(1)检索计算机系学生的学号和姓名
Π i d , n a m e ( σ p r o = ′ 计算 机 ′ ( S t u d e n t ) ) \Pi_{id, name}(\sigma_{pro='计算机'}(Student)) Πid,name(σpro=计算(Student))
(2)查询选修2号课程学生学号
Π i d ( σ 课程号 = ′ 2 ′ ( S C ) ) \Pi_{id}(\sigma_{课程号='2'}(SC)) Πid(σ课程号=2(SC))
(3)查询选修1号课程的学生姓名(数据表为Student和SC)

image-20210318173511466 $$ \Pi_{sname}(\sigma_{Cno='1'}(\sigma_{sc.sno=student.sno}(SC \times Student))) $$ 也可以直接自然连接 $$ \Pi_{sname}(\sigma_{Cno='1'}(SC \Join Student)) $$ 或 $$ \Pi_{sname}(\sigma_{Cno='1'}(SC) \Join Student) $$ (4) image-20210318174110592 $$ Student - (\Pi_{Sno}(\sigma_{Cno='C1'}(SC)) \Join Student) $$ (5) image-20210318174352160 $$ \Pi_{Cname}(\sigma_{Sname='刘明亮'} (Course \Join SC \Join Student)) $$ (6) image-20210318174651325 $$ \Pi_{Sname}(\sigma_{Cpno='5'} (Course \Join SC \Join Student)) $$ 也可以写成 $$ \Pi_{Sname}(\sigma_{Cpno='5'}(Course) \Join SC \Join \Pi_{Sno, Sname}(Student)) $$ 等。

(7)

image-20210318174931343 $$ \Pi_{Sno,Cno}(SC) \div \Pi_{Cno}(Course) \Join \Pi_{Sno,Sname}(Student) $$ (8)查询选修1号课程和3号课程的学生的学号

首先建立临时关系 K K K,Cno列为 1 , 3 1,3 1,3。则答案为
Π S n o , C n o ( S C ) ÷ K \Pi_{Sno,Cno}(SC) \div K ΠSno,Cno(SC)÷K
(9)

image-20210318175351397 $$ SC \cup \{'200504','C4',88\} $$ (10)删除学生刘明亮选修的英语课 $$ SC - (\Pi_{Sno}(\sigma_{Sname='刘明亮'}(Student))\Join SC \Join \Pi_{Cno}(\sigma_{Cname='英语'}(Course))) $$ (11) image-20210318175712013 $$ \Pi_{Sname}( Student \div \Pi_{Sdept}(\sigma_{Sname='李勇'}(Student))) $$

σ S n a m e = ′ 李 勇 ′ ( Π S n a m e , S n o ′ , S n a m e ′ ( S t u d e n t ⋈ δ S n o , S n a m e , S a g e , S s e x → S n o ′ , S n a m e ′ , S a g e ′ , S s e x ′ ( S t u d e n t ) ) ) \sigma_{Sname='李勇'}(\Pi_{Sname,Sno',Sname'}(Student\Join \delta_{Sno,Sname,Sage,Ssex \to Sno',Sname',Sage',Ssex'}(Student))) σSname=(ΠSname,Sno,Sname(StudentδSno,Sname,Sage,SsexSno,Sname,Sage,Ssex(Student)))

用关系代数可以完成数据的检索、插入、删除,一次一集合。交并差笛卡尔积,选择投影连交除。

元组关系演算

关系代数是用关系运算来表达查询,关系演算是用谓词来表达查询要求。进一步分为元组演算和域演算。

元组语言的语句格式是 操作语句 <工作空间名> (表达式) : 条件

  • 检索语句Get
    • GET W (SC.Cno)
    • GET W (Student)
    • GET W (Student.Cno, Student.Sage) : Student.Sdept = ‘IS’
  • 更新操作
    • HOLD 将修改元组读到空间中
      • HOLD W (Student.Sno, Student.Sdetp) : Student.Sno = ‘95007’
    • MOVE 用宿主语言修改
      • MOVE ‘IS’ TO W.Sdept
    • UPDATE 将修改后元组送回
      • UPDATE W
    • PUT 插入操作
      • MOVE ‘8’ TO W.Cno
      • MOVE ‘机组’ To W.Cname
      • PUT W (Course)
    • DELETE 删除操作
      • HOLD W …
      • DELETE W

域关系语言

域关系语言是基于屏幕表格的查询语言。

image-20210318181723593 image-20210318181752280 image-20210318181807753 image-20210318181833367 image-20210318181916790 image-20210318181935984

了解其特点即可。

关系数据语言

关系数据语言集关系代数和关系演算为一体。

  • 关系数据语言是一种高度的非过程化的语言
  • 存取路径选择由DBMS优化机制来完成
  • 用户不必用循环结构就可以完成数据操作
  • 能够嵌入高级语言使用
  • 关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价。

这里有三种关系运算的等价性。

关系数据库中,关系是有限的。关系代数运算是安全的,但关系演算不一定安全。当对安全性进行限制注资后,三种演算是完全等价的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音合成之十七 语音合成(TTS)中文自然度:问题、成因、解决方案

语音合成&#xff08;TTS&#xff09;中文自然度&#xff1a;问题、成因、解决方案 中文TTS系统基本架构中文TTS常见问题深度剖析与解决方案音色跳变成因分析解决方案 声调与重读错误成因分析业界解决方案 漏读与断句错误成因分析业界解决方案 在跨语言TTS系统比较中&#xff0…

我在 Linux 进程管理中踩过的坑:僵尸、瞬时与不可中断进程实战实录

作为运维老鸟&#xff0c;我曾在 Linux 进程管理上栽过不少跟头。记得第一次遇到满屏僵尸进程时&#xff0c;服务器直接卡到连 SSH 都登不上&#xff0c;看着ps命令里一排排刺眼的Z状态进程&#xff0c;手心直冒冷汗。后来又碰到过瞬时进程搞崩日志系统&#xff0c;明明监控显示…

【设计模式】简单工厂模式,工厂模式,抽象工厂模式,单例,代理,go案例区分总结

工厂模式三种类型&#xff1a; 一、简单工厂模式&#xff08;Simple Factory&#xff09; 定义&#xff1a; 用一个工厂类&#xff0c;根据传入的参数决定创建哪一种具体产品类实例。 面试说法&#xff1a; 由一个统一的工厂创建所有对象&#xff0c;增加新产品时需要修改工…

某标杆房企BI平台2.0升级实践

当房地产行业从“规模竞赛”转向“精益运营”&#xff0c;数字化转型成为破局关键。某千亿房企携手亿信华辰&#xff0c;以“用数据重构业务价值链”为目标&#xff0c;历经6个月完成BI平台战略性升级。在这场从“数据可视化”到“决策智能化”的跃迁中&#xff0c;亿信华辰ABI…

Lua 脚本在 Redis 中的运用-24 (使用 Lua 脚本实现原子计数器)

实践练习:使用 Lua 脚本实现原子计数器 实现原子计数器是许多应用程序中的常见需求,例如跟踪网站访问量、限制 API 请求或管理库存。虽然 Redis 提供了 INCR 命令用于递增整数,但在复杂场景或与其他操作结合时直接使用它可能并不足够。本课程探讨了如何在 Redis 中利用 Lua…

Rust 学习笔记:使用迭代器改进 minigrep

Rust 学习笔记&#xff1a;使用迭代器改进 minigrep Rust 学习笔记&#xff1a;使用迭代器改进 minigrep不使用 clone&#xff0c;而使用迭代器使用迭代器适配器使代码更清晰在循环或迭代器之间进行选择 Rust 学习笔记&#xff1a;使用迭代器改进 minigrep 前情提要&#xff1…

el-table配置表头固定而且高度变化

根据官网提示只要在 el-table 元素中定义了 height 属性&#xff0c;即可实现固定表头的表格&#xff0c;而不需要额外的代码。 如果你想既要固定表头&#xff0c;又要下方表格高度自适应&#xff0c;可以设置为 height"100%" &#xff1a; 然后外层设置scroll:

弱光环境下如何手持相机拍摄静物:摄影曝光之等效曝光认知

写在前面 博文内容为一次博物馆静物拍摄笔记的简单总结内容涉及&#xff1a;弱光环境拍摄静物如何选择&#xff0c;以及等效曝光的认知理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我看远山&#xff0c;远山悲悯 持续分享技术干货&#xff0c;感兴趣小伙伴可以关注下 _ 采…

ARM笔记-ARM伪指令及编程基础

第四章 ARM伪指令及编程基础 4.1 伪指令概述 4.1.1 伪指令定义 人们设计了一些专门用于指导汇编器进行汇编工作的指令&#xff0c;由于这些指令不形成机器码指令&#xff0c;它们只是在汇编器进行汇编工作的过程中起作用&#xff0c;所以被叫做伪指令。 4.1.2 伪指令特征 …

智能手表怎么申请欧盟EN 18031认证

智能手表申请欧盟 EN 18031 认证&#xff08;针对消费类物联网设备的网络安全标准&#xff09;的流程与智能门锁类似&#xff0c;但需结合手表的功能特性&#xff08;如数据交互、定位、支付等&#xff09;调整合规重点。以下是具体流程和关键要点&#xff1a; 一、标准适配与…

算法-全排列

1、全排列函数的使用 举例&#xff1a;{1,2,3}的全排列 #include<iostream> #include<bits/stdc.h> using namespace std; typedef long long ll; int main(){ll a[3] {1, 2, 3};do{for (ll i 0; i < 3;i){cout << a[i] << " ";}cout…

面试加分秘籍:校招数据倾斜场景下的SQL优化方案

校招面试经常会问大家有没有过调优的经验&#xff0c;相信大家的回答基本都是往数据倾斜和小文件问题这两方面回答&#xff0c;对于数据倾斜相信大部分同学对热key打散或null值引发的倾斜已经非常熟悉&#xff0c;但这些内容面试官也是听腻了&#xff0c;希望大家在面试时候讲一…

Elasticsearch索引机制与Lucene段合并策略深度解析

引言 在现代分布式搜索引擎Elasticsearch中&#xff0c;文档的索引、更新和删除操作不仅是用户交互的核心入口&#xff0c;更是底层存储架构设计的关键挑战。本文围绕以下核心链路展开&#xff1a; 文档生命周期管理&#xff1a;从客户端请求路由到分片定位&#xff0c;从内存…

git提交更改

第一步&#xff1a;添加改动 git add . 第二步&#xff1a;提交改动 git commit -m “替换了 SerialPort 库文件” 第三步&#xff1a;推送到远程 git push 为什么git 的UI界面做的远不如SVN

WPF的基础控件:布局控件(StackPanel DockPanel)

布局控件&#xff08;StackPanel & DockPanel&#xff09; 1 StackPanel的Orientation属性2 DockPanel的LastChildFill3 嵌套布局示例4 性能优化建议5 常见问题排查 在WPF开发中&#xff0c;布局控件是构建用户界面的基石。StackPanel和DockPanel作为两种最基础的布局容器&…

互联网大厂Java求职面试:AI大模型推理服务性能优化与向量数据库分布式检索

互联网大厂Java求职面试&#xff1a;AI大模型推理服务性能优化与向量数据库分布式检索 面试现场&#xff1a;技术总监的连环追问 技术总监&#xff1a;&#xff08;翻看着简历&#xff09;郑薪苦&#xff0c;你在上一家公司参与过LLM推理服务的性能优化项目&#xff1f;说说你…

如何解决网站服务器的异常问题?

当网站服务器出现异常情况&#xff0c;导致用户无法正常访问网页信息的时候&#xff0c;该如何解决这一问题呢&#xff1f;小编下面就带领大家共同探讨一下这一问题。 企业在面对网站服务器异常时&#xff0c;首先要对服务器硬件设备进行详细的检查&#xff0c;可以使用硬盘检测…

Day 35

模型可视化与推理 知识点回顾&#xff1a; 三种不同的模型可视化方法&#xff1a;推荐torchinfo打印summary权重分布可视化 进度条功能&#xff1a;手动和自动写法&#xff0c;让打印结果更加美观 推理的写法&#xff1a;评估模式 模型结构可视化 理解一个深度学习网络最重要的…

[yolov11改进系列]基于yolov11引入自注意力与卷积混合模块ACmix提高FPS+检测效率python源码+训练源码

[ACmix的框架原理] 1.1 ACMix的基本原理 ACmix是一种混合模型&#xff0c;结合了自注意力机制和卷积运算的优势。它的核心思想是&#xff0c;传统卷积操作和自注意力模块的大部分计算都可以通过1x1的卷积来实现。ACmix首先使用1x1卷积对输入特征图进行投影&#xff0c;生成一组…

[DS]使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码

使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码 摘要&#xff1a;由于 sample_data.csv 是一个占位符文件&#xff0c;用于代表任意数据集&#xff0c;我将使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码…