数据库的一些概念

触发器(trigger):
是个特殊的存储过程,
它的执行不是由程序调用,也不是手工启动,
而是由个事件来触发,比如当对一个表进行操作(insert,delete,update)
时就会激活它执行。


数据库视图:
视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,
不存放视图对应的数据。 
作用:
     简单性:看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。
         那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。 
    安全性:通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。
        数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。
       通过视图,用户可以被限制在数据的不同子集上

l范式

在关系数据库中的一个非常重要的问题就是如何评价分解后的各个关系模式的好坏。通常可以通过判断分解后的模式达到几范式来评价模式的好坏。范式有:1NF2NF3NFBCNF4NF5NF。这几种范式之间的关系如下: 1NF2NF3NFBCNF4NF5NF

通过模式分解,将低一级范式的关系模式分解成了若干个高一级范式的关系模式的集合,这种过程叫做规范化。下面将给出各个范式的定义。 

11NF(第一范式)

    定义  若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)

 22NF(第二范式)

    定义  若关系模式R1NF,且每一个非主属性完全依赖于码,则关系模式R2NF

               即当1NF消除了非主属性对码的部分函数依赖,则成为 2NF

          例  FIRST关系中的码是SnoPno,而SnoStatus,因此非主属性Status部分函数依赖于码,故非2NF的。

              若此时,将FIRST关系分解为:

                     FIRSTl(SnoSnameStatusCity)2NF

                            FIRST2(SnoPnoQty)  2NF

              因为FIRSTlFIRST2中的码分别为SnoSnoPno每一个非主属性完全依赖于码。

33NF(第三范式)

        定义  若关系模式R(UF)中不存在这样的码X,属性组Y及非主属性Z(ZY)使得XY(YX)YZ成立,则关系模式R3NF

               即当2NF消除了非主属性对码的传递函数依赖,则成为3NF。 

              例  FIRSTl3NF,因为在分解后的关系模式FIRSTl中有:

              SnoStatusStatusCity,存在着非主属性City传递依赖于码Sno。   

 4BCNF(巴克斯范式);   

        定义  若关系模式R1NF,若XYYX时,X必含有码,则关系模式RBCNF

                  即当3NF消除了主属性对码的部分和传递函数依赖,则成为 BCNF

                 结论  一个满足BCNF的关系模式,应有如下性质:

               (1)所有非主属性对每一个码都是完全函数依赖;

               (2)所有非主属性对每一个不包含它的码,也是完全函数依赖;

               (3)没有任何属性完全函数依赖于非码的任何一组属性。

         学生(学生号,学生姓名,姓别,班级,…,家长姓名,家长电话,家庭住址)

         学生姓名,家长姓名->家长电话,家庭住址



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

笛卡尔积:给定一组域D1D2...Dn,这些域中可以是相同的域。D1D2,…,Dn的笛卡尔积为D1×D2×…×Dn={(d1d2,…,dn) | diDi}

元组:笛卡尔积中的每一个元素。

分量:元组中的每一个值。

关系:笛卡尔积的有限子集。

候选码:关系中能够唯一的标识一个元组的某一组属性的值。

主码:关系中所有候选码中的一个。

主属性:候选码的诸属性。

非主属性:也称非码属性,不包含在任何候选码中的属性。

全码:关系模式的所有属性都是这个关系模式的候选码。

实体完整性:若属性A是基本关系R的主属性,则A不能取空。

参照完整性:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中的每个元组在F上的值必须为S中某个元组的主码值,否则为空。

用户自定义完整性:针对某一具体关系数据库的约束条件,反应某一具体应用所涉及的数据必须满足的语义要求。

自身连接:select first.cn, second.cpno from course first, course second where first.cpno=second.cno;

外连接:select * from student left out join sc on (student.sno=sc.sno);

相关嵌套查询:找出每个学生超过他选修课平均成绩的课程号:select sno, cno from sc x where grade > (select avg(grade) from sc y where x.sno=y.sno);

集合查询:union, intersect, except

建立视图:create view transcript as select student.sno, sname, grade from student, sc where student.sno=sc.sno and student.sdept='IS' with check option; with check option指在对视图update, insert, delete时要检查是否符合视图的定义。

视图的作用:视图能够简化用户的操作;视图使用户能以多种角度看待统一数据;视图对重构数据库提供了一定程度的逻辑独立性;视图能够对机密数据提供安全保护;适当的利用视图可以更清晰的表达查询。

 

用户自定义完整性:not nulluniquecheck子句,例如如果学生性别是男,则名字不能以Ms.开头。Check (sex='' or sname not like 'Ms.%')

完整性约束命名子句:create table student(sno int, sage int constraints c1 check(sage < 30), contraints skey primary key(sno)); alter table student drop constraints c1; alter table student add constraints c1 check(sage < 30);

触发器:用户定义在关系表上的一类事件驱动的特殊过程:create or replace trigger insert_or_update_sal before insert or update on employee for each row begin if (:new.position='professor') and (:new.salary < 4000) then :new.salary:=4000; end if; end;

 

 

事务:用户定义的一个数据库操作序列,这些操作要么全做,要么全部做,是一个不可分割的工作单位。

事务是数据库的逻辑工作单位,是恢复和并发控制的基本单位。

事务的特性:ACID。原子性:事务是数据库的逻辑工作单位;一致性:事务执行的结果是使数据库从一个一致性状态变到另一个一致性状态。隔离性:一个事务的执行不能被另一个事务干扰。持续性:一个事务一旦提交,它对数据库中数据的改变就应该是永久的。

 

活锁:即饥饿,采用先来先服务策略避免。

死锁预防:一次封锁法:要求每个事务必须一次将所有使用的数据全部加锁,否则就不能继续执行;顺序封锁法:预先对数据对象规定一个顺序,所有事务都按这个顺序实行封锁。

死锁诊断:超时法:一个事务等待时间超过规定的时限,就认为发生死锁;等待图法:有向图G=TU),T为节点,表示每一个正在运行的事务,U为有向边集合,表示事务等待情况,若T1等待T2,则T1T2有一条有向边,并发控制子系统周期性地生成事务等待图,检测事务,如果图中存在回路,则表示系统出现了死锁。

解除死锁:选择一个处理死锁代价最小的事务,将其撤销,释放此事务的所有的锁,使其他事务能继续运行下去。

两段锁协议:在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。两段锁协议时可串行化调度的充分条件。

意向锁:IS锁(意向共享锁):对数据项加S锁,先对其上级加IS锁。IX锁(意向排它锁):对数据项加X锁,对其上级加IX锁。SIX锁(共享意向排它锁):表示对数据项加S锁,再加IX锁。申请封锁时应该按自上而下的次序进行,释放锁应该按自下而上的次序进行,图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值