数据库设计与SQL实践:Exercise翻译及解答
需积分: 10 119 浏览量
更新于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来管理图书馆数据库中的数据。
2011-05-31 上传
2010-10-29 上传
2015-06-01 上传
2023-06-06 上传
2023-12-15 上传
2023-06-21 上传
2023-06-22 上传
2024-01-14 上传
2024-06-14 上传
oShouHuYiSheng1
- 粉丝: 0
- 资源: 1
最新资源
- 天池大数据比赛:伪造人脸图像检测技术
- ADS1118数据手册中英文版合集
- Laravel 4/5包增强Eloquent模型本地化功能
- UCOSII 2.91版成功移植至STM8L平台
- 蓝色细线风格的PPT鱼骨图设计
- 基于Python的抖音舆情数据可视化分析系统
- C语言双人版游戏设计:别踩白块儿
- 创新色彩搭配的PPT鱼骨图设计展示
- SPICE公共代码库:综合资源管理
- 大气蓝灰配色PPT鱼骨图设计技巧
- 绿色风格四原因分析PPT鱼骨图设计
- 恺撒密码:古老而经典的替换加密技术解析
- C语言超市管理系统课程设计详细解析
- 深入分析:黑色因素的PPT鱼骨图应用
- 创新彩色圆点PPT鱼骨图制作与分析
- C语言课程设计:吃逗游戏源码分享