数据库复习提纲

绪论部分

1、数据库的特点

   数据的结构化;高共享,低冗余和大容量;可靠性高;安全;数据独立;

2、三层模式结构

   内模式,也称物理模式,它描述了数据存储的物理结构和组织方式,是数据在数据库内部的表示方式。

   逻辑模式:描述数据库中全体数据的逻辑结构,是所有用户的公共数据视图。

   外模式:也称子模式,它描述了一个数据库用户所能看到的局部数据的逻辑结构。通常是逻辑模式的一个子集。

3、两层映像

   逻辑模式和物理模式映像,它定义了逻辑模式与存储结构之间的对应关系,例如记录和列是如何在磁盘上表示的。

   外模式和逻辑模式映像,定义了外模式和逻辑模式之间的对应关系,用户在操作时对外模式的访问自动转化为对逻辑模式的访问。

关系数据模型

1、元组:就是数据库中一行

   域:就是数据库中的一列。

   属性:数据库每个列的名字。

   超键:若关系中某些属性组合起来能够唯一确定关系中的一个元组,则称该属性集合为关系的一个超键,通俗的解释就是:属性结合能够确定数据库的一行,即是超键。一个关系至少有一个超键即所有属性的集合。

   候选键:特殊的超键,它的真子集都不构成超键,即称作候选键,就是把候选键给拆了,它的真子集不能确定一个元组。一个关系至少有一个候选键。

   主键:从关系的候选键中挑选一个作为关系的主键,键包含的属性为主属性。在关系的定义中,主属性用下划线表示,这个在E-R图转换为关系模式不要忘记了。

2、关系的性质

   列是同质的;列只能取原子值;不能有相同的元组;行的顺序无关。

3、实体完整性

   实体完整性要求对于任何一个关系,的构成主键的属性值惟一并且不能为空。

4、参照完整性

   要求一个关系含有外键,则构成外键的属性值要么指向被引用表的某一个主键的值,要么全部为空。

5、关系代数

   投影:就是我们通常的进行select操作时需要选择的列。

         

   选择:就是我们做选择等操作的where的条件

         

   重命名:这个就相当于我们平时的as操作 

   

   连接:自然连接,先进行笛卡尔积然后再根据连接条件进行选择

         左外连接:左外连接不仅包含自然连接的结果,而且左边关系中存在的属性而右边不存在的属性也被包含进来。

         右外连接:右外连接不仅包含自然连接的结果,而且右边关系中存在的属性而←边不存在的属性也被包含进来。

         全外连接:全外连接是左外连接和右外连接的并集。

关系数据库语言

1、数据定义语言DDL

   create table, drop table, create view, create index

   建表举例

   create table branch
(branch-name char(15),  
 branch-city char(30),
 assets integer,
 employee-number smallint,
 primary key (branch-name), // 多个主键中间用,分隔
 check (assets >= 0))    //  约束条件

   create table account
