赞
踩
数据冗余度
小,数据共享性高
具有较高的数据独立性
数据库系统的
数据独立性
是指用户应用程序与数据库的数据相互独立,体现在不会因为数据存储结构与数据逻辑结构变化而影响应用程序
数据结构化
具有统一的数据控制功能
数据库的完整性是指数据的_正确性和相容性_
数据库恢复要涉及到的两个技术是_数据转储、登记日志文件_
概念模型也叫信息模型,是按用户的观点来对数据和信息建模,用于数据库设计,E-R模型就是概念模型.概念模型独立于具体的机器(硬件设备)和DBMS
层次模型
利用树型结构
网状模型
利用网状结构
层次模型和网状模型中的单位是基本层次联系,这是指两个记录(型)以及它们之间的一对多(包括一对一)的联系。
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。面向计算机系统,物理模型的具体实现是DBMS的任务。
对数据系统的静态特性描述
对数据系统的动态特性描述
模式也叫逻辑模式,数据库系统模式结构中的中间层
,是所有用户的公共数据视图,一个数据库只有一个模式
外模式也叫子模式或者用户模式,是模式的子集,一个数据库可以有多个外模式,每个用户只能看见和访问所对应的外模式的数据
内模式也叫存储模式,一个数据库只有一个内模式
模式: 全局逻辑独立性
外模式 :局部逻辑独立性
外模式/模式映像——数据的逻辑独立性
模式/内模式映像——数据的物理独立性
数据的物理独立性是指用户的应用程序与存储磁盘上数据库的数据是相互独立的
按照规范的设计方法,一个完整的数据库设计一般分为以下六个阶段:
需求分析:分析用户的需求,包括数据、功能和性能需求;
概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换(其中包括对关系进行规范化处理);
数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
数据库的实施:包括编程、测试和试运行;
数据库运行与维护:系统的运行与数据库的日常维护。
超码: 一个或者多个属性的集合(里面有无关紧要的属性),这些属性上的取值保证可以唯一识别出关系中的元组
候选码:最小的超码(每个属性都有用,决定其他属性的属性集合)
主码:是被数据库设计者选中,只是用来区分而已(关系的一个候选码可以作为主码)
外码和参照关系
体现:对基本表插入或更新操作的时候,
(1)检查主码是否唯一,如果不唯一则拒绝插入或修改。
(2)检查主码的各个属性是否为空,只要有一个为空则拒绝插入或修改。
解决措施:
1.拒绝执行,不允许该操作执行。
2.级联操作,当删除或修改被参照表的一个元组导致与参照表不一致的时候,删除或修改参照表中的所有导致不一致的元组。
3.设置为空值,当删除或修改被参照表的一个元组导致与参照表不一致的时候,将参照表中的所有导致不一致的元组设置为空值。【需要考虑是否能为空】
包括:
1.列值非空
2.列值唯一
3.检查列值是否满足一个通过Check语句定义的布尔表达式。通过Check语句可以定义在列级、行级的约束
#主键约束
alter table [表名] add constraint [列名] primary key (id)
#check约束
alter table [表名] add constraint [列名] check(条件)
#unique约束
alter table [表名] add constraint [列名] unique(ename)
#默认约束
alter table [表名] add constraint default 约束类型 默认值 for 列名
#外键约束
alter table [表名] add constraint foreign key (列名) references 被引用的表名称(列名)
符号 | 使用实例 |
---|---|
α 条 件 ( 表 名 ) \alpha_{条件}(表名) α条件(表名) 选择 | α s a l a r y > = 5000 ( i n s t r u c t o r ) \alpha_{salary>=5000}(instructor) αsalary>=5000(instructor) |
Π 属 性 名 ( 表 名 ) \Pi_{属性名}(表名) Π属性名(表名) 投影 | Π I D , s a l a r y ( i n s t r u c t o r ) \Pi_{ID,salary}(instructor) ΠID,salary(instructor) |
自然连接 | |
× \times ×笛卡尔积 | [表名] × \times ×[表名] |
U U U并 | 表名 U U U表名(要求两个表的属性完全相同) |
优点:
集数据定义语言,数据操作语言,数据控制语言功能于一体
存取路径的选择以及SQL的操作过程由系统自动完成
操作对象、查找结果、一次插入、删除、更新操作的对象都可以是元组的集合
SQL是独立的语言,又是嵌入式的语言,关系数据库语言
数据定义
:数据定义语言用于定义数据的结构,比如创建、修改或者删除数据库对象,相应的语句是CREATE、ALTER 和 DROP;
数据操纵
:数据操纵语言用于修改数据,修改数据包括插入、更新和删除,对应的语句是 INSERT、UPDATE 和 DELETE;
数据控制
:数据控制语言用于定义数据库用户的权限,其中授予权限使用 GRANT 语句,收回权限使用 REVOKE 语句等等。
数据查询
:数据查询语言用于检索,检索数据使用 SELECT 语句;
char(n) 用户指定长度
varchar(n) 指定最大长度
int
smallint
numeric(p,d) 定点数(p个数字,d是小数点右边数字个数)
float
create table(
primary key (course_id,sex_id),
foreign key (dept_name) references tabke_name(dept_name)
);
delete from table_name where ;
drop table table_name
ALTER TABLE 【表名】 ADD 【列名】 【类型】
ALTER TABLE 【表名】 DROP 【列名】
ALTER TABLE 【表名】 CHANGE 【列名】【新名】
alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
ALTER TABLE tbl_name rename new_tbl_name;
all
:不去重distinc
:去重natural join
运算 | 名称 |
---|---|
union | 并集 |
intersect | 交集 |
expect | 减去 |
all
some
< >是不等于的意思
< >ALL 与所有都不相等 那么与NOT IN的意思相同
< >SOME 与部分不相等
= SOME 与部分相等
= ALL 与全部相等
exists
unique
:是否存在重复元组,没有就是truewith as
用法with [表名](属性名字,属性名字) as (
# 查询的结果
)
update
用法update [表名] set [列名]=[值]
where 条件
case
用法case
when pred1 then result1
when pred2 then result2
else result0
end
view
的使用create view [名字] as select
#条件
;
not null
unique
:放在属性后面check
:放在属性后面,括号里面加入条件date
: ‘2001-04-25’time
: ‘09:30:00’timestamp
:‘2001-04-25 09:30:00’create index Student_index on student(ID);
grant [权限列表‘select,delete,*,...(update 后面可加([属性名]))’]
on [表名或者视图]
to [角色]
revoke [权限列表‘select,delete,*,...’]
on [表名或者视图]
from [角色]
create role [角色名]
grant [角色名] to [角色名]
grant [权限列表] on [表名] to [角色名] with grant option #表示允许该角色将权限授权给其他角色
create function 函数名([<参数1><类型1>[,<参数2><类型2>...]])
returns 数据类型
begin
sql语句;
return 值;
end
create procedure 名称(in [<参数1><类型1>[,<参数2><类型2>...], out [<参数1><类型1>[,<参数2><类型2>...]])
begin
sql语句;
end
while
and repeat
while 布尔表达式 do
语句序列 ;
end while
repeat 语句序列;
until 布尔表达式
end repeat
if
if 布尔表达式
then 语句序列 ;
elseif 语句序列 ;
else 语句序列 ;
end if
CREATE TRIGGER trigger_name
trigger_time(after,before)
([update,delete,insert] of [表名]) trigger_event ON tbl_name
(referencing new row as nrow,old row as orow )
FOR EACH ROW
trigger_stmt
并。计算两个关系在集合理论上的并集,即给出关系R和S(两者有相同元/列数),R∪S的元组包括R和S所有元组的集合,形式定义如下:
式中 t是元组变量(下同)。显然,R∪S=S∪R。
差。计算两个关系的区别的集合,即给出关系R和S(两者有相同元/列数),R-S的元组包
括R中有而S中没有的元组的集合,形式定义如下:
通俗点说,就是属于R但是属于S的元素。
交。计算两个关系集合理论上的交集,即给出关系R和S(两者有相同元/列数),R∩S的元组包括R和S相同元组的集合,形式定义如下:
显然,R∩S=R-(R-S)和R∩S=S-(S-R)成立。
笛卡尔积。计算两个关系的笛卡尔乘积,令R为有m元的关系,S为有n元的关系,则R×S是m+n元的元组的集合,其前m个元素来自R的一个元组,而后n个元素来自S的一个元组。形成定义如下:
若R有u个元组,S有v个元组,则R×S有u×v个元组。
要记住笛卡尔积的数量是两者的乘积即可,相当于两者排列组合。
(5)投影。从一个关系中抽取指明的属性(列)。令R为一个包含属性A的关系,则
(6)θ连接。θ连接从两个关系的笛卡儿积中选取属性之间满足一定条件的元组,记作:
其中A和B分别为R和S上元数相等且可比的属性组。θ为“=”的连接,称为等值连接,记作:
如果两个关系中进行比较的分量必须是相同的属性组,并且在结果中将重复的属性去掉,则称为自然连接,记作:
我们主要避免一下两个问题
冗余
: 出现重复信息不完整
:对关系处理的不完整原子性
:事务所有操作要么全部正确反映,要么完全不反映,即不允许事务部分地完成
保证原子性由恢复控制子系统处理
一致性
:即事务对数据库的作用应使数据库从一个一致状态转变到另外一个一致状态。
完整性约束以及编写事务的应用程序员负责
隔离性
:即多个事务并发执行时,应像各个事务单独执行一样,互不干扰
保证隔离性由并发控制子系统处理
持久性
:即一个事务成功执行之后,对数据库的影响应该是永久的,即使数据库故障或被破坏,DBMS也应该能够恢复
保证原子性由恢复控制子系统处理
当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题——最后的更新覆盖了其他事务所做的更新。例如,两个编辑人员制作了同一文档的电子副本。每个编辑人员独立地更改其副本,然后保存更改后的副本,这样就覆盖了原始文档。最后保存其更改保存其更改副本的编辑人员覆盖另一个编辑人员所做的修改。如果在一个编辑人员完成并提交事务之前,另一个编辑人员不能访问同一文件,则可避免此问题
其实有排它锁和共享锁就足够了为什么还需要有意向锁,这里举一个比较形象的例子:
在mysql中有表锁,读锁锁表,会阻塞其他事务修改表数据。写锁锁表,会阻塞其他事务读和写。
数据库要怎么判断这个冲突呢?
注意step2,这样的判断方法效率实在不高,因为需要遍历整个表。于是就有了意向锁。在意向锁存在的情况下,事务A必须先申请表的意向共享锁,成功后再申请一行的行锁。
在意向锁存在的情况下,上面的判断可以改成
注意:申请意向锁的动作是数据库完成的,就是说,事务A申请一行的行锁的时候,数据库会自动先开始申请表的意向锁,不需要我们程序员使用代码来申请。
当前锁模式/是否兼容/请求锁模式 | X | IX | S | IS |
---|---|---|---|---|
X | 冲突 | 冲突 | 冲突 | 冲突 |
IX | 冲突 | 兼容 | 冲突 | 兼容 |
S | 冲突 | 冲突 | 兼容 | 兼容 |
IS | 冲突 | 兼容 | 兼容 | 兼容 |
如果一个事务请求的锁模式与当前的锁兼容,InnoDB就请求的锁授予该事务;反之,如果两者两者不兼容,该事务就要等待锁释放。
意向锁是InnoDB自动加的,不需用户干预。对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及的数据集加排他锁(X);对于普通SELECT语句,InnoDB会自动给涉及数据集加共享锁(S);
两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)。
读操作
之前要申请并获得S锁,在进行写操作
之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。
2.
事务提交后就不能回滚了
数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作是扩充功能
在设计分 E-R 图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计的,所以各个分 E-R 图之间难 免有不一致的地方,这些冲突主要有属性冲突 、命名冲突、结构冲突三类。
- 属性冲突:属性值的类型、取值范围或者取值集合的不同
- 结构冲突:包括同一个对象在不同应用中的不同抽象
- 命名冲突:包括属性名,实体名,联系民之间的冲突
在关系数据库的规范化理论中,执行“模式分解”时,必须遵守的两条规范化准则是:保持原有的函数依赖关系和具有无损连接性。
数据库系统在运行过程中,可能会发生故障。故障主要有数据库系统在运行过程中,可能会发生故障。故障(括号后为恢复方法)主要有**事务故障(事务撤销 UNDO)、系统故障(重做REDO)、计算机病毒、介质故障(数据转储 等级日志文件)**四类。
在数据恢复时,对尚未做完的事务要进行UNDO处理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。