数据库作业备份

习题4

5、对下列两个关系模式:

学生(学号,姓名,年龄,性别,家庭住址,班级号)

班级(班级号,班级名,班主任,班长,)

请用SQL的GRANT语句完成下列授权功能:

  1. 授予用户U1对两个表的所有权限,并可给其他用户授权。
  2. 授予用户U2对“学生”表具有查看权限,对“家庭住址“具有更新权限。
  3. 将角色R1授予用户U1,并且U1可继续授权给其他角色。

答:

1、GRANT ALL PRIVILEGES ON 学生, 班级 TO U1 WITH GRANT OPTION;

2、GRANT SELECT ON 学生 TO U2;

   GRANT UPDATE (家庭住址) ON 学生 TO U2;

  1. GRANT R1 TO U1 WITH ADMIN OPTION;

习题5

  1. 数据库的完整性概念与数据库的安全性概念有什么区分和联系?

答:

区别:

1、完整性是指数据的准确性、有效性和一致性,它关注的是数据的内容和约束,例如实体间的关系、数据类型、唯一性约束等。

2、安全性则是指保护数据不被未经授权的用户或应用程序访问、修改或删除,它关注的是数据的访问控制和保密性,例如用户的身份验证、权限管理、加密等。

联系:

1、数据库的安全性是实现完整性的前提。只有通过严格的访问控制保护好数据,才能防止恶意攻击、不当使用或意外数据操作对数据完整性造成的损害。

2、相反地,数据的完整性也有助于数据库的安全性。如果数据的约束和关系被明确定义和正确应用,就能减少数据中不一致或不准确的情况,从而减少了安全风险。

6、假设有下面两个关系模式:

职工(职工号,姓名,出生日期,职务,工资,部门号)

部门(部门号,名称,经理名称,电话)

用SQL定义这两个关系模式,要求在模式中完成以下完整性约束的定义:

  1. 定义每个模式的主码
  2. 定义参照完整性约束
  3. 定义职工年龄不超过65

CREATE TABLE 职工 (

  职工号 INT PRIMARY KEY,

  姓名 VARCHAR(20),

  出生日期 DATE,

  职务 VARCHAR(20),

  工资 DECIMAL(10,2),

  部门号 INT,

  CONSTRAINT ck_职工_年龄 CHECK (DATEDIFF(year,出生日期,GETDATE())<=65)

);

CREATE TABLE 部门 (

  部门号 INT PRIMARY KEY,

  名称 VARCHAR(20),

  经理名称 VARCHAR(20),

  电话 VARCHAR(20)

);

ALTER TABLE 职工

ADD CONSTRAINT fk_职工_部门号

FOREIGN KEY (部门号) REFERENCES 部门(部门号);

7、在关系数据库管理系统中,当操作违反实体完整性、参照完整性和用户定义完整性约束时,一般都是如何分别进行处理的?

答:

1、实体完整性违反处理:

实体完整性是指每个实体必须具有一个唯一的标识,通常通过主键来实现。如果插入或更新操作违反了实体完整性约束,数据库管理系统通常会抛出错误并拒绝该操作。例如,如果试图向一个带有主键的表中插入重复的主键值,数据库会报错并拒绝插入操作。

2、参照完整性违反处理:

参照完整性是指表之间的关系必须是有效的,通常通过外键和主键的关联来实现。如果插入、更新或删除操作违反了参照完整性约束,数据库管理系统一般有以下处理方式:

- 插入和更新:如果插入或更新操作违反了参照完整性约束,数据库通常会拒绝操作并抛出错误。例如,如果试图向外键列插入一个在主键列中不存在的值,数据库会报错并拒绝操作。

- 删除:如果删除操作违反了参照完整性约束,数据库管理系统通常有以下处理方式:

   - 级联删除(CASCADE):级联删除会连同相关的外键记录一起删除。例如,如果删除一个部门表中的某个部门,级联删除会同时删除该部门下所有职工的记录。

   - 设置空值(SET NULL):设置空值会将外键值设置为NULL。例如,如果删除一个部门表中的某个部门,设置空值会将职工表中相应的部门外键设置为NULL。

   - 设置默认值(SET DEFAULT):设置默认值会将外键值设置为默认值。例如,如果删除一个部门表中的某个部门,设置默认值会将职工表中相应的部门外键设置为默认值。

   - 禁止删除(NO ACTION/RESTRICT):禁止删除会拒绝删除操作并抛出错误。这是最严格的处理方式,要求先解除外键约束后才能执行删除操作。

3、用户定义完整性违反处理:

