数据库设计与SQL实践:Exercise翻译及解答
需积分: 10 70 浏览量
更新于2024-07-26
收藏 177KB DOC 举报
"ssd7 exercise 中文翻译"
在SSD7的学习中,这个练习主要涉及关系型数据库的设计和SQL操作。练习分为两部分,分别关注数据库表的结构设计和SQL语句的编写。
第一部分涉及到关系的关键字、属性及数据类型的定义。在这个练习中,我们有两个关系:`BOOK` 和 `PUBLISHER`。
1. 对于`BOOK` 关系,主键是 `ISBN`,因为它能唯一标识一本书。没有备用键,因为即使`PrimaryAuthor`和`PublisherID`可能唯一,但考虑到它们可能有多个作品或出版书籍,所以不足以作为主键。`PublisherID`是外键,它引用了`PUBLISHER`表的`PublisherID`,确保数据完整性。
2. `PUBLISHER` 关系,主键是 `PublisherID`,同样没有备用键。`PublisherID`在外键场景中用于`BOOK`表,确保关联的出版社信息正确。
每个关系的属性名和数据类型如下:
- `BOOK`: PrimaryAuthor (字符串),Title (字符串),ISBN (字符串),PublisherID (整数),Edition (整数),DateofPublication (日期),Price (浮点数),BookDescription (字符串)
- `PUBLISHER`: PublisherID (整数),Name (字符串),Address (字符串)
每个关系应包含至少四行示例数据,例如:
```
BOOK:
| PrimaryAuthor | Title | ISBN | PublisherID | Edition | DateofPublication | Price | BookDescription |
|---------------|----------------------|----------------|-------------|---------|------------------|-------|----------------------------------------|
| John Doe | Database Systems | 978-1234567890 | 1 | 2nd | 2020-01-01 | 39.99 | 介绍数据库系统的基础知识 |
| Jane Smith | Programming Fundamentals | 978-9876543210 | 2 | 1st | 2019-06-30 | 49.99 | 学习编程的入门指南 |
| Alice Johnson | Advanced SQL | 978-0987654321 | 1 | 3rd | 2021-03-15 | 59.99 | 高级SQL查询和优化技术的深入探讨 |
| Bob Brown | Web Development | 978-1111222233 | 2 | 4th | 2020-11-20 | 34.99 | 教程涵盖了网页开发的各个方面 |
PUBLISHER:
| PublisherID | Name | Address |
|-------------|------------------|--------------------------------|
| 1 | AddisonWesley | 123 Main St, Anytown, USA |
| 2 | McGraw Hill | 456 High Rd, Othertown, USA |
| 3 | Penguin Books | 789 Bridge St, Anothercity, USA|
| 4 | HarperCollins | 1010 Park Ave, Somewhere, USA |
```
第二部分主要涉及SQL操作:
1. 使用`CREATE TABLE`语句创建`BOOK` 和 `PUBLISHER` 表,指定`ISBN` 和 `PublisherID`为主键。
2. 使用`INSERT`语句向两个表中插入上述示例数据。
3. 查询语句如下,找出"AddisonWesley" 和 "McGraw Hill" 出版的所有书的标题和价格:
```sql
SELECT Title, Price
FROM Book
WHERE PrimaryAuthor IN ('AddisonWesley', 'McGraw Hill');
```
这使用了选择操作(SELECT),根据作者筛选记录。
4. 查询"FundamentalsofDatabase Systems"的出版社名字:
```sql
SELECT P.Name
FROM Book B
JOIN Publisher P ON B.PublisherID = P.PublisherID
WHERE B.Title = 'FundamentalsofDatabase Systems';
```
这里使用了选择(SELECT)、投影(projection,即只选取`Name`列)和连接(JOIN)操作,通过`PublisherID`关联`Book`和`Publisher`表。
练习二要求创建一个图书馆数据库,其中`Book`表表示书的副本。例如,如果有三本"DBMS",`Book`表会包含三行数据。以下是一些可能的SQL操作示例:
1. 添加新书到库存:
```sql
INSERT INTO Book (Title, ISBN, PublisherID, Edition, DateofPublication, Price)
VALUES ('DBMS', '978-9999999999', 3, 1st, '2022-06-01', 29.99);
```
2. 更新某本书的价格:
```sql
UPDATE Book
SET Price = 34.99
WHERE ISBN = '978-1234567890';
```
3. 删除已售罄的书副本:
```sql
DELETE FROM Book
WHERE ISBN = '978-9999999999' AND Edition = 1st;
```
4. 查找所有出版社为"Penguin Books"的书籍:
```sql
SELECT *
FROM Book B
JOIN Publisher P ON B.PublisherID = P.PublisherID
WHERE P.Name = 'Penguin Books';
```
这些操作展示了如何使用SQL来管理图书馆数据库中的数据。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-09-20 上传
2022-09-22 上传
2011-05-04 上传
2010-01-27 上传
2009-05-27 上传
2009-12-08 上传
oShouHuYiSheng1
- 粉丝: 0
- 资源: 1
最新资源
- R语言中workflows包的建模工作流程解析
- Vue统计工具项目配置与开发指南
- 基于Spearman相关性的协同过滤推荐引擎分析
- Git基础教程:掌握版本控制精髓
- RISCBoy: 探索开源便携游戏机的设计与实现
- iOS截图功能案例:TKImageView源码分析
- knowhow-shell: 基于脚本自动化作业的完整tty解释器
- 2011版Flash幻灯片管理系统:多格式图片支持
- Khuli-Hawa计划:城市空气质量与噪音水平记录
- D3-charts:轻松定制笛卡尔图表与动态更新功能
- 红酒品质数据集深度分析与应用
- BlueUtils: 经典蓝牙操作全流程封装库的介绍
- Typeout:简化文本到HTML的转换工具介绍与使用
- LeetCode动态规划面试题494解法精讲
- Android开发中RxJava与Retrofit的网络请求封装实践
- React-Webpack沙箱环境搭建与配置指南