实践习题
2.1 考虑图2-14所示关系数据库。这些关系上适当的主码是什么?
Ans: 如图2.1中带下划线的码。(emmmm,发现答案不是很靠谱。比如员工的名字有重名的现象,显然name不能作为主码。但其实name+street+city也可能会有碰巧一样的情况。所以严格来说,这几张表的结构不是很好,项目中最好还是用id作为主键会比较好。)
2.2 考虑从instructor的dept_name属性到department关系的外码约束,给出对这些关系的插入和删除示例,使得他们破坏外码约束。
Ans: a. 往instuctor表中插入一个元组:(10111, Ostrom, Economucs, 110,000),而department表中没有Economics这个院系。这会破坏外码约束。
b. 从depaerment表中删除一个元组:(Bioology, Watson, 90000), 而至少有一个学生或者教员元组的depart_name是Biology。这会破坏外码约束。
2.3 考虑time_slot关系。假设一个特定的时间段可以在一周之内出现多次,解释为什么day和start_time是该关系主码的一部分,而end_time却不是。
Ans: day和start_time属性是主码的一部分是因为很有可能在不同的日期甚至是同一天内多次遇到一个特定的类,而end_time不是是因为在特定时间开始的类不可能多次结束。(啥意思呢?表在P24下面