数据库相关习题整理04
- 参照关系的外码并不一定要与被参照关系的主码同名。✔
- 一个表中最多只能有一个主键,多个外键。✔
- 设有关系SC(Sno, Cno, Grade),遵照实体完整性规则,【Sno与Cno都不能取空值】✔
- 假设W=R ∞ S,且W、R和S的元组个数分别为p, m和n,则三者之间满足【p <= m × n】
- R为4元关系R(A, B, C, D),S为3元关系S(B, C, D),R × S 构成的结果集为【7】元关系
- 集合R与S的交可以用关系代数的5种基本运算表示为【R-(R-S)】
- 数据字典中存放的是【数据库体系结构的描述】
- 索引【可以根据需要在基本表上建立一个或多个索引,从而提高系统的查询效率】
- 在数据库的物理结构中,将具有相同值的元组集合放在连续的物理块的存储方法称之为【聚簇索引】
- 数据库中建立索引的目的是为了【加快存取速度】
- WHERE子句的条件表达式中,可以匹配0个或多个字符的通配符是【%】
- 对由SELECT-FROM-WHERE-GROUP-ORDER组成的S语句,其在被DBMS处理时,各个子句的执行次序是:【FROM-WHERE-GROUP-SELECT-ORDER】
- 采用SELECT查询语句对关系进行查询操作,若要求查询结果中不能出现重复元组,可以在SELECT子句后增加保留字:【DISINCT】
- 数据模型的三要素(数据结构、数据操作和数据约束)中,数据的约束条件规定数据以及联系的【制约规则】
- 有12个实体类型,并且存在15个不同的二元联系,其中4个是1:1联系类型,5个是1:N联系类型,6个M:N联系类型,根据转换规则,这个E-R图转换为关系模式至少有:【18个】
解析:12个对应12个关系,6个M:N又会产生6个中间关系表,所以总共要转换为(12+6=18)个 - 在数据库技术中,未提交的随后被撤销了的数据,称之为【脏数据】
- 嵌入式SQL的预处理方式,是指【把嵌入的SQL语句处理成函数调用形式】
- 若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称之为【介质故障】
- 若事务T获得数据项Q上的排他锁,则T对Q【既可以读又可以写】
- 实现参照完整性约束的语句【FOREIGN KEY 和 REFERENCES】
- 在需求分析阶段,数据字典是对系统中【数据的描述】
- 对数据对象施加封锁,避免死锁的方法没有采用以下【先来先服务】策略
- 在数据库系统中,对存取权限的定义称为【授权】
- 将SQL嵌入到主语言使用时,必须区分SQL语句和主语句,通过在所有的SQL语句前面添加【EXEC SQL】
- 数据库设计人员与用户之间沟通信息的桥梁是【实体联系图】
- 并发操作可能带来以下的数据不一致性【丢失修改、不可重复读、脏读】
- 数据库物理设计完成以后,进入数据库实施阶段,【建立库结构】一般不属于实施阶段的工作。
- 在DBS中,日志文件的作用【数据库故障的恢复】
- 若系统中存在一个等待事务集{T0, T1, T2, ..., Tn},其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数据项A2以此类推则系统处于【死锁】的工作状态
- 数据模型的发展经历了【层次模型】【关系模型】【网状模型】和【面向对象模型】等阶段
- 数据库数据具有【永久存储】、【有组织】和【可共享】三个基本特点
- 审计一般可以分为【用户级】审计和【系统级】审计
- 触发器是实现数据库【完整性】的一个重要方法
- 使用SQL语言的SELECT语句进行分组查询时,如果要对分组进行筛选,则应该使用【HAVING】子句
- 游标是系统为用户开设的一个【数据缓冲区】
- 防止未经授权的用户恶意地存取DB中地数据,这是DBS的【安全性】控制机制要解决的问题
- 事务一旦提交,对数据库的修改就是永远的 =》持久性
- 层次型、网状型和关系型数据库划分原则是【数据之间的联系】
- 在数据库中存储的是【数据以及数据之间的联系】
- 数据的物理独立性指的是【用户的应用程序与数据库存储在磁盘上中的数据相互独立】
- 现实世界的事物反映到人的头脑中经过思维加工成数据。这一过程要经过三个领域:【现实世界】【信息世界】【机器世界】
- 【数据结构】是数据系统的静态特性的描述,【数据操作】是数据库系统的动态特性的描述。
- 关系模型的一个特点是:【实体以及实体之间的联系都可以使用相同的结构类型来表示】
- 【数据模型】是对现实世界数据特征的抽象。
- DBMS是一个位于OS和用户的应用之间的【系统软件】
- 在关系模式中有三类完整性约束,任何关系必须满足其中两种完整性约束条件【实体完整性】【参照完整性】
- 数据库应用程序的编写是基于三级模式结构中的【外模式】
- 以下属于信息世界的模型,且实际上是现实世界到机器世界中的一个中间层次的是【概念模型】
- 数据模型的三要素中,数据的约束条件规定数据及其联系的【制约规则】
数据模型的概念和主要组成
数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。
数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。
1、数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。
2、数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式。
3、数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。
什么叫数据独立性?什么是物理独立性和逻辑独立性?为什么数据库具有数据独立性?
数据独立性是指【数据描述】与【使用这些数据的应用程序相互分离】。包括数据的物理独立性和逻辑独立性。
数据的物理独立性
试阐述关系模型的概念
1.关系:一个关系对应一张二维表,但不是所有二维表都对应关系。
2.属性:表中的一列即为一个属性。
3.域:属性的取值范围。
4.元组:表中的一行。
5.主码:能唯一标识表中一条元组的属性或属性集合。
6.分量:元组中的一个属性值。
7.关系模式:对关系的描述。
2.属性:表中的一列即为一个属性。
3.域:属性的取值范围。
4.元组:表中的一行。
5.主码:能唯一标识表中一条元组的属性或属性集合。
6.分量:元组中的一个属性值。
7.关系模式:对关系的描述。
数据库的三级模式结构,并说明这种结构的优点
什么是基本表、视图,两者的联系和区别是什么?视图的优点是什么?
基本表:本身独立存在的表,在SQL中一个关系对应一个表。
视图:从一个或几个基本表中导出的表。视图本身不存在独立存储在数据库中,是虚表,在DB中只存放视图的定义而不存放视图对应的数据,这些数据仍在基本表中。
用户可以在基本表\视图之上定义视图。
视图:从一个或几个基本表中导出的表。视图本身不存在独立存储在数据库中,是虚表,在DB中只存放视图的定义而不存放视图对应的数据,这些数据仍在基本表中。
用户可以在基本表\视图之上定义视图。
哪类视图可以更新?哪类视图不可以更新?
* 可以更新的是:视图的属性来自基本表的行列子集视图
* 不可更新的是:视图的属性来自集合函数、表达式
* 不可更新的是:视图的属性来自集合函数、表达式
自然连接和等值连接区别
1.等值连接中不要求属性值完全相同,自然连接要求两个关系中进行比较的必须是相同的属性组(属性名可以不同)但必须要有相同的值域。
2.等值连接不将重复属性去掉,而自然连接去掉重复属性,**自然连接是去掉重复列的等值连接**。
综合应用题
设有一个数据库,包括如下关系模式:
部门(部门编号, 部门名称, 办公地点, 部门电话) 教工(教工编号, 部门编号, 姓名, 性别, 出生日期, 职称, 文化程度, 婚否, 基本工资, 家庭电话) 任课(教工编号, 课程编号, 上课班级, 上课时间, 上课地点) 课程(课程编号, 课程名称, 学分)
用关系代数完成以下查询
1)查询所有女教工的姓名、家庭电话
2)查询部门名称为“外语系”的所有女教师的姓名和家庭电话
3)查询教工编号为“126”的教师的任课情况,要求输出:姓名、课程名称、上课时间、上课地点。
编写SQL语句实现相应功能
1)在“课程”表中插入一条记录(课程号:A256, 课程名称:高等数学,学分:4.5)。
INSERT INTO 课程(课程编号, 课程名称, 学分) VALUES("A256", "高等数学", 4.5);
2)查询所有文化程度为硕士的女教工的教工编号、姓名、出生日期,并按出生日期升序排列
SELECT 教工编号, 姓名, 出生日期 FROM 教工 WHERE 文化程度 = '硕士' AND 姓名 = '女' ORDER BY 出生日期 ASC
3)查询计算学校教工总人数
SELECT COUNT(*) FROM 教工;
4)将部门名称“计算机系”修改为“计算机学院”
UPDATE 部门 SET 部门名称 = '计算机学院' WHERE 部门名称 = '计算机系';
5)把查询和删除“课程”表数据的权限授予用户U2
GRANT SELECT, DELETE ON 课程 TO U2;
6)创建一个所有教师任课信息的名为“teach”的视图,包括下列属性:姓名、课程名称、上课班级、上课时间、上课地点。
CREATE VIWE teach(姓名, 课程名称, 上课班级, 上课时间, 上课地点) AS SELECT 姓名, 课程名称, 上课班级, 上课时间, 上课地点 FROM 教工, 任课, WHERE 教工.教工编号 = 任课.教工编号;
7)查询各位教师任课门数,输出:教师编号、教师名称、任课门数
// 第一种 SELECT 教师.教师编号, 教师.教师名称, tmp.任课门数 FROM 教师, ( SELECT 教工编号, COUNT(*) AS 任课门数 FROM 任课 GROUP BY 教工编号 ) AS tmp WHERE 教师.教工编号 = tmp.教工编号; // 第二种 SELECT 教师编号, 教师名称, COUNT(教师编号) AS 任课门数 FROM 教工, 任课 WHERE 教工.教工编号 = 任课.教工编号 GROUP BY 教工编号;
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具