数据系统原理第一次作业
第一次作业
具体要求:
1、作业组织:先在作业本完成每题的答题,再将作业本中的每页答题拍照贴到答题卡文件相应位置,答题卡文件命名:学号姓名-第1次作业.doc(例如学号张三-第1次作业.doc),注意排版格式。
2、递交方式:在【优学院】—【作业】相应栏目上传自己的作业答题卡文件供老师批改,批改后返回给大家再上传到网安学院作业系统的相关栏目。(注意:时间限制)。
第1章 数据库系统概述
1.指出下列缩写的含义:
(1)DML:数据操纵语言
(2)DBMS:数据库管理系统
(3)DDL: 数据定义语言
(4)DB:数据库
(5)DBS:数据库系统
(6)DBA:数据库管理员
2. 数据库系统中人员主要包括(数据库管理员)、(数据分析员和数据库设计人员)、(应用程序员)和(用户)。
3.DBS组成部分包括(数据库)、(数据库管理系统)、(应用系统)、(数据库管理员)、(用户)五部分。
4.DBMS是位于(操作系统)和(用户)之间的一层管理软件。
5.数据库和文件的根本区别是(实现数据的整体结构化)。
6.DBMS提供的数据控制功能包括(安全性保护)、(完整性检查)、(并发控制)、(数据库恢复)。
7.数据库中,数据模型用于(描述数据结构、数据操作及数据约束的数据形式体系),数据模型应当满足(比较真实地模拟现实世界)、(容易被人所理解)、(便于在计算机上实现)三方面要求。
8.数据模型的三要素包括(数据结构)、(数据操作)、(数据完整性约束)。
9.概念模型也称为(信息模型),是(按用户的观点或认识对现实世界的数据和信息进行建模),主要用于(数据库设计),与具体的DBMS和机器(无关)。
10.数据的独立性是指(应用程序和数据结构之间相互独立, 互不影响),可以分为(逻辑独立性)和(物理独立性)。
第2章 关系模型与关系代数


