1.为什么需要空值null?
答:引入空值,可以方便于数据库的维护和建立,数字和字符有时并不能达到理想的解决问题结果。空值null是所有可能的域的一个取值,表明值未知或者值不存在。
2.关系模型的完整性规则有哪些?
答:关系模型中有三类完整性约束:实体完整性、参照完整性和用户自定义完整性。
①关系的实体完整性规则是:若属性A是基本关系R的主属性,则属性A的值不能为空值。
②关系的参照完整性规则为:若属性(或属性集)F是基本关系r的外码,它与基本关系s的主码Ks相对应(基本关系r和s不一定是不同的关系),则对于关系r中的每一个元组在属性F上的取值要么为空值null,要么等于关系s中某个元组的主码值。
③用户定义的完整性就是针对某一具体应用要求来定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
3.试写出如下查询的关系代数表达式。
(1)查找籍贯为“上海”的全体学生。
σnative=’上海’(Student)
(2)查找2000年元旦以后出生的全体男同学。
σyear(birthday)>=2000⋀sex=’男’(Student)
(3)查找信息学院非汉族同学的学号、姓名、性别及民族。
∏studentNo,studentName,sex(σnation!=’汉族’⋀institute=’信息学院’(Student⨝Class))
(4)查找2016-2017学年第二学期(16172)开出课程的编号、名称和学分。
∏courseNo,courseName,creditHour(σterm=’16172’(Course⨝Score))
(5)查找选修了“操作系统”的学生学号、成绩及姓名。
∏studentNo,score,studentName(σcourseName=’操作系统’(Student⨝Course⨝Score))
(6)查找班级名称为“会计学15(3)班”的学生在2015-2016学年第一学期(15161)选课情况,要求显示学生姓名、课程号、课程名称和成绩。
∏studentName,courseNo,courseName,score(σclassName=’会计学15(3)班’⋀term=’15161’(Class⨝Student⨝Score⨝Course))
(7)查找至少选修了一门其直接先修课编号CS012的课程的学生学号和姓名。
∏studentNo,studentName(σpriorCourse=’CS012’(Student⨝Score⨝Course))
(8)查找选修了2016-2017学年第一学期(16171)开出的全部课程的学生学号和姓名。
∏studentNo,studentName((Student⨝Score)÷∏courseNo(σterm=’16171’(Score)))
(9)查找至少选修了学号为1503010的学生所选课程的学生学号和姓名。
∏studentNo,studentName((Student⨝Score)÷∏courseNo(σstudentNo=’1503010’(Score)))