用户定义完整性是指用户自定义的约束条件,例如检查数据范围、格式等。当插入、更新或删除操作违反了用户定义完整性约束时,数据库管理系统通常会拒绝操作并抛出错误。处理方式类似于实体完整性违反处理,数据库会报错并拒绝操作。

习题6

4、给定关系模式R(U,F),其中U={A,B,C,D,E} ,请回答如下问题:

如果存在函数依赖B->D, DE->C, EC->B, 列出R中所有的码并给出主属性、非主属性。

答:

{ (ABE), (ACE), (ADE) }

主属性:ABCDE

非主属性: 无

7、下面的结论哪些是正确的?哪些是错误的?对于错误的结论请给出理由或一个反例说明

1、任何一个二目关系是属于3NF的

2、任何一个二目关系是属于BCNF的

3、任何一个二目关系是属于4NF的

4、若R.A->R.B, R.B->R.C, 则R.A->R.C

答:

  1. 正确
  2. 正确
  3. 正确
  4. 正确

习题7

1、试述数据库设计过程。

答:

1、需求分析

2、概念结构设计

3、逻辑结构设计

4、物理结构设计

5、数据库实施

6、数据库运行维护

8、某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用E-R图画出此工厂产品、零件、材料、仓库的概念模型。

  1. 规范化理论对数据库设计有什么指导意义?

答:

1. 数据结构优化:规范化理论帮助设计者更好地组织数据结构,以减少数据冗余和提高数据存储效率。通过将数据分解为更小的关系,使得每个关系都包含一个单一的主题或实体类型,有利于提高数据的存储效率和查询性能。

2. 数据完整性保证:规范化理论有助于保证数据库的数据完整性。通过遵循规范化原则,可以减少数据冗余和不一致性,避免数据更新异常,并确保数据的一致性和准确性。

3. 减少更新异常:规范化通过将数据分解成更小的关系,减少了数据冗余,从而减少了因更新引起的异常,如插入异常、删除异常和修改异常。

4. 灵活性和可扩展性:规范化可以提高数据库的灵活性和可扩展性。通过将数据分解成更小的关系,使得数据库结构更加灵活,更容易进行扩展和修改,适应不同的需求变化。

5. 索引性能优化:规范化有助于提高数据库的索引性能。通过更小的关系,可以更容易地设计有效的索引,提高数据检索的效率。

习题11

  1. 试述事务的概念及事务的4个特性。数据库恢复技术能保证事务的哪些特性?

答:

1. 原子性:事务是一个不可分割的工作单位,要么全部执行,要么全部不执行。在事务执行期间,如果发生错误或故障,数据库系统会将数据恢复到事务执行前的状态,从而保证事务的原子性。

2. 一致性:事务的执行使得数据库从一个一致的状态转换到另一个一致的状态。即使在发生了错误或故障时,数据库也会经过恢复操作,将数据恢复到一个一致的状态。

3. 隔离性:数据库允许多个事务同时对数据进行操作,但要求在每个事务彼此隔离的环境下执行,以防止不同事务之间相互干扰。数据库恢复技术能够保证事务的隔离性,即使多个事务并发执行,也不会相互影响。

4. 持久性:一旦事务提交,其所做的修改就会永久保存在数据库中,并且对其他事务是可见的。数据库恢复技术能够保证事务的持久性,即使发生故障,已提交的事务对数据库的修改也将被永久保存。

数据库恢复技术能够保证事务的原子性、一致性和持久性这三个特性。当发生故障时,数据库系统可以利用事务日志、备份和恢复等技术手段,将数据库恢复到一个一致且持久的状态,从而保证了事务的这些特性。至于事务的隔离性,数据库系统通常通过实现事务隔离级别(如读未提交、读已提交、可重复读、串行化)来实现,以保证并发执行的事务不会相互干扰。

  1. 登记日志文件时为什么必须先写日志文件,后写数据库?

原因:

1. 事务持久性:当系统执行更新操作时,首先将操作的细节记录到日志文件中,然后再将数据写入数据库。这样做的原因是为了保证即使在写入数据库之前发生系统崩溃或故障,对应的操作仍然能够通过日志文件进行恢复。通过日志文件记录事务对数据库的修改,在系统崩溃后可以根据日志文件的内容重新应用事务操作,从而实现了事务的持久性。

2. 日志记录顺序:通过先写日志文件后写数据库的顺序,可以保证操作的顺序一致性,即数据库中的实际数据修改和事务日志中的记录是一致的。这有助于保持事务的一致性,防止出现数据不一致的情况。

3. 减少性能损失:写入日志文件通常比写入数据库更快速,因为日志文件通常是顺序写入的,而数据库的写入可能涉及随机访问和索引更新。因此,先写日志文件后写数据库可以降低系统性能损失,提高系统的整体性能。

  1. 什么是数据库镜像?它有什么用途?