(1) (∏studentName, birthday, courseNo(Student ⋈ Score))÷(∏courseNo(σstudentNo='1501001'(Score)))
(2) ((∏studentNo, courseNo(Score))÷(∏courseNo(σcourseNo LIKE 'CS%'(Course)))) ⋈ Score
2.8 对于图2-8所示的成绩管理数据库ScoreDB的模式导航图,根据图2-11所示的实例数据,试写出如下查询的关系代数表达式,并给出其查询结果。
(1) 查找籍贯为“上海”的全体学生。
σnative='上海' (Student)
(2) 查找2000年元旦以后出生的全体男同学。
σyear(birthday)>=2000∧sex='男' (Student)
(3) 查找信息学院非汉族同学的学号、姓名、性别及民族。
Class表 Student表 以学生表Student为中心
∏studentNo, studentName, sex, nation ((σnation!='汉族' Student) ⋈ (σinstitute='信息学院' Class))
(4) 查找2016-2017学年第二学期(16172)开出课程(即16172学期学生选修了的课程)的编号、名称和学分。——以课程表Course或成绩表Score为中心
∏courseNo, courseName, courseHour (Course ⋈ (σterm='16172' Score))
(5) 查找选修了“操作系统”的学生学号、成绩及姓名。
——以成绩表Score为中心
∏studentNo, studentName, score (Student ⋈ Score ⋈ (σcourseName='操作系统' Course))
(6) 查找班级名称为“会计学15(3)班”的学生在2015-2016学年第一学期(15161)选课情况,要求显示学生姓名、课程号、课程名称和成绩。
——以成绩表Score为中心
∏studentName, courseNo, courseName, score (
(σclassName='会计学15(3)班'Class) ⋈ Student ⋈ (σterm='15161'Score) ⋈ Course)
或
∏studentName, courseNo, courseName, score (
σclassName='会计学15(3)班'∧term='15161'(Class ⋈ Student ⋈ Score ⋈ Course))
(7) 查找至少选修了一门其直接先修课编号为CS012的课程的学生学号和姓名。
——以成绩表Score为中心
∏studentNo, studentName (Student ⋈ Score ⋈ (σpriorCourse='CS012'Course))
请分析以下查询:
(∏studentNo, studentName,courseNo (Student ⋈ Score))÷(∏courseNo (σpriorCourse='CS012'Course))
或 ∏studentNo, studentName(
((∏studentNo, courseNo Score)÷(∏courseNo (σpriorCourse='CS012'Course))) ⋈ Student)
——查找选修了所有直接先修课编号为CS012的课程的学生学号和姓名
(8) 查找选修了2016-2017学年第一学期(16171)开出的全部课程的学生学号、姓名。 ——以成绩表Score为中心
(∏studentNo, studentName, courseNo (Student ⋈ Score))÷( ∏courseNo (σterm='16171'Score))
——查找选修了2016-2017学年第一学期(16171)开出的全部课程的学生学号、姓名以及所选修所有课程的课程号、课程名、学期、成绩。
∏studentNo, studentName, courseNo, courseName, term, score(
((∏studentNo, studentName, courseNo(Student ⋈ Score))÷( ∏courseNo(σterm='16171'Score)))
⋈ Score ⋈ Course)
——查找2016-2017学年第一学期选修了2016-2017学年第一学期(16171)开出的全部课程的学生学号和姓名
(∏studentNo, studentName, courseNo(Student ⋈ (σterm='16171'Score)))
÷(∏courseNo(σterm='16171'Score))
或
∏studentNo, studentName ( (Student ⋈ Score)÷( ∏courseNo (σterm='16171'Score)) )
包含除数表的所有元组中<被除数表中的属性-除数表中的属性>的值是否都相等???
(9) 查找至少选修了学号为1503010的学生所选课程的学生学号和姓名。
——以成绩表Score为中心
(∏studentNo, studentName, courseNo (Student ⋈ Score))
÷(∏courseNo(σstudentNo='1503010'Score))
或
∏studentNo, studentName(
((∏studentNo, courseNoScore)÷(∏courseNo(σstudentNo='1503010'Score))) ⋈ Student)
2.9 对于图2-10所示的学生选课数据库SCDB的模式导航图,试写出如下查询的关系代数表达式。
(1) 查找2016级蒙古族学生信息,包括学号、姓名、性别和所属班级。
——以学生表Student为中心
∏studentNo, studentName, sex, classNo ( (σnation='蒙古族' Student) ⋈ (σgrade=2016 Class) )
(2) 查找“C语言程序设计”课程的课程班号、上课时间以及上课地点。
∏cClassNo, time, location ((σcourseName='C语言程序设计'Course) ⋈ CourseClass ⋈ Classroom)
(3) 查找选修了以“计算机概论”课程为其直接先修课的课程的学生学号、课程号和成绩。——以选课表SC为中心
∏studentNo, courseNo, score ( SC ⋈
∏A.courseNo((Course AS A) ⋈A.priorCourse=B.courseNo ((σcourseName='计算机概论'Course) AS B)) )
或
∏studentNo, SC.courseNo, score ( SC ⋈SC.courseNo=A.courseNo
((Course AS A) ⋈A.priorCourse=B.courseNo ((σcourseName='计算机概论'Course) AS B)) )
即(其中,ρACourse表示将关系Course更名为A)
∏studentNo, SC.courseNo, score ( SC ⋈SC.courseNo=A.courseNo
((ρACourse) ⋈A.priorCourse=B.courseNo (σcourseName='计算机概论'(ρBCourse))) )
请思考如下查询的功能:
∏studentNo, studentName, courseNo, score(SC⋈((∏studentNo, studentName, courseNo(Student⋈SC))÷
(∏A.courseNo((ρACourse) ⋈A.priorCourse=B.courseNo (σcourseName='计算机概论'(ρBCourse))))))
——查找选修了所有以“计算机概论”课程为其直接先修课的课程的学生的所有选课信息(包含学号、姓名、课程号和成绩)。
(4) 查找李勇老师2016-2017学年第二学期(16172)开出的课程号、课程名和学分。——以开课班表CourseClass为中心
∏courseNo, courseName, creditHour (
Course ⋈ (σterm='16172'CourseClass) ⋈ (σteacherName='李勇'Teacher) )
(5) 查找信息学院学生选课情况,要求显示学生姓名、课程号、课程名、课程班号、成绩和任课教师。——以选课表SC为中心
∏studentName, courseNo, courseName, cClassNo, score, teacherName (
((Student ⋈ ∏classNo(Class ⋈ σinstituteName='信息学院'Institute)) ⋈ SC
⋈ CourseClass ⋈ Teacher) ⋈ Course )
或:
∏studentName, courseNo, courseName, cClassNo, score, teacherName (
((Student ⋈ Class ⋈ σinstituteName='信息学院'Institute) ⋈ SC
⋈ CourseClass ⋈CourseClass.teacherNo=Teacher. teacherNo Teacher) ⋈ Course )