(account-number char(10) primary key,  // 主键
 branch-name  char(15) not null, // 非空的约束
 balance float,
 type char(8),
 foreign key (branch-name) references branch, // 外键的引用
 check (type in (SavingChecking’ ))  // 约束

   表结构修改举例

   Alter table book add pos varchar(20) // book表新增一列 pos 

   Alter table book alter title varchar(200) // 修改book表的title列的长度为200个字符

   Alter table book add constraint c1 check (year > 2000) // 新增约束 校验year是否大于2000

  

   建立索引:

   Creat index idx_book on book( title desc) // book表的title字段建立索引 倒序方式

   

   建立视图

   create view branch-total-loan (branch-name, total-loan) as
   select branch-name, sum(amount)
   from loan
   group by branch-name

         

   视图的作用

   视图能够简化用户的操作

   视图能使用户以多种角度看待同一数据

   提供了逻辑独立性

   对机密数据提供安全保护

2、数据操纵语言DML

   select, insert, update, delete 注意集合操作的使用 尤其是题目中说最大 最小 某一的时候

   例子1

   找出所有的支行名称,这些分支点的资产大于某个在Brooklyn 城市的支行的资产,显示结果以支行名称的升序排列
   表:branch (branch-name, branch-city, assets) 
   方法一:select distinct T.branch-name
           from branch as T, branch as S
       where T.assets > S.assets and S.branch-city = Brooklyn
           order by T.branch-name

   方法二:select branch-name from branch
           where assets > some (select assets from branch
               where branch-city = Brooklyn)
           order by branch-name

   例子2   

   找出所有资产大于平均资产的支行名称

   select branch-name
   from branch
   where assets > (select avg(assets) from branch)

   例子3:

   找出至少有5个资产大于100万分支点的城市

   select branch-city
   from branch
   where assets >1000000
   group by branch-city
   having count(branch-name)>=5

   例子4

   删除所有Brooklyn城市的帐号

   account (account-number, branch-name, balance)
   branch (branch-name, branch-city, assets)

   

   delete from account
   where branch-name in (select branch-name
from branch
where branch-city=Brooklyn)

   例子5

   给所有余额大于平均余额的帐号增加5%的利息

   account (account-number, branch-name, balance)
   

   update account
   set balance = balance *1.05 
   where balance > (select avg(balance)  from account)

   例子6

   设销售数据模型如下: 

   厂家 SNOSNAMECITY ) 

   产品 PNOPNAMECOLORWEIGHT) 

   工程 J  JNOJNAMECITY) 

   销售 SPJ SNOPNOJNOQTY) 

   1) 用SQL完成查询:与“长风”在同一城市的厂家名;

   Select sname from S where city = (select city form s where sname= '长风')

   

   2)用SQL完成查询:至少使用P1,P2两种产品的工程名

   Select  pname from p

   Where pno in (select pno from p where pname = 'P1')

   And pno in (select pno from p where pname = 'P2')

   3) 设有职工基本表:EMP(ENO,ENAME,AGE,SEX,SALARY),其属性分别表示职工号、姓名、年龄、性别、工资。为每个工资低于1000元的女职工加薪200元,试写出这个操作的SQL语句

   Update EMP set salary = salary + 300 

   Where sex = '' and salary < 1000

   4) 设有职工基本表:EMP(ENO,ENAME,AGE,SEX,SALARY,DNO),其属性分别表示职工号、姓名、年龄、性别、工资,所在车间的编号。试写一个断言(断言名为ASSE4),要求每个车间女职工人数不少于20人。

   create assertion ASSE4 check 

   (20 >=  ALL( select count(eno) from EMP where sex = '

           Group by DNO))

   例子7

   PPT 42页上的例题,我觉得这个题最像考试题,不过题目的答案好像不是很准确

 3、嵌入式sql如何与宿主语言通信?

   一种是使用SQLCASQLDA结构,其中最常用的是使用SQLCAsqlcode变量。

   另一种是通过主变量的方式来实现宿主语言和sql的数据流动。

  关系规范化

1、不好的数据库模式设计存在的问题

   信息冗余和更新复杂

   插入异常

   删除异常

2、1NF:数据库中每一列都是不可再分的数据项,同一列中不能有多个值,不能说以列中是姓名和年龄。

   2NF:要求实体属性完全依赖于关键字,如果存在非主属性部分依赖于关键字,应该把这个非主属性和所依赖的关键字单独出来,形成一个新的关系。比如AB是关键字,然而

B-->C,即C部分函数依赖了B,存在部分函数依赖。

   3NF:不存在传递函数依赖的2NF就是3NF,所谓传递依赖:A-->B, B-->C既不是。

   BCNF如果关系模式RUF)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF 如果存在非主属性决定主属性则不是BCNF,比如:ABC是关键字, D-->A 则不是BCNF,还有这样的情况也不是BCNF

A-->B ,B-->A。 

   这块多做几个题目应该就ok了。

数据库保护

1、死锁的处理方法

   1)死锁预防

    一次封锁法

    顺序封锁法

   2)死锁检测与恢复

    超时法

    等待图法,该图由G=(VE)组成,顶点集V由系统中所有的事务组成,边集E的每一个元素是一个有序对Ti ®Tj ,表示事务Ti在等待Tj释放所需的锁。当且仅当等待图中包含环时,系统中存在死锁。

   3)死锁恢复

    选择牺牲者

    回滚

   防止饿死

2、数据库的故障类型 

   1)事务故障

       逻辑错误

系统错误

   2)系统崩溃:如突然停电、硬件故障、软件错误等引起系统崩溃

故障停止假设:当系统崩溃时非易失存储器内容不被破坏

   3)介质故障 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值