数据库体系引论
数据管理体系的发展
数据管理:对数据分类、组织、编码、存储、检索、维护
发展:人工管理、文件体系、数据库体系
- 40-50年代 人工管理 数据不保存,没有专门软件管理数据,应用程序完全依赖于数据,数据不能共享
- 50年代末-60年代中 文件体系阶段 硬件有磁盘磁鼓,数据可以长期保存,数据面向应用,数据冗余度大,缺乏统一控制
- 60年代末 数据库体系阶段 有大容量磁盘和数据库管理体系
- 1968 IBM研究世界上第一个商品化数据库管理体系IMS
- 1969 网状数据模子陈诉DBTG
- 1970 关系模子的论文提出
- 主要特征:数据布局化;独立性高:独立性体如今物理独立性和逻辑独立性,通过数据库体系所提供的二级映像的实现;减少数据冗余:数据面向体系,集中管理;数据共享;统一的数据掩护功能
数据库
- 存放数据的仓库。
- 存放在介质上的干系数据的集合
- 长期存储在计算机内、有组织的、可共享的大量数据集合
- 数据库是长期存储在计算机内,有组织的数据集合,根据数据间的联系组织在一起,具有较高的数据独立性,减少数据冗余,能够为各种用户共享。
数据库管理体系
数据库需要一个软件体系统一管理,这个软件体系是数据库管理体系(DBMS)
- 统一管理数据库的软件体系
- 位于用户与操纵体系之间的一层数据管理软件
- 赋值数据库的管理和维护,具有数据定义、数据操纵、运行管理和维护等功能
- 是数据库体系的焦点
其功能有
- 定义功能。包罗模式定义、外模式定义、内模式定义。
- 操纵功能。
- 掩护功能。包罗安全性、完整性、并发控制、恢复。
- 维护功能。包罗转储、数据装入、统计、存储等。
DBMS提供数据定义语言(DDL),定义数据库的数据布局,包罗模式定义语言、外模式定义语言和内模式定义语言。
DBMS一般提供一种或两种DDL
数据定义语言形貌的模式成为源模式,需要借助编译程序翻译成机器代码形式的目的模式,供DBMS利用。
数据模子
模子方法是一种抽象体现,把体现事物的主要特征抽象的用一种形式化的形貌反映。数据模子是将事物之间的联系,转化为数据和数据间的联系。
数据模子是****,包含三个要素:
- 数据布局,对数据静态特征的形貌
- 数据操纵,对数据动态特性的形貌
- 数据的完整性约束,数据间的制约和依存关系
概念模子不涉及信息在计算机的体现,面向用户,只要用户需求不变,概念模子也不变。狭义的数据模子是按照计算机体系的观点建模,又包含两个部分
- 逻辑数据模子:用户看到的数据模子,用于数据库计划,如E-R模子
- 物理数据模子:数据存储布局和存取方法,用于DBMS实现,包罗网状模子、层次模子、关系模子等等
数据模子是对数据最底层的抽象。
数据布局是最紧张的部分,不同数据模子由数据布局来表征。
数据库体系布局
数据库体系中,用户可以逻辑地、抽象地处理数据,而不必思量数据在计算机中如何组织、存放。
数据库体系布局是一个多级布局,方便用户存取数据,同时高效地组织数据,以最佳形式在物理存储器存放。
特点:
- 数据布局化
- 数据的共享性高,冗余度低且容易扩充
- 数据独立性高(
物理独立性:应用程序与物理存储相互独立,数据的物理存储改变,应用程序不改变;
逻辑独立性:应用程序与逻辑布局相互独立,数据的逻辑布局改变,应用程序不改变。)
数据库体系分成三个层次,称为三级布局:
- 模式,Schema,也叫(逻辑模式), 是全体数据的逻辑布局和特征的形貌
- 外模式(子模式、用户模式),SubSchema,是数据库用户能瞥见的最终体现。外模式是模式的子集,一个数据库可以有多个外模式,不同用户有不同外模式。外模式与应用也是一对多的关系。外模式是掩护数据库安全的步调,用户只能瞥见或访问外模式的数据。
- 内模式(存储模子),也称存储模式,是数据物理布局和存储方式的形貌,一个数据库只有一个内模式。
总的来说,三级模式是对数据的视图级、概念级、物理级的抽象级别。
三级模式之中有两级映像。这种映像目的是数据库内部实现三个抽象层级的联系和转化。
- 外模式与模式之间的映像,定义局部数据逻辑布局和全局逻辑布局的对应关系。当模式布局改变,只需要修改外模式与模式的对应关系,不必修改外模式的局部逻辑布局,实现数据逻辑独立性;
- 模式与内模式之间的映像,定义全局数据逻辑布局和物理数据存储间的对应关系。当物理存储布局改变的时候,仅需要修改模式与内模式间的影响关系,而使模式保持不变,实现数据的物理独立性。
数据库体系的不同利用者
其人员分成四类:数据库管理员、体系分析员、应用程序员、用户。
不同人员计划数据抽象级别不同。
- 数据库管理员,决定数据库存储布局和计谋
- 体系分析员,涉及需求分析
- 计划人员,确定数据库的数据和各级模式
- 应用程序有,编码实现
- 用户,利用体系
数据库技术的发展
- 第一代60年代末研制的层次、网状数据库体系
- 第二代关系数据库体系,如今仍占据主流
- 围绕面向对象数据模子的研究,OODBMS
数据模子
数据模子是对现实世界数据信息的抽象和体现,分成概念模子和数据模子,对应用户观点的数据模子和狭义的物理存储上的数据模子。
本章主要介绍概念模子和逻辑数据模子,焦点是E-R概念模子。对四种逻辑模子只做简朴介绍,在第三章重点介绍关系模子。
数据模子的组成要素:
- 数据布局:形貌体系的静态特性 → 形貌数据库的组成对象以及对象之间的联系
- 数据操纵:形貌体系的动态特性 → 是对数据库中的各种对象的实例所答应的操纵的集合,其范例有查询和更新(增编削查)
- 数据完整性约束:用以限定数据模子的数据库状态以及状态的变化,以保证数据的准确、有效与相容,完整性约束条件是一组完整性规则的集合。
E-R概念模子
概念模子是对信息世界的建模,是数据库计划的有力工具。它需要较强的语义表达本领,简朴清楚、易于明白。
一、E-R模子中的基本概念
实体:客观存在并可相互区别的事物实体可以是具体对象,比如一个弟子,一本书;也可以是抽象的概念或联系,比如一堂课。
属性:实体所具有的某一特征。一个实体可以由若干属性刻画,有范例和值的区分。范例是属性名,值是属性的具体内容。
联系:在现实世界中,事物内部以及事物之间是有联系的。在信息世界中,常被抽象为实体内部的联系和实体之间的联系。内部的联系是组成实体各属性的联系;之间的联系是不同实体集之间的联系。
实体之间的联系最简朴的是两个实体之间的联系:
一对一联系:A中的一个实体至多与B的一个实体相对应
一对多联系:A中的一个实体与B中的多个实体相对应,反之B的一个实体至多与A的一个实体相对应
多对多联系:A、B中一个实体与另一个实体集多个实体联系
多个实体间也可以存在联系,称为 多元联系。比方
这样的联系称为m:n:p。
两两之间多对多的联系和三个实体的多对多的联系,语义有何不同呢?
两两之间的多对多仅能体现一个工程需要哪些零件、由哪些供应商提供。
但是多对多联系可以形貌一个工程所用的零件具体由哪个供应商供应。
实体集内部不同实体间的联系也存在一对一、一对多、多对多。比如,一个领导领导多个职工。
二、E-R模子
E-R(Entity-Relationship Approach)是最闻名的概念模子,用矩形体现实体,椭圆体现属性,菱形框体现联系。
联系有比力多的语义
- 基数比约束,比如二元联系中1:1、1:n的联系
- 参与约束,根据实体是否全部参与联系形貌
- 实体参与度,实体参与联系的最小和最大的次数
- 弱实体,实体存在依赖于其它实体存在
- 子类实体,根据不同特性分成多个子集
一个物资管理需求如下
最后,得到
用关系模子来体现学校
层次模子
层次模子是数据库体系最早出现的数据模子,用树形布局体现各类实体和实体间联系。
层次模子满足两个条件:
- 有且只有一个节点没有双亲结点,为根节点;
- 根以外节点有且只有一个双亲结点。
比如下面一个层次:
其特点是,数据布局简朴清楚,查询服从高,提供了良好的数据完整性支持。
但这种模子不能体现两个以上实体间复杂联系和实体间多对多联系,只能通过引入冗余数据或假造节点来办理。对数据插入和删除涉及树的操纵,所以工作量比力大,查询子女节点需要通过双亲结点。由于布局精密,层次下令趋于程序化。
网状模子
现实世界的联系许多的非层次的,所以用层次模子表达有非直观性。网状模子满足下面的条件:答应一个以上节点无双亲,一个节点可以有多于一个双亲。
网状模子能更直接的形貌现实世界,如一个节点可以有多个双亲;同时它性能尚可。但是,它布局非常复杂,不利于用户把握;DDL、DML语言复杂,不容易利用。
关系模子
1970年,E.F.Codd提出了关系数据模子,1977年出现了第一个关系数据库,而80年代依赖关系数据就占据主流。
(1)基本概念和布局
关系是一张二维表,一个关系形貌一个实体集。实体有属性,二维表的列就是属性。一个属性对应的一个集合是域。
关系是元组的集合,一个元组对应实体集中的一个个体。一个元组由若干分量组成,一个分量对应一个属性值。
键是一个或多个属性构成的,能够唯一标识一个元组。一个关系中大概有多组属性都能起到标识元组的作用,所以一个关系大概有多个键。选择其中一个作为主键,其余为候选键。
(2)关系模式
对关系布局的形貌称为关系模式。关系模式可体现为:
(3)ER模式向关系数据模式的映射
关系数据模子中,基本的数据布局是关系。现实世界中,实体和实体间的联系都用关系体现。
联系可以用表来形貌。比如,选课联系 -> 选课表。表中有来自弟子和课程两个实体的属性,成绩是选课关联自身的形貌属性。
关系必须是规范化的,关系的每一个分量必须不可分。也就是,不能存在表中表。
(4)完整性约束
关系数据需要有实体完整性、参照完整性、用户自定义完整性。
(5)数据操纵
答应进行增编削查。
这种关系运算都可以归结为关系代数和关系演算两类。
总的来说,关系数据模子可以体现为下表:
关系模子有下面的优点
- 数据布局简朴
- 一体化数据子语言
- 数据独立性高
- 面向集合的存取方式
- 坚实的理论基础
- 有利于开展其他应用
面向对象数据模子
对象关系数据体系是面向对象数据模子和关系数据模子相结合的产物。一般来说,面向对象有两条门路,一条是建立新的数据库体系,另一种是走结合路径。
但缺乏通用数据模子、理论基础、查询优化,导致面向对象数据库理论技术没有成熟,关系数据库仍处于统治职位。
关系数据库
主要讨论基本概念和各种运算。
按照静态数据布局、动态数据操纵、完整性约束来介绍。
关系模子基本概念
一、基本概念
域是一组具有相同数据范例的值的集合。
笛卡尔积:给定一组集合 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×D2⋯Dn就是全部域的全部组合。
笛卡尔积的每个元素叫做一个元组 ( 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中某个元组主键的值。
- 比如弟子和专业信息,二者是参照关系和被参照关系。弟子的专业信息要么是空,要么是专业信息中的某个数据项。这个时候,其取值局限在专业代码中。
- 这个时候,外键参考主键信息。
比如这个图中,班长的取值一定是学号之中。
- 用户定义完整性,用户定义后体系支持
- 用户定义完整性是针对某一具体关系数据库的约束条件。比如,成绩不能为负数、性别的输入条件。
- 也叫做预定义完整性。
关系代数
一、关系代数概述
关系代数是抽象的查询语言,用对关系的运算表达查询。
它有三个要素:
按照运算符不同,关系代数分成两类:传统的集合运算和专门的关系运算。
二、集合运算
(1)并
假如R、S有相同的目,属性取自同一域,那么
KaTeX parse error: Undefined control sequence: \or at position 24: …S = \{t|r\in R \̲o̲r̲ ̲t \in S\}
(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\}
三、关系运算
先引入记号
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\} {A1⋯An}去掉 { A i 1 ⋯ A i n } \{A_{i1}\cdots A_{in}\} {Ai1⋯Ain}的属性组, 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)={t∣t∈R∧t(F)}
其中 F F F是布尔表达式,其含义是选 t ( F ) t(F) t(F)为真的全部元组,从行的角度进行运算。
(2)投影
Π x ( R ) { t [ X ] ∣ t ∈ R } \Pi_x(R)\{t[X]|t\in R\} Πx(R){t[X]∣t∈R}
从列的角度运算,选出若干属性列组成新的关系
(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θB⋈S={t∣t=trts,tr∈R∧ts∈S∧tr[A] θ ts[B]}
θ \theta θ为条件。
所以,条件连接相称于
R ⋈ A θ B S = σ A θ B ( R × S ) R \underset{A \theta B}{\large \Join} S = \sigma_{A \theta B} (R \times S) RAθB⋈S=σ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]\} R⋈S={t∣t=trts[A],tr∈R∧ts∈S∧tr[A]=ts[A]}
比如下例
假如有多列,也遵循相同规则
全部重复字段都必须严格相同。
(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={t∣t∈R′∧tr∈R∧ts∈S∧tr[R′]=t∧t⋈S⊆R}
也就是R的属性中去掉与S具有公共域属性的其他属性。
也可以这么体现除运算
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)⋈S−R)
其中 X X X为 R R R中除去 S S S属性相同的其余属性。
接下来,我们更进一步解释除运算。首先引入象集 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]∣t∈R,t[X]=x}
体现R中属性组X上值为x的诸元组在Z上分量的集合。比如
这样,我们定义除运算
给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组,那么除运算得到的P(X)是满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的象集Yx包含S在Y上投影的集合。再从上面的例子来看:
四、扩充关系运算
下面介绍几个扩充运算。
(1)属性重命名
r是R上一个关系,A是R的一个属性,B是属性名,那么
r ′ ( R ′ ) = δ A → B ( r ) r'(R') = \delta_{A\to B}(r) r′(R′)=δA→B(r)
记为属性重命名。可以同时对一组属性操纵,可以在同一个关系上做自然连接运算、做同一个关系的笛卡尔积、将两个关系的等值连接体现为自然连接。
(2)外连接
外连接是对自然连接的扩展,包含除了满足连接条件元组外包 含未被连接的元组。
外连接包罗左外连接、右外连接、全连接。
左外连接:关系R中不满足连接条件的元组,记为 R ⋈ L S R\Join_L S R⋈LS
此时,比起自然连接,拓展了左面关系不满足条件的2号,并添加了NULL。
右外连接:关系S中不满足连接条件的元组,这些关系补空值,记为 R ⋈ R S R\Join_R S R⋈RS
全外连接:关系R、S都进行思量,记为 R ⋈ F S R\Join_F S R⋈FS
实例
(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)
$$ \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) $$ Student - (\Pi_{Sno}(\sigma_{Cno='C1'}(SC)) \Join Student) $$ (5) $$ \Pi_{Cname}(\sigma_{Sname='刘豁亮'} (Course \Join SC \Join Student)) $$ (6) $$ \Pi_{Sname}(\sigma_{Cpno='5'} (Course \Join SC \Join Student)) $$ 也可以写成 $$ \Pi_{Sname}(\sigma_{Cpno='5'}(Course) \Join SC \Join \Pi_{Sno, Sname}(Student)) $$ 等。 (7)
$$ \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)
$$ SC \cup \{'200504','C4',88\} $$ (10)删除弟子刘豁亮选修的英语课 $$ SC - (\Pi_{Sno}(\sigma_{Sname='刘豁亮'}(Student))\Join SC \Join \Pi_{Cno}(\sigma_{Cname='英语'}(Course))) $$ (11) $$ \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,Ssex→Sno′,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 用宿主语言修改
- UPDATE 将修改后元组送回
- PUT 插入操纵
- MOVE ‘8’ TO W.Cno
- MOVE ‘机组’ To W.Cname
- PUT W (Course)
- DELETE 删除操纵
域关系语言
域关系语言是基于屏幕表格的查询语言。
相识其特点即可。
关系数据语言
关系数据语言集关系代数和关系演算为一体。
- 关系数据语言是一种高度的非过程化的语言
- 存取路径选择由DBMS优化机制来完成
- 用户不必用循环布局就可以完成数据操纵
- 能够嵌入高级语言利用
- 关系代数、元组关系演算和域关系演算三种语言在表达本领上完全等价。
这里有三种关系运算的等价性。
关系数据库中,关系是有限的。关系代数运算是安全的,但关系演算不一定安全。当对安全性进行限定注资后,三种演算是完全等价的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|