sql末考必过!

本文深入探讨了数据库的关键概念,包括主码、外码和用户约束的定义与使用,以及查询操作的实现。介绍了规范化理论,详细阐述了第一范式、第二范式和第三范式的转化过程。同时,讨论了数据库的主要功能,如数据独立性、安全性及完整性。此外,还分析了数据库故障的类型和恢复策略,并概述了数据库设计的完整流程。
摘要由CSDN通过智能技术生成

一、主码、外码、用户约束自定义10分

一共有5种约束,分别是主码PRIMARY KEY、独特UNIQUE、外码FOREIGN KEY、默认DEFAULT和检查CHECK。

例子用到pdf里的SPJ题的例子。

格式如下:

/*PRIMARY KEY*/
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (列名)
ALTER TABLE S ADD CONSTRAINT PK_SNO PRIMARY KEY (SNO)
ALTER TABLE SPJ ADD CONSTRAINT PK_SPJ PRIMARY KEY(SNO,PNO,JNO)

/*UNIQUE*/
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (列名)
ALTER TABLE SPJ ADD CONSTRAINT UK_ QTY(QTY)//这样供应情况表无法出现同供应数的行,不合适,仅做展示。 

/*FOREIGN KEY*/
ALTER TABLE 表名 ADD CONSTRAINT 约束名 
FOREIGN KEY (列名)REFERENCES 引用表名 (列名)

ALTER TABLE SPJ ADD CONSTRAINT FK_S FOREIGN KEY (SNO) REFERENCES S (SNO)

/*DEFAULT*/
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名
ALTER TABLE S ADD CONSTRAINT DF_CITY DEFAULT '郑州' FOR CITY
ALTER TABLE SPJ ADD CONSTRAINT DF_QTY DEFAULT 0 FOR QTY

/*CHECK */
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (逻辑表达式)
ALTER TABLE SPJ ADD CONSTRAINT CHK_QTY CHECK (QTY>=0)

二、查询30分

基本结构

SELECT 目标列名序列 //需要的列
	FROM 数据源 //需要的表
	WHERE 检索条件表达式 //条件
	GROUP BY 分组依据列 //分组
	HAVING 组提取条件 //挑选组
	ORDER BY 排序依据列 //排序

接下来看书搞。

三、规范化20分

需要知道的概念

Y=F(X),由X得唯一Y。相对的由学号、科目、考试轮次为X,得唯一成绩Y;由学号X对应唯一学生名Y;由城市X对应唯一省Y。都记为X→Y。
X和Y都可以是一个集,如果X有一个真子集X1→Y,则称Y部分函数依赖于X
如果没有X1→Y,则称Y完全函数依赖与X
如果有Z满足X→Y(Y不→X,Y不包含于X),Y→Z,则称Z传递函数依赖于X
候选码
一个属性U,可以对应一组关系模式属性全集R,即可为此属性全集的候选码。
主属性
包含在任意候选码中的属性都为主属性A,其他为非主属性a。
主码P
例:学生R(学生号UAP,身份证号UAP,性别a,年龄a,所在系a)
选课(学号UAP,课号UAP,考试次数UAP,成绩a),一个学生一门课可以有多次考试,一次考试一个成绩。

范式
  • 第一范式:
    不包含非原子项属性。
    分解方法:拆分属性为原子项属性。
  • 第二范式:
    所有非主属性都完全依赖主属性。
    分解方法:
  1. 用组成主码的属性集合每个子集构成一个关系模式
  2. 将依赖这些主码的属性放置到对应关系模式
  3. 最后去掉只由主码的子集构成的关系模式
  • 第三范式:
    所有非主属性都不传递依赖主码
    分解方法:
  1. 对不是候选码的被依赖属性,从关系中删除依赖这些属性的属性
  2. 新建一个关系模式,这个关系模式包含之前删除的属性以及被依赖属性
  3. 被依赖属性作为新关系模式的主码

SLC表(学生号,学生名,性别,所在系,所在楼,课程号,课程成绩)每个系学生住在同一个楼。

SLC为第一范式,即SLC∈1NF
∵SLC中学生号和课程号为主码,学生号→学生名。
∴SLC为第一范式。
转变为第二范式,拆分子集。
S(学生号,学生名,性别,所在系,所在楼)
SC(学生号,课程号,课程成绩)
C(课程号)
删去只由主码的子集构成的关系模式,此时所有非主属性都完全依赖主属性,所有表∈1NF。
∵学生号→所在系,所在系→所在楼
所以S∈2NF。
转变为第三范式。
S(学生号,学生名,性别,所在系)
所在系(所在系(系),所在楼(楼))
SC中无传递函数依赖,SC∈3NF。
分解完毕,一般分解到3NF即可。

