赞
踩
数据库系统(工作环境)包括:
SQL:数据库语言:
表的抽象:
(关系)模式指的是表名加表标题:
数据库定义:定义数据库中Table的名称标题(内含的属性名称及对该属性的值的要求等)
数据库管理系统应该具有什么功能?
一条数据库语言语句相当于高级语言的一个或多个循环程序
DBMS管理数据的三个层次:
External Level = User Level
某一个用户能够看到与处理的数据,全局数据中的某一部分
Conceptual Level = Logic level
从全局角度理解/管理的数据,含相应的关联约束
Internal Level = Physical level
存储在介质上的数据,含存储路径,存储方式,索引方式等
数据与数据的结构-模式:
三级模式(三级视图):
内模式(物理模式\存储模式),
概念模式(全局模式\逻辑模式),
外模式(用户模式)
如果只说模式(Schema),默认全局模式
只说视图(View)默认外部视图
将一种结构变成另一种结构叫做映像
E-C Mapping:
C-I Mapping:
逻辑数据独立性:
当概念模式变化是,可以不改变外部模式(只需要改变E-C Mapping),从而无需改变应用程序
物理数据独立性:
当内部模式变化时,可以不改变概念 模式(只需改变C-I Mapping),从而不改变外部模式
数据模型:
- 规定模式统一描述方式的模型,包括:数据结构,操作和约束
- 数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象
eg:
- 关系模型:所有模式都可为抽象表(Table)的形式[数据结构],而每一个具体的模式都是拥有不同列名的具体的表,对这种表形式的数据有哪些[操作]和[约束].
三大经典数据模型:
一个关系就是一个Table
关系模型就是处理Table的,它由三个部分组成:
关系模型的三个要素:
关系运算: 关系代数和关系演算
关系演算: 元组演算和域演算
关系代数: 基于集合的运算
操作的对象及结果都是集合,是一次一集合的操作,而非关系型的数据操作通常都是一次一记录的操作
基于关系代数设计的数据库语言(ISBL): 用计算机可识别的符号表征关系代数的运算符号
eg:R:F表选择运算(F表选择的条件),R%表投影运算
元组演算: 基于逻辑的运算
基于元组演算设计的数据库语言(QUEL): 用计算机可识别的符号表征元组演算的运算符号
eg:range of t is R,
retrieve t,
where t.sage < u.sage
域演算示例: 基于示例的运算
基于域演算设计的数据库语言示例: QBE
表的严格定义:
关系可用R(A1: D1,A2: D2…An: Dn)表示,可简记为R(A1,A2,…,An),这种描述又被称作关系模式或表标题
R是关系的名字,Ai是属性,Di是属性所对应的域,n是关系的度或目,关系中元组的数目称为关系的基数
关系的列是同质:即每一列中的分量来自同一域,是同一类型的数据
不同的列可来自域同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名:
行列位置互换性:区分是否为同一关系不是靠顺序,而是靠内容(名字或值)来区分的,而不是属性在关系中的位置来区分的
理论上,关系的任意两个元组不能完全相同(集合的要求:集合内不能有相同的两个元素);现实应用中,表(Table)可能并不完全遵守此特性.
元组相同是指两个元组的每个分量都相同
关系的属性不可再分:又被称为关系的第一范式
关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去任何一个属性,它就不具有这一性质了,这样的属性组称为候选码.
主码/主键 :当有多个候选码的时,可以选定一个作为主码,DBMS以主码为主要线索管理关系中的每个元组.
主属性和非主属性:包含在任何一个候选码中的属性被称作主属性,而其他属性被称作非主属性(最简单的:候选码只包含一个属性,最极端的,所有属性构成这个关系的候选码:全码)
外码/外键 : 关系R中的一个属性组,他不是R的候选码,但他与另一个关系s的候选吗相对应,则称这个属性组为R的外码或者外键,两个关系通常是靠外码连接起来的.
DBMS对关系完整性的支持:
- 基于集合,提供了(==并,差,笛卡尔积(广义积),选择,投影和更名等==)基本操作
- 以及交,连接和关系除等扩展操作,是一种集合思维的操作语言
- 关系代数操作以一个或者多个关系为输入,结果是一个新的关系
- 用对关系的运算来表达查询,需要指明所用操作,具有一定的过程性
- 是一种抽象的语言,是学习其他数据库语言,如SQL等的基础
集合操作:并,交,差,笛卡尔积
纯关系操作:投影,选择,连接,除
某些关系代数操作,如并,差,交等,需满足"并相容性"
并相容性:
并:
差
广义笛卡尔积
选择
投影
交
连接
θ-连接操作
它由关系R和关系S的笛卡尔积中,选取R中属性A与属性B之间满足θ条件的元祖构成
数学描述
自然连接
更名操作
书写关系代数表达式的基本思路
检索是否涉及多个表,如不涉及,则可直接采用并、差、交、选择与投影,只要注意条件书写正确与否即可
如涉及多个表.则检查
连接完后,可以继续使用选择,投影等运算,即所谓数据库的"选投联"操作
除
外连接
存在量词和全称量词
有点类似于循环,并且按条件一层一层写下去.
不重要
不产生无限关系和无穷验证的运算被称作为是安全的.
关系代数----以集合为对象的操作思维,由集合到集合的变化
元组演算----一元组为对象的操作思维,取出关系的每一个元组进行验证,有一个元组变量则可能需要一个循环,多个元组变量则需要多个循环
域演算---- 以域变量为对象的操作思维,取出域的每一个变量进行验证看其是否满足条件
==三种运算之间是等价的:==关系代数域安全的元组演算表达式与安全的域演算表达式是等价的
==三种关系运算都可说是非过程性的:==相比之下:域演算的非过程性最好,元组演算次之,关系代数最差
三种关系运算虽然是抽象的,但确实衡量数据库语言完备性的基础
包括两件事:定义数据库和表(使用DDL),向表中追加元组(使用DML)
DDL:
创建DB中的Table(定义关系模式):Create Table 表名(列名 数据类型[Primary key|Unique] [Not null] ,列名 数据类型[Primary key|Unique] [Not null]…)
向表中追加元组:insert into 表名[(列名[,列名]…] values (值 [,值],…);
多表联合查询
SQL之更新操作
元组新增Insert:新增一个或一些元组到数据库的Table中
元组更新Update:对某些元组中的某些属性值进行重新设定
元组删除Delete:删除某些元组
元组新增insert命令有两种形式
批数据新增命令形式:插入子查询结果的若干元组,待插入的元组由子查询给出
基本语法:
表达式 [not] in (子查询)
语法中,表达式的最简单形式就是列名或常数
语义:判断某一表达式的值是否在子查询的结果中
注意:
等价性变换
下列表达方式含义是相同的
但是 not in 与 some不等价
等价的是如下两个
聚集函数不能放在Where子句中,一般放在Having中做过滤条件的
不能写 Where Sage = null; 空值是不能进行运算的
视图其实并未存储,其实只是存储了SQL语句
视图的能否更新看的是是否更新的是视图还是对基本表的更新
数据库完整性问题:
数据库完整性管理的作用
防止和避免数据库中不合理数据的出现
DBMS应尽可能地自动防止DB中语义不合理现象
如DBMA
不能自动防止,则需要用户和应用程序员操作处处小心,所以要尽可能让DBMS来承担
DBMS允许用户定义一些完整性约束规则(用SQL-DDL来定义)
当有DB更新操作时,DBMS自动按照完整性约束条件来进行检查,以确保更新操作符合语义完整性
完整性约束条件(或称完整性约束规则)的一般形式
数据库完整性的分类
数据库安全性是指DBMS应该保证数据库的一种特性(机制或手段):免受非法,非授权用户的使用,泄露,更改或破坏
DBMS的安全机制:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。