假设案件编号唯一标识一个案件,且立案日期小于等于结案日期。请将如下创建案件关系的SQL语句的空缺部分补充完整。
CREATE TABLE案件(
案件编号CHAR(6)
,
案件类型VARCHAR(10),
案件描述VARCHAR(200),
立案日期DATE,
被告VARCHAR(6)REFERENCES被告(被告编号),
律师VARCHAR(6)REFERENCES律师(律师编号),
主审法官VARCHAR(6)
状态VARCHAR(6)
结案日期DATE,
结案摘要VARCHAR(200),
(D)
;
参考答案:CHECK(立案日期<=结案日期)
解析:本题考查SQL语言,是比较传统的题目,要求考生细心分析题目中所描述的内容。
本问题考查SQL中的数据定义语言DDL和完整性约束。完整性约束包括三类:实体完整性、参照完整性和用户定义的完整性。实体完整性约束规定关系的主属性不能取空值,关系模型中以主码作为唯一性标识;参照完整性约束规定若属性(或属性组)A是关系R上的主码,B是关系S上的外码,A与B相对应(来自相同的域),则B取值为空或者来自于R上的某个A的值;用户定义的完整性约束是针对具体的数据库应用而定义的,它反映该应用所涉及的数据必须满足用户定义的语义要求。
(a)考查实体完整性约束,案件编号是案件关系模式的主码,用关键字PRIMARY KEY或者NOT NULL UNIOUE表示。
(b)考查参照完整性约束,主审法官属性参照职工关系模式中的职工编号属性,由于这两个属性名称不同,因此用REFERENCES职工(职工编号)表示,此处不能省略职工编号。
(c)、(d)考查用户定义的完整性约束。(c)是在状态属性上定义列级约束,用CHECK VALUES IN(’待处理’,’审理中’,’结案’,’撤销’)表示。(d)在立案日期和结案日期上定义约束,用CHECK(立案日期<=结案日期)表示。