四、关系数据库的主要功能?

相互关联的数据集合,在文件管理方法中,文件是分散的,而在数据库系统中可以集中控制、维护和管理有关数据。
减少的数据冗余,通过关系规范化理论实现。
程序与数据相互独立,包括数据的物理独立性和逻辑独立性。
保证数据的安全和可靠,通过数据库管理系统的备份和恢复机制实现。
最大限度保证数据的正确性(完整性),通过建立保证数据正确的约束实现。
数据共享并能保证数据的一致性。

五、什么是视图,视图有什么用?

视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,是基本表的部分行和列的数据的组合。
简化数据查询语句;使用户能从多角度看待同一数据;提高了数据的安全性;提供了一定程度的逻辑独立性。

六、数据库故障的种类有几种?如何恢复?10分

三种。事务内部的故障;系统故障、其他故障。
事务故障的恢复:事务故障是指事务在运行到正常结束前被终止,这时恢复子系统可以利用日志文件撤销此事务对数据库已进行的修改。由系统自动完成,对用户透明,步骤如下:反向扫描日志文件并执行相应操作的逆操作,直至读到此事务开始标记,恢复完成。
系统故障的恢复:系统故障造成数据库不一致状态有两个,一个是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库更新可能还留在数据缓存区未写入数据库。因此恢复系统故障就是撤销故障发生时未完成的事务,重做已完成事务:正向扫描日志文件,找出故障发生前的已提交的事务,重做;找出故障发生时未完成的事务,撤销。
介质故障的恢复:此时磁盘上的物理数据和日志文件均遭到破坏,是最严重的一种故障。恢复方法是首先重装数据库,是数据库管理系统能正常运行,然后利用介质损坏前对数据库已做的备份或利用镜像设备恢复数据库。

七、数据库设计(猜测是分析题)

步骤:

  • 需求分析
    是整个数据库设计中最重要的一步,是其他各步骤的基础。明确用户对系统的需求:包括数据、功能和性能的需求。
  • 概念结构设计
    主要是用E-R图的形式。作用:将需求分析得到的用户需求抽象为信息结构。
  • 逻辑结构设计
    将E-R图转换成表,导出特定的DBMS可以处理的数据库逻辑结构。
  • 物理结构设计
    为逻辑结构设计选取一个最适合应用环境的数据库物理结构。
  • 数据库的行为设计
    设计数据库所包含功能、功能间的关联关系和一些功能的完整性要求。
  • 数据库实施
    运用DBMS提供的数据语言以及数据库开发工具,根据结构设计和行为设计建立数据库,编制应用程序,组织数据入库并进行试运行。
  • 数据库运行和维护阶段
    将试运行数据库应用系统投入正式使用,在DBMS使用过程中不断进行调整、修改和完善,使其能够获得更好的性能。

八、并发操作会产生哪几种数据不一致的情况?如何避免这种数据不一致的情况?

并发操作带来的数据不一致性包括三类:丢失修改、不可重复读(其中包括产生幽灵数据)和读 “脏”数据。 我们可以通过封锁机制避免各种不一致的情况。

X锁为排它锁,对其他事务X锁文件不可被读不可被写。
S锁为共享锁,,对其他事务S锁文件可读不可写。
一级封锁协议:对事务要修改的文件全程加X锁,可避免丢失修改。丢失修改,即,回写修改数据被覆盖,破坏数据的一致性。
二级封锁协议:一级封锁协议上,对事务要读取文件加S锁,读完释放,在一级封锁协议上,可避免读脏数据。读脏数据,即,其他事务对数据操作回滚,本事务读取了回滚前的错误数据。
三级封锁协议:一级封锁协议上,对事务要读取文件全程加S锁。在二级封锁协议上可避免不可重复读。不可重复读,即,本事务首次读数据后,其他事务对此数据进行修改,本事务再次读此数据,取得结果会不同的问题。

九、数据库管理系统以及它有哪些主要功能?(DBMS的主要功能,主流的DBMS软件)

(1)DBMS是一个专门用于实现对数据进行管理和维护的系统软件。
(2)主要功能:
数据库的建立与维护;
数据定义功能;
数据组织、存储和管理功能;
数据操作功能;
事务的管理和运行功能;
与其他软件的通信功能。
(3)主流的DBMS:MS SQL Server、DB2、Oracle、Access、mySQL

2、数据库系统的组成:由数据库、数据库管理系统、应用程序、数据库管理员组成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值