答:

数据库镜像是指将一个数据库的内容完全复制到另一个独立的数据库服务器上,从而实现对数据的备份、灾难恢复以及提高数据库性能和可用性的目的。

数据库镜像的用途:

1. 数据备份:数据库镜像可以作为主数据库的一个备份,确保在主数据库下线或数据丢失时可以迅速恢复,保证数据的安全性。

2. 提高性能和可用性:数据库镜像可以供应用程序访问,提高应用程序的性能和可用性。当主数据库出现故障或者网络阻塞导致无法访问时,镜像便成为了主数据库,维持应用程序的正常运行。

3. 实时同步:数据库镜像可以实时地将主数据库的数据复制到副本数据库,保证数据的一致性和完整性。这种同步策略比定期数据备份更能及时响应用户的数据需求。

4. 减轻主数据库的压力:镜像可以作为主数据库的备份,可以承受更轻的负载,从而减轻了主数据库的负担。

习题12

  1. 在数据库中为什么要采用并发控制?并发控制技术能保证事务的哪些特性?

答:

数据库中采用并发控制的主要原因是为了允许多个用户或进程同时对数据库进行操作,提高数据库系统的并发性能和资源利用率。通过并发控制技术,数据库系统可以有效地管理并发执行的事务,避免事务之间的干扰和冲突,确保数据库的一致性和完整性。

并发控制技术通过锁机制、多版本控制、事务调度和恢复机制等手段,可以有效地保证事务的一致性、隔离性、原子性和持久性,从而确保数据库系统在并发执行的情况下仍能够维持数据的完整性和一致性。

  1. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况

答:

1. 脏读:一个事务在读取了另一个事务尚未提交的数据之后,又由于某种原因(如事务回滚)撤销了对该数据的修改,导致读取到的数据无效。

2. 不可重复读:在一个事务内,由于其他事务的修改导致多次读取同一数据时得到的结果不一致。这可能是由于其他事务的提交或回滚对读取结果产生影响。

3. 幻读:在一个事务内,由于其他事务的插入或删除操作导致多次扫描得到的结果不一致。即使使用相同的查询条件,结果集的行数也会发生变化。

为避免这些不一致的情况,可以采用以下几种方法:

1. 锁机制:通过使用锁来控制对数据的并发访问,可以有效避免脏读和不可重复读。例如,排他锁可以确保在某个事务对数据进行修改时,其他事务无法对相同数据进行读取或修改。

2. 事务隔离级别:通过设置事务隔离级别(如读未提交、读已提交、可重复读、串行化),数据库系统可以提供不同级别的并发控制,以避免脏读、不可重复读和幻读。

3. 多版本并发控制:对于读操作和写操作采取多版本管理方式,每个事务在读取数据时可以看到自己版本的数据,从而避免不可重复读和幻读。

4. 乐观并发控制:在事务提交时进行冲突检测,如果发现数据已经被其他事务修改,则回滚当前事务,以避免脏读、不可重复读和幻读。

  1. 什么是封锁?基本的封锁类型有几种?试述它们的含义。

答:

封锁是数据库管理系统中用于控制并发访问的一种机制,通过对数据资源加锁来确保事务之间的隔离和并发安全。当一个事务对某些数据资源进行了锁定之后,其他事务需要对相同的数据资源进行操作时,必须等待该锁被释放,从而保证事务的隔离性和一致性。

基本的封锁类型通常包括以下几种:

1. 共享锁:共享锁允许事务对数据资源进行读取操作,不会阻塞其他事务获取相同数据资源的共享锁,从而实现多个事务并发读取相同数据的目的。共享锁不允许对数据资源进行写操作,以确保数据的一致性。

2. 排他锁:排他锁(也称为独占锁)则用于防止其他事务对数据资源进行读取或写入操作,只有持有排他锁的事务才能对数据资源进行写操作。排他锁确保了事务的原子性和隔离性,因为在一个事务对数据资源进行修改时,其他事务无法读取或修改该数据资源。

3. 更新锁:更新锁是一种介于共享锁和排他锁之间的锁类型,它允许事务对数据资源进行读取操作,但其他事务无法同时对相同的数据资源进行修改。更新锁可以避免不可重复读的问题,但允许多个事务并发读取相同的数据。

11、今有三个事务的一个调度R3(B)R1(A)W3(B)R2(B)R2(A)W2(B)R1(B)W1(A),该调度是冲突可串行化的调度吗?为什么

答:

是。该调度可交换为R3(B)W3(B)R2(B)R2(A)W2(B)R1(A)R1(B)W1(A)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值