没有合适的资源?快使用搜索试试~ 我知道了~
数据库系统概念(原书第七版)课后作业题
需积分: 0 18 下载量 42 浏览量
2023-09-20
15:18:23
上传
评论 2
收藏 684KB DOCX 举报
温馨提示


试读
12页
数据库系统概念(原书第七版)的课后习题答案,包含SQL语句,范式,ER图。
资源推荐
资源详情
资源评论










第一次:
1. 考虑如下所示的关系数据库。这些关系上适当的主码是什么?
职工(姓名,街道,城市)
工作(姓名,公司名,工资)
公司(公司名,城市)
答:职工的主码:姓名
工作的主码:姓名,公司名
公司的主码:公司名
2. 考虑如下所示的银行数据库。
a.适当的主码是什么?
b.给出你选择的主码,确定适当的外码。
支行(支行名,属在城市,资产)
客户(客户名,街道,城市)
贷款(贷款号,支行名,金额)
贷款人(客户名,贷款号)
账户(账号,支行名,余额)
储户(客户名,账号)
答:支行的主码:支行名
客户的主码:客户名
贷款的主码:贷款号
外码:支行名
贷款人的主码:客户名,贷款号
外码 1:客户名 外码 2:贷款号
账户的主码:账号
外码:支行名
储户的主码:客户名,账号
外码 1:客户名 外码 2:账号
3. 考虑教材图 2-8 所示 advisor 关系,advisor 的主码是 s_id。假设一个学生可以有多位指导
教师。那么,s_id 还是 advisor 的主码吗?如果不是,advisor 的主码会是什么呢?
答:假设一个学生可以有多位指导教师。那么 s_id 就不再是 advisor 的主码。advisor 的主码
是(s_id,i_id)
第二次:
1. 写出对应教材图 3-18 的保险公司数据库所有模式的 SQL DDL。在数据类型上做合理的假
设,确保声明主码和外码。person(driver_id,name,address)
答:create table person(
driver_id varchar2(18) ,
name varchar2(20) not null,
address varchar2(50),
primary key(driver_id)
);

2. 写出对应教材图 3-18 的保险公司数据库所有模式的 SQL DDL。在数据类型上做合理的假
设,确保声明主码和外码。car(license,model,year)
答:create table car(
licence varchar2(10),
model varchar2(20),
year numeric(4),
primary key(licence)
);
3. 写出对应教材图 3-18 的保险公司数据库所有模式的 SQL DDL。在数据类型上做合理的假
设,确保声明主码和外码。accident(report_number,accident_date,location)
答:create table accident(
report_number int,
accident_date date,
location varchar2(50),
primary key(report_number)
);
4. 写出对应教材图 3-18 的保险公司数据库所有模式的 SQL DDL。在数据类型上做合理的假
设,确保声明主码和外码。owns(driver_id,license)
答:create table owns(
driver_id varchar2(18),
licence varchar2(10),
primary key(driver_id,licence),
foreign key(driver_id) references person,
foreign key(licence) references
);
5. 写出对应教材图 3-18 的保险公司数据库所有模式的 SQL DDL。在数据类型上做合理的假
设,确保声明主码和外码。participated(report_number,license,driver_id,damage_amount)
create table participated(
report_number int,
licence varchar2(10),
driver_id varchar2(18),
damage_amount int,
primary key(report_number,licence),
foreign key(driver_id) references person,
foreign key(report_number) references accident,
foreign key(licence) references car
);

第三次:
1.使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
找出 Comp.Sci. 系开设的具有 3 个学分的课程名称。
2. 使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
找出名叫 Einstein 的教师所教的所有学生的 ID,保证结果中没有重复。
3. 使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
找出教师的最高工资。
4. 使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
找出工资最高的所有教师(可能有不止一位教师具有相同的工资)。
5. 使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
找出 2019 年秋季开设的每个课程段的选课人数。
6. 使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
从 2019 年秋季开设的所有课程段中,找出最多的选课人数。
7. 使用大学模式(参见教材第 6 版第 2 章),用 SQL 写出如下查询。
找出在 2019 年秋季拥有最多选课人数的课程段。
1. select title
from course
where dept_name = 'Comp. Sci.'
and credits = 3
2.
select distinct student.ID
from student,takes,instructor,teaches
where
student.ID=takes.ID AND
instructor.ID=teaches.ID AND
takes.course_id=teaches.course_id AND
takes.sec_id=teaches.sec_id AND
takes.semester=teaches.semester AND
takes.year=teaches.year AND
instructor.name = 'Einstein';
3.
select max(salary)
from instructor;
4.
select ID, name
from instructor
where salary = (select max(salary) from instructor);
5.
select course_id, sec_id, count(ID)
from section natural join takes
where semester = 'Autumn'
and year = 2019
group by course_id, sec_id;
6.
剩余11页未读,继续阅读
资源评论


好棒棒哦
- 粉丝: 8
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
