数据库系统原理与应用教程(014)—— 关系数据库练习题(一)

这篇具有很好参考价值的文章主要介绍了数据库系统原理与应用教程(014)—— 关系数据库练习题(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库系统原理与应用教程(014)—— 关系数据库练习题(一)

一、简答题

1、试述关系模型的三要素和关系操作语言的特点。

答案:

关系模型的三要素为数据结构、关系操作和完整性约束。在关系模型中,无论是实体集还是实体集之间的联系都是由关系表示的。

关系操作语言的特点:(1)关系操作的方式是一次一集合方式。(2)关系操作语言是高度非过程化的语言。

2、定义并解释下列术语,并说明它们之间的联系和区别。

(1)主码、候选码、外码

答案:

主码和候选码:若关系中的某一个属性(属性组),其值能唯一标识一个元组,则称该属性(或属性组)为候选码。当一个关系有多个候选码时,选定其中的一个候选码为主码。如果关系中只有一个候选码,这个唯一的候选码就是主码。

外码:设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的主码(或候选码),如果 F 与基本关系 S 的主码 KS 相对应,则称 F 是基本关系 R 的外码。

(2)笛卡尔积、关系、元组、属性、域

答案:

笛卡尔积:给定一组域 D1,D2,…,Dn,则域 D1,D2,…,Dn 的笛卡尔积为:

D1×D2×…×Dn={(d1,d2,…,dn) | di ∈ Di,i=1,2,…,n}

关系:域的笛卡尔积所包含的元组是多个域中的元素任意组合得到的,因此有很多元组没有实际意义。从域的笛卡尔积中挑选中有意义的元组构成的集合称为关系。

元组:关系中的一行称为一个元组,组成元组的元素称为分量。

属性:关系中的一列称为一个属性。属性具有型和值,属性的型指属性名和取值范围等,属性的值指属性具体的取值。属性表示实体的特征。

域:域是一组具有相同数据类型的值集合。属性的取值范围称为域。

(3)关系、关系模式、关系数据库

答案:

关系:关系是一张二维表,是从域的笛卡尔积中挑选中有一的元组构成的集合。

关系模式:关系的描述称为关系模式。关系模式可以表示为:R(U,D,Dom,F),其中 R 是关系名,U 为关系包含的属性的集合,D 为属性组 U 中属性的域,Dom 为属性向域的映像的集合,F 为属性间数据依赖的集合。

关系数据库:基于关系模型的数据库称为关系数据库。在关系数据库中,实体与实体之间的联系都是用关系来表示的。其中,一个关系对应一个实体集,关系中的一行对应一个实体,关系中的一列对应实体的一个属性。

3、试述关系模型的完整性规则。在参照完整性中,为什么外码的值可以为空?什么情况下允许为空?

答案:

关系模型有三类完整性:实体完整性,参照完整性和用户自定义完整性。

实体完整性规则:若属性 A 是基本关系 R 的主属性,则属性 A 不能为空值。

参照完整性规则:若属性 F 是基本关系 R 的外码,它与基本关系 S 的主码 Ks 相对应,则对于 R 中每个元组在 F 上的值必须取空值,或者等于 S 中某个元组的主码值。当外码的值不清楚或不确定时,可以设为空值,此时参照关系中没有对应的记录与之匹配。

用户自定义完整性规则:用户自定义的完整性就是针对某一具体应用所定义的约束条件。

4、试述等值连接与自然连接的区别和联系。

答案:等值连接是从关系 R 和 S 的笛卡尔积中选取 R.A 和 S.B 属性值相等的元组。自然连接是一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

5、举例说明参照完整性。

答案:

参照完整性是指参照关系中的外码要从被参照关系的主码中取值。例如,员工是参照关系,部门是被参照关系,部门号是部门表的主码,是员工关系的外码,则员工表的部门号要从部门表的部门号中去取,如下表所示。

部门表:

部门号 部门名 电话
D01 销售部 3040111
D02 财务部 3040222
D03 人事部 3040333

员工表:

工号 姓名 性别 电话 部门
E001 王刚 3058444 D01
E002 李艳艳 3069777 D01
E003 张静静 3065123 D01
E004 王涛 3086999 D02
E005 张晓刚 3074666 D02

6、说明视图与基本表的区别与联系

答案:

基本表是实际存放数据的表。视图表是从一个或几个基本表导出的表,是一个虚拟表。数据库中只存放视图的定义,而不存放视图对应的数据,数据存放在基本表中。视图定义好之后就可以像基本表一样使用,可以对视图进行增、删、改、查。也可以在一个视图之上再定义新的视图,对视图中的数据进行修改其实最终修改的是视图对应的基本表。反之,基本表中的数据发生变化,从视图中查询到的数据也会随之改变。

7、如果某关系的实例满足下列条件之一,要表示该实例,有多少种不同的方法(考虑元组的顺序和属性的顺序)。

(1)3 个属性,3 个元组

(2)4 个属性,5 个元组

(1)m 个属性,n 个元组

答案:

(1)3!× 3!= 36

(2)4!× 5!= 24×120 = 2880

(3)m!× n!

8、针对如下表所示的关系 R 和 S 写出 R ∪ S、R ∩ S 和 R - S。

关系 R:

tNO tName TEL Course
101 王明 62203546 数据结构
202 张华 62209876 数据库
303 赵娟 62208076 高等数学

关系 S:

tNO tName TEL Course
101 王明 62203546 数据结构
102 孙俪 64309876 操作系统
103 郭德纲 63398076 计算机网络

答案:

(1)R ∪ S

tNO tName TEL Course
101 王明 62203546 数据结构
102 孙俪 64309876 操作系统
103 郭德纲 63398076 计算机网络
202 张华 62209876 数据库
303 赵娟 62208076 高等数学

(2)R ∩ S

tNO tName TEL Course
101 王明 62203546 数据结构

(3)R - S

tNO tName TEL Course
202 张华 62209876 数据库
303 赵娟 62208076 高等数学

9、设关系 R 和 S,其值如下表所示,求:

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

答案:

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

10、有如下关系:

学生(学号,姓名,年龄,所在系)

选课(课程号,课程名,先行课)

选课(学号,课程号,成绩)

用关系代数完成如下查询:

(1)求学过数据库课程的学生的学号和姓名。

(2)求学过数据库和数据结构的学生的学号和姓名。

(3)求没学过数据库课程的学生的学号。

(4)求学过数据库的先行课的学生的学号。

答案:
求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

/*
create table stu(
    stu_id char(11) primary key,
    stu_name char(20),
    age int,
    dept char(20)
);
create table course(
    c_id char(5) primary key,
    c_name char(20),
    Advance_class char(20)
);
create table electives(
    stu_id char(11),
    c_id char(5),
    grade int
);
insert into stu values('20210224101','张宇',20,'管理系');
insert into stu values('20210224102','刘涛',21,'管理系');
insert into stu values('20210224103','刘蓓',20,'经济系');

insert into course values('C0001','高等数学',null);
insert into course values('C0002','计算机基础',null);
insert into course values('C0003','数据库','计算机基础');
insert into course values('C0004','数据结构','计算机基础');

insert into electives values('20210224101','C0001',80),('20210224101','C0002',85),('20210224101','C0003',84),('20210224101','C0004',92);
insert into electives values('20210224102','C0001',80),('20210224102','C0003',80),('20210224102','C0004',90);
insert into electives values('20210224103','C0002',78),('20210224103','C0001',79),('20210224103','C0004',91);
*/

mysql> select * from stu;
+-------------+----------+------+-----------+
| stu_id      | stu_name | age  | dept      |
+-------------+----------+------+-----------+
| 20210224101 | 张宇     |   20 | 管理系    |
| 20210224102 | 刘涛     |   21 | 管理系    |
| 20210224103 | 刘蓓     |   20 | 经济系    |
+-------------+----------+------+-----------+
3 rows in set (0.03 sec)

mysql> select * from course;
+-------+-----------------+-----------------+
| c_id  | c_name          | Advance_class   |
+-------+-----------------+-----------------+
| C0001 | 高等数学        | NULL            |
| C0002 | 计算机基础      | NULL            |
| C0003 | 数据库          | 计算机基础      |
| C0004 | 数据结构        | 计算机基础      |
+-------+-----------------+-----------------+
4 rows in set (0.00 sec)

mysql> select * from electives;
+-------------+-------+-------+
| stu_id      | c_id  | grade |
+-------------+-------+-------+
| 20210224101 | C0001 |    80 |
| 20210224101 | C0002 |    85 |
| 20210224101 | C0003 |    84 |
| 20210224101 | C0004 |    92 |
| 20210224102 | C0001 |    80 |
| 20210224102 | C0003 |    80 |
| 20210224102 | C0004 |    90 |
| 20210224103 | C0002 |    78 |
| 20210224103 | C0001 |    79 |
| 20210224103 | C0004 |    91 |
+-------------+-------+-------+
10 rows in set (0.00 sec)

--(1)求学过数据库课程的学生的学号和姓名。
select s.stu_id, stu_name
from stu s,course c,electives e
where s.stu_id = e.stu_id and c.c_id = e.c_id
      and c_name = '数据库';
      
--查询结果如下
mysql> select s.stu_id, stu_name
    -> from stu s,course c,electives e
    -> where s.stu_id = e.stu_id and c.c_id = e.c_id
    ->       and c_name = '数据库';
+-------------+----------+
| stu_id      | stu_name |
+-------------+----------+
| 20210224101 | 张宇     |
| 20210224102 | 刘涛     |
| 20210224103 | 刘蓓     |
+-------------+----------+
3 rows in set (0.06 sec)

--(2)求学过数据库和数据结构的学生的学号和姓名。
select s.stu_id, s.stu_name
from (select stu_id
      from electives
      where c_id = (select c_id from course where c_name = '数据库')) x,
      electives e, stu s
where x.stu_id = s.stu_id and x.stu_id = e.stu_id and 
      e.c_id = (select c_id from course where c_name = '数据结构');
      
--查询结果如下
mysql> mysql> select s.stu_id, s.stu_name
    -> from (select stu_id
    ->       from electives
    ->       where c_id = (select c_id from course where c_name = '数据库')) x,
    ->       electives e, stu s
    -> where x.stu_id = s.stu_id and x.stu_id = e.stu_id and 
    ->       e.c_id = (select c_id from course where c_name = '数据结构');
+-------------+----------+
| stu_id      | stu_name |
+-------------+----------+
| 20210224101 | 张宇     |
| 20210224102 | 刘涛     |
+-------------+----------+
2 rows in set (0.00 sec)

--(3)求没学过数据库课程的学生的学号。
select stu_id 
from stu 
where stu_id not in
    (select e.stu_id
     from course c,electives e
     where c.c_id = e.c_id and c_name = '数据库');

--查询结果如下
mysql> select stu_id 
    -> from stu 
    -> where stu_id not in
    ->     (select e.stu_id
    ->      from course c,electives e
    ->      where c.c_id = e.c_id and c_name = '数据库');
Empty set (0.07 sec)

--(4)求学过数据库的先行课的学生的学号。
select e.stu_id 
from electives e, course c 
where e.c_id = c.c_id and
      c_name = (select Advance_class from course where c_name = '数据库');
      
--查询结果如下
mysql> select e.stu_id 
    -> from electives e, course c 
    -> where e.c_id = c.c_id and
    ->       c_name = (select Advance_class from course where c_name = '数据库');
+-------------+
| stu_id      |
+-------------+
| 20210224101 |
| 20210224103 |
+-------------+
2 rows in set (0.00 sec)

11、设有一个 SPJ 数据库,包括 S、P、J、SPJ 四个关系:

S(SNO,SNAME,STATUS,CITY)–供应商表S,应商表代码SNO,应商表名称SNAME,应商表状态STATUS,应商表所在城市CITY

P(PNO,PNAME,COLOR,WEIGHT)–零件表P,零件代码PNO,零件名称PNAME,颜色COLOR,重量WEIGHT

J(JNO,JNAME,CITY)–工程项目表J,工程项目代码JNO,工程项目名称JNAME,工程项目所在城市CITY

SPJ(SNO,PNO,JNO,QTY)–供应情况表SPJ,供应商代码SNO,零件代码PNO,工程项目代码JNO,供应数量QTY,表示某供应商供应某种零件给某工程项目的数量。

请用关系代码表示如下查询:

(1)求供应工程 J1 零件的供应商号码 SNO

(2)求供应工程 J1 零件 P1 的供应商号码 SNO

(3)求供应工程 J1 零件为红色的供应商号码 SNO

(4)求没有使用天津供应商生产的红色零件的工程号

(5)求至少用了供应商 S1 所供应的全部零件的工程号

答案:

(1)πSNO(σJNO=‘J1’(SPJ))

(2)πSNO(σJNO=‘J1’ ∧ PNO=‘P1’(SPJ))

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

12、有以下三个关系:

S(S#,SNAME,AGE,SEX,NP)–S(学生),S#(学号),SNAME(姓名),AGE(年龄),SEX(性别),NP(籍贯)

C(C#,CNAME,TEACHER)–C(课程),C#(课程号),CNAME(课程名),TEACHER(主讲教师)

SC(S#,C#,GRADE)–SC(选修),S#(学号),C#(课程号),GRADE(成绩)

请用关系代数表示如下查询:

(1)查询年龄大于 21 岁的男生的学号(S#)和姓名(SNAME)。

(2)查询全部学生都选修的课程的课程号(C#)和课程名(CNAME)。

(3)查询籍贯为上海的学生的学号(S#)、姓名(SNAME)和选修的课程号(C#)。

(4)查询选修了全部课程的学生的姓名(SNAME)和年龄(AGE)。

答案:

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

13、某医院病房管理信息如下:

科室:科室名称,科室地址,科室电话

病房:病房号,床位号,所属科室名

医生:姓名,职称,所属科室名,年龄,工作证号

病人:病历号,姓名,性别,诊断,主管医生,病房号

其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。

请完成以下设计:

(1)设计系统的 E-R 图

(2)将该 E-R 图转换为关系模型

(3)指出每个关系的候选码

答案:

(1)E-R 图如下图所示:

求学过数据库的先行课的学生学号,数据库系统原理与应用教程:以MySQL为例,数据库,python,大数据

(2)E-R 图对应的关系模型如下:

科室(科室名称,科室地址,科室电话)

病房(病房号,床位号,所属科室名)

医生(姓名,职称,所属科室名,年龄,工作证号)

病人(病历号,姓名,性别,诊断,主管医生,病房号)

(3)每个关系的候选码如下:

科室:科室名称

病房:病房号

医生:工作证号

病人:病历号文章来源地址https://www.toymoban.com/news/detail-784326.html

到了这里,关于数据库系统原理与应用教程(014)—— 关系数据库练习题(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理

    数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理

    1. 理解存储过程和函数的概念。 2. 掌握创建存储过程和函数的方法。 3. 掌握执行存储过程和函数的方法。 4. 掌握游标的定义、使用方法。 1.验证性实验:某超市的食品管理的数据库的Food表对其操作。 2.设计性试验:学校教师管理数据库中的teacherInfo表对其操作。 三、实验步

    2024年02月03日
    浏览(11)
  • 大数据技术原理与应用实验3——NoSQL和关系数据库的操作比较

    大数据技术原理与应用实验3——NoSQL和关系数据库的操作比较

    (1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点; (2)熟练使用四种数据库操作常用的Shell命令; (3)熟悉四种数据库操作常用的Java API。 (1)Linux操作系统(CentOS7.5) (2)VMware Workstation Pro 15.5 (3)远程终端工具Xshell7 (4)Xftp7传输工具 (5)Hadoop版本:

    2024年02月02日
    浏览(8)
  • [MySQL]数据库原理1,三大范式,E-R图,DataBase,数据库管理系统(DBMS),Relationship,实体、属性、联系 映射基数,关系型数据库,联系的度数等——喵喵期末不挂科

    [MySQL]数据库原理1,三大范式,E-R图,DataBase,数据库管理系统(DBMS),Relationship,实体、属性、联系 映射基数,关系型数据库,联系的度数等——喵喵期末不挂科

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 认识数据库 常见的数据库管理系统应用案例。       1.数据(Data)       2.数据库(DataBase ,简

    2024年02月04日
    浏览(11)
  • 书店销售管理系统----数据库原理及应用综合实验

    书店销售管理系统----数据库原理及应用综合实验

    枯木逢春犹再发,人无两度再少年🍂 系统主要模块如下: (1) 书店销售管理系统设计与实现—图书入库管理及查询统计 图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等)。自动计算库存。 图书查询统计:按图书分类,出版社、书

    2024年02月06日
    浏览(13)
  • 数据库原理及应用课程设计--药品存储信息管理系统

    数据库原理及应用课程设计--药品存储信息管理系统

    1.1项目提出 1.2.调查使用该药品存储信息数据库的用户的实际需求 1.3 功能需求 1.供应商基本信息模块,完成对供应商基本信息的输入、修改和查询; 2.员工基本信息模块,完成对员工基本情况的输入、修改和查询; 3.药品基本信息模块,完成对药品基本信息的输入、修改

    2024年02月08日
    浏览(22)
  • 数据库系统概论—关系理论、数据库设计

    数据库系统概论—关系理论、数据库设计

    主要是关系中 属性和属性之间的依赖关系 第一范式 :表中无表(属性不可再分) 数据依赖:是在一个关系内部属性间的约束,分为函数和多值依赖。 eg:学号决定姓名 2.1函数依赖 与数学中函数概念相似,一个X只能对应一个Y。记作X-Y 非平凡函数依赖:X-Y,但Y不属于X 平凡函数

    2024年02月08日
    浏览(15)
  • Harmony鸿蒙应用开发——关系型数据库(RelationalStore)

    Harmony鸿蒙应用开发——关系型数据库(RelationalStore)

    关系型数据库基于 SQLite 组件,适用于存储包含复杂关系数据的场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等,又或者公司的雇员信息,需要包括姓名、工号、职位等,由于数据之间有较强的对应关系,复杂程度比键值型数据更高,此时需要使用关系型

    2024年01月16日
    浏览(31)
  • 【数据库系统概论】第三章关系数据库标准语言SQL

    【数据库系统概论】第三章关系数据库标准语言SQL

    1.数据查询: SELECT:用于选择需要查询的列和行。 FROM:用于指定要查询的表。 WHERE:用于指定查询条件。 GROUP BY:用于按照指定的列对结果进行分组。 HAVING:用于指定分组条件。 ORDER BY:用于指定查询结果的排序方式。 2.数据操纵: INSERT INTO:用于将数据插入表中。 UPDAT

    2024年02月08日
    浏览(26)
  • 读SQL进阶教程笔记11_关系数据库基础

    读SQL进阶教程笔记11_关系数据库基础

    正式的关系模型术语 非正式的日常用语 关系(relation ) 表(table ) 元组(tuple ) 行(row )或记录(record ) 势(cardinality ) 行数(number of rows ) 属性(attribute ) 列(column )或字段(field ) 度(degree ) 列数(number of columns ) 定义域(domain ) 列的取值集合(pool of legal values ) 10.5.3.1. “泛文件主义” 10.5.3.2. 

    2023年04月14日
    浏览(28)
  • [架构之路-172]-《软考-系统分析师》-5-数据库系统-5- 数据库设计与建模(逻辑设计-实体关系图ER图-关系图、物理设计)

    [架构之路-172]-《软考-系统分析师》-5-数据库系统-5- 数据库设计与建模(逻辑设计-实体关系图ER图-关系图、物理设计)

    目录 5 . 5 数据库设计与建模 5.5.1数据库设计阶段 1 . 规划:为什么做?能不能做? 2 . 需求分析:做成什么样子? 3 . 概念设计:怎么做 - 概念 (用户) 4 . 逻辑设计:怎么做?-- 逻辑 5 . 物理设计:怎么做?-- 物理 5.5.2 实体联系模型到关系图 0. 三要素 1 . 联系的类型 2. E- -

    2023年04月22日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包