【数据库】复习

数据库期中复习------概念填空_在修改数据结构时,为了保证数据库的数据独立性-CSDN博客

选择题

关系数据理论-数据库习题_数据库关系理论考题-CSDN博客

关系、关系模式、关系模型区别和联系

关系:元组的集合,一张表

关系模式:关系的描述 R(U,D,DOM,F)

关系模型:数据结构、数据操纵与完整性约束

关系和关系模式的区别

1.关系模式是型,关系是值,关系模式是对关系的描述

2.关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳定的,而关系是动态的,随时间不断变化的,因为关系操作在不断地更新着数据库中的数据

3.类似于面向对象程序设计中"类"与"对象"的区别。"关系"是"关系模式"的一个实例,可以把"关系"理解为一张带数据的表,而"关系模式"是这张数据表的表结构。

关系模型和关系的区别

关系模型包含关系,关系是关系模型的数据结构,在关系模型中,现实世界的实体以及实体间的各级联系均用单一的结构类型,即关系来表示

数据模型由数据结构、数据操作和数据的完整性约束条件三部分组成

第七章

1.事务的概念及事务的4个特性

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做

ACID特性

事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)四大特性

2.数据库中为什么要进行并发控制?并发控制技术能够保证哪些特性?

数据库是共享资源,可以供多个用户使用,所以通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取或修改同一数据的情况。

若对并发操作不加以控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。

并发控制技术能够保证事务的隔离性和一致性。

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

(1)丢失修改

两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失

(2)不可重复读

事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果

(3)读脏数据

事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据

避免不一致的方法和技术就是并发控制。最常用的并发控制技术是封锁技术,还有在分布式数据库系统中采用时间戳方法来进行并发控制

第八章

1.数据库中为什么要进行数据库恢复?数据库恢复能够保证事务的哪些特性?

数据备份就是要保存数据的完整性,防止非法关键,断点,病毒感染等情况,使数据丢失

数据还原就是数据库出现错误或者是崩溃了不可以用,就把原来的数据恢复回来。提高系统的可用性和灾难可恢复性,在数据库系统崩溃的时候,可以恢复数据

使用数据库备份还原数据库是数据库崩溃时提供数据恢复最小代价的最优方案。没有数据就没有一切,数据库备份就是一种防范灾难于未然的强力手段。

数据库恢复能够保证事务的原子性和持久性
一、简答题

1、2、10、11

二、关系代数

三、关系规范化理论

四、数据库设计

画E-R图,然后把E-R图转换成数据模型

五、SQL语言

一、简答题

1.什么事数据库管理系统?它有哪些功能?P5

DBMS

建立、运用和维护数据库时进行集中控制的软件系统

  • 数据定义
  • 数据组织、存储和管理
  • 数据操纵
  • 数据库的事务管理和运行管理
  • 其他,通信、数据转换、互访和互操作

2.简述数据库系统的三级模式和两级映像结构,其如何保证数据的逻辑独立性和物理独立性 P28

模式、外模式、内模式

外模式/模式映像、模式/内模式映像

当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是根据数据的外模式编写的,从而应用程序不用修改,保证了数据与程序的逻辑独立性

当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据程序之间的物理独立性

3.简述关系模型的三类完整性规则及其内容 P45

实体完整性:主码中的属性不能取空

参照完整性:不引用不存在的实体,参照关系中的外码或者取空或者等于被参照关系中某个元组的主码值

用户定义的完整性规则反映某一具体应用涉及的数据必须满足的语义要求

4.简述数据库设计的六个阶段及每个阶段的主要工作 P209

  • 需求分析:分析用户的需求,包括数据、功能和性能需求;
  • 概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
  • 逻辑结构设计:将E-R图转换成表,实现从E-R模型到关系模型的转换;
  • 数据库物理设计:主要是为所涉及的数据库选择合适的存储结构和存取路径;
  • 数据库实施:包括编程、测试和试运行;
  • 数据库运行与维护:系统的运行与数据库的日常维护

在数据库设计过程中,需求分析和概念结构设计可以独立于任何数据库管理系统进行,逻辑结构设计和物理结构设计与选用的数据库管理系统密切相关

5.简述事务的概念和四个特性。P293 并发控制能保证事务的哪些特性?P310

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

ACID

  • 原子性Atomicity
  • 一致性Consistency
  • 隔离性Isolation
  • 持续次Durability

并发控制技术保证了事务的隔离性和一致性

二、关系代数语言

设有学生-课程-教学数据库,包含三个关系,分别为:S(S#,SNAME,SEX,AGE),C(C#,CNAME,TEACHER),SC(S#,C#,GRADE),试用关系代数表达式表达以下问题:

1.查询年龄AGE大于22的男同学的学号和姓名。

2.查询选修任课教师TEACHER是"李小明"课程的学生学号。

3.查询选修了课程C#为"C1"和"C2"课程的学生学号。

4.查询全部学生都选修的课程号与课程名。

三、关系规范化理论

关系模式R(员工编号,日期,零件数,部门名称,部门经理),表示某个工厂里每个员工的日生产零件数以及员工所在的部门和经理信息。假设每个员工每天只有一个日生产零件数,每个员工只在一个部门工作,每个部门只有一个经理。完成:

1.写出关系模式R的基本函数依赖和所有候选码

2.R是否为2NF,如果不是,把R分解为2NF

不是

(员工编号,日期)是码,存在非主属性(部门名称)对码的部分依赖 [员工编号--->部门名称]

分解:

R1(员工编号,日期,零件数)

R2(员工编号,部门名称,部门经理)

3.进一步将R分级为3NF

R1(员工编号,日期,零件数)

R2(员工编号,部门名称)

R3(部门名称,部门经理)

四、数据库设计题

某IT公司的数据库信息有:

部门:部门编号、部门名称、办公地点

员工:员工编号、姓名、级别

项目:项目编号、项目名称、开始时间、结束时间

一个员工只在一个部门工作;每个部门有唯一的一个员工作为部门经理;每个项目由一名员工负责,多名员工参与,一个员工只负责一个项目,可参加多个项目,在每个项目具有工作时间比。

1.试画出E-R图,并在图上注明属性、联系及联系类型

2.将E-R 图转换成关系模型,并说明主码和外码。

关系模型为:

部门(编号,名称,办公地点,经理编号),主码:编号,外码:部门的经理编号参照员工的编号;

员工(编号,姓名,级别,部门编号),主码:编号,外码:员工的部门编号参照部门的编号

项目(编号,名称,开始日期,结束日期,负责人编号),主码:编号,外码:项目的负责人编号参照员工的编号;

员工参与(员工编号,项目编号,时间比),主码:员工编号,项目编号;外码:员工编号、项目编号分别参照员工的编号、项目的编号。

五、SQL语言编程题

假设一个数据库中有3个关系,

客户关系 Customers(CustomerID,CName,CA),属性的含义依次为客户号、客户名称和地址;

产品关系 Products(ProductID,PName,Price,Provide, Storage),属性的含义依次为产品号、产品名、单价、供应商和库存量;

订单关系 Orders(OrderID,CustomerID,ProductsID,Odate,QTY),属性的含义依次为订单号、客户号、产品号、日期和数量。规定一张订单只能订购一种产品。用SQL语句完成以下各题:

1.建立Customers表、Orders表,要求定义主码和外码约束。

相关推荐
Hacker_LaoYi13 分钟前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀15 分钟前
Redis梳理
数据库·redis·缓存
独行soc15 分钟前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天1 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺1 小时前
分布式系统架构:服务容错
数据库·架构
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain2 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship2 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站2 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶2 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb