数据库系统原理--第2章作业2--习题答案

题目:

设有一个SPJ 数据库,包括S、P、J 及SPJ4 个关系模式
S(SNO, SNAME ,STATUS,CITY);
P(PNO, PNAME, COLOR, WEIGHT):
J(JNO, JNAME, CITY);
SPJ(SNO,PNO,JNO,QTY)。
供应商表S 由供应商代码(SNO)、供应商姓名( SNAME)、供应商状态( STATUS)、供应商所在城市(CITY)组成。
零件表P 由零件代码(PNO)、零件名( PNAME)、颜色( COLOR)、重量( WEIGHT)组成。
工程项目表J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表SPJ 由供应商代码(SNO) 、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY) 组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:
在这里插入图片描述
试用关系代数完成如下查询:SPJ
(1)求供应工程J1 零件的供应商号码SNO;
(2)求供应工程J1 零件P1 的供应商号码SNO;
(3)求供应工程J1 零件为红色的供应商号码SNO;
(4)求没有使用天津供应商生产的红色零件的工程号JNO;
(5)求至少用了供应商S1 所供应的全部零件的工程号JNO。

答案

(1)
ΠSNO(σJNO=‘J1’(SPJ))
(2)
ΠSNO(σJNO='J1’∧PNO=‘P1’(SPJ))
(3)
ΠSNO(ΠJNO,PNO(σJNO=‘J1’(SPJ))∞ΠPNO(σCOLOR=‘红’ ( P) ))
(4)
ΠJNO(J)-ΠJNO(ΠSNO(σCITY=‘天津’(S))∞ΠPNO(σCOLOR=‘红’( P))∞ΠSNO,JNO,PNO(SPJ))
(5)
ΠJNO,PNO(SPJ)÷ΠPNO,SNO(σSNO=‘S1’(SPJ))

说明:把这段代码复制到软件上一步步运行即可出现题目要求的表,以及题目的答案;每道题SQL查询语言和关系代数查询语言在后面。想自己操作的话可以复制到软件上运行下。

--创建数据库
CREATE DATABASE SPJ
--使用数据库
USE SPJ
--创建S表
CREATE TABLE S(
SNO CHAR(10) PRIMARY KEY,
SNAME CHAR(50) UNIQUE,
STATUS INT,
CITY CHAR(20))
--添加数据到S表
INSERT INTO S(SNO,SNAME,STATUS,CITY)
VALUES('S1','精益',20,'天津'),
('S2','盛锡',10,'北京'),
('S3','东方红',30,'北京'),
('S4','丰泰盛',20,'天津'),
('S5','为民',30,'上海')
--检验
SELECT * FROM S
--创建P表
CREATE TABLE P(
PNO CHAR(10) PRIMARY KEY,
PNAME CHAR(50) ,
COLOR CHAR(20),
WEIGHT INT)
--添加数据到P表
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT)
VALUES('P1','螺母','红',12),
('P2','螺栓','绿',17),
('P3','螺丝刀','蓝',14),
('P4','螺丝刀','红',14),
('P5','凸轮','蓝',40),
('P6','齿轮','红',30)
--检验
SELECT * FROM P
--创建J表
CREATE TABLE J(
JNO CHAR(10) PRIMARY KEY,
JNAME CHAR(50) UNIQUE ,
CITY CHAR(20))
--添加数据到J表
INSERT INTO J(JNO,JNAME,CITY)
VALUES('J1','三建','北京'),
('J2','一汽','长春'),
('J3','弹簧厂','天津'),
('J4','造船厂','天津'),
('J5','机车厂','唐山'),
('J6','无线电厂','常州'),
('J7','半导体厂','南京')
--检验
SELECT * FROM J
---创建SPJ表
CREATE TABLE SPJ(
SNO CHAR(10),
PNO CHAR(10),
JNO CHAR(10),
QTY INT,
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY(SNO) REFERENCES S(SNO),  --外键约束
FOREIGN KEY(PNO) REFERENCES P(PNO),
FOREIGN KEY(JNO) REFERENCES J(JNO),
)
--添加数据到SPJ表
INSERT INTO SPJ(SNO,PNO,JNO,QTY)
VALUES ('S1','P1','J1',200),
('S1','P1','J3',100),
('S1','P1','J4',700),
('S1','P2','J2',100),
('S2','P3','J1',400),
('S2','P3','J2',200),
('S2','P3','J4',500),
('S2','P3','J5',400),
('S2','P5','J1',400),
('S2','P5','J2',100),
('S3','P1','J1',200),
('S3','P3','J1',200),
('S4','P5','J1',100),
('S4','P6','J3',300),
('S4','P6','J4',200),
('S5','P2','J4',100),
('S5','P3','J1',200),
('S5','P6','J2',200),
('S5','P6','J4',500)
--检验
SELECT * FROM SPJ

--题目:试用关系代数完成如下查询:SPJ
--(1)求供应工程J1 零件的供应商号码SNO;
SELECT * FROM SPJ
WHERE JNO='J1'
--关系代数:ΠSNO(σJNO=‘J1’(SPJ))
--(2)求供应工程J1零件P1的供应商号码SNO:
SELECT * FROM SPJ
WHERE JNO='J1'AND PNO ='P1'
--关系代数:ΠSNO(σJNO='J1'∧PNO='P1'(SPJ))
--(3)求供应工程J1零件为红色的供应商号码SNO:
SELECT * FROM SPJ
WHERE JNO = 'J1' AND PNO IN (
SELECT PNO FROM P
WHERE COLOR='红')
--关系代数:ΠSNO(ΠJNO,PNO(σJNO='J1'(SPJ))∞ΠPNO(σCOLOR='红'(P)))
--(4)求没有使用天津供应商生产的红色零件的工程号JNO:
SELECT JNO FROM J
WHERE JNO NOT IN(
SELECT JNO FROM SPJ,P,S
WHERE S.CITY='天津'
AND P.COLOR='红'
AND SPJ.PNO=P.PNO
AND SPJ.SNO=S.SNO
)
--关系代数:ΠJNO(J)-ΠJNO(ΠSNO(σCITY='天津'(S))∞ΠPNO(σCOLOR='红'(P))∞ΠSNO,JNO,PNO(SPJ))
--解析:减法运算中被减的部分是使用了天津供应商的红色零件的所有工程号,
--ΠJNO(J)是全部工程的工程号,两者相减就是题意了
--(5)求至少用了供应商S1所供应的全部零件的工程号JNO:
--由于VFP不允许子查询嵌套太深,将查询分为两步
--A、查询S1供应商供应的零件号
SELECT PNO FROM SPJ WHERE SNO='S1'--结果是(P1,P2)
--B、查询哪一个工程既使用P1零件又使用P2零件。
SELECT * FROM SPJ 
WHERE PNO='P1'
AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')--结果是J4
--关系代数:ΠJNO,PNO(SPJ)÷ΠPNO,SNO(σSNO='S1'(SPJ))

想自己实操一下如图说明

  • 62
    点赞
  • 326
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
第2习题答案: 1. a) 数据定义语言(Data Definition Language,DDL)负责定义、修改和删除数据库的结构,如创建表、定义表的列、设定主键等操作。 b) 数据操作语言(Data Manipulation Language,DML)用于对数据库中的数据进行操作,如插入、查询、更新、删除等操作。 2. a) 关系模型(Relational Model)是一种用于组织数据的模型,它将数据组织为表格形式的关系,通过表格中的行和列来表示实体和属性之间的关系。 b) 实体-关系(Entity-Relationship)模型是一种用于描述现实世界中实体和它们之间关系的模型,通过实体、属性和联系的概念来表示。 3. 事务(Transaction)是指由一个或多个数据库操作组成的逻辑工作单位,它将数据库一个一致状态转换到另一个一致状态。事务具有ACID属性,即原子性、一致性、隔离性和持久性。 4. 数据库系统的并发控制(Concurrency Control)是指在多个用户并发访问数据库时,保证数据的一致性和完整性的一系列技术和方法。常用的并发控制技术包括锁、并发控制算法和多版本并发控制。 5. a) 恢复(Recovery)是指在数据库系统发生故障时,通过一系列技术和方法将数据库从故障状态恢复到正常状态。 b) 日志(Log)是用于记录数据库操作的序列和重建数据的工具。常见的日志技术包括正向和反向恢复日志。 6. a) 数据库设计(Database Design)是指将现实世界的需求转化为数据库模式的过程,包括概念设计、逻辑设计和物理设计。 b) 数据库模式(Database Schema)是数据库的结构描述,包括表、列、键、约束等元素的定义。 7. a) 数据库安全(Database Security)是指保护数据库不被非法使用、不被篡改或窃取的一系列措施。常见的安全机制包括访问控制、身份验证和加密。 b) 数据库完整性(Database Integrity)是指保证数据库中数据的准确性和一致性的一系列约束和规则。常见的完整性约束包括主键、外键和检查约束。 8. a) 数据库视图(Database View)是基于数据库一个或多个表的查询结果,以虚拟表的形式存储在数据库中,可以像访问普通表一样对其进行操作。 b) 数据库索引(Database Index)是用于提高数据检索性能的数据结构,通过按照某种规则将数据排序和组织起来,减少数据搜索的时间复杂度。 以上是对《数据库系统概念》第六版第2习题的回答。希望可以帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三桥君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值