结构推理 对于电影、演员和电影主演关系: Movie(title,year,length,inColor,studioName) Actor(name,address,gender,birthYear) Acts(movieTitle,movieYear,actorName) 写出下列基于元组的检验(CHECK)约束: (1)1939年以前制作的电影不会是彩色的; (2)演员不会出现在他们出生之前制作的电影中。 如果约束涉及到两个关系,则应把约束放在两个关系中,从而保证无论哪个关系发生变化都将插入和修改操作的约束进行检验。
【正确答案】(1)CREATE TABLE Movie( … CHECK(NOT color OR year>=1939) ); (2)CREATE TABLE Actor ( … birthYear INT, CHECK(name NOT IN(SELECT actorName FROM Acts) OR birthYear<ALL(SELECT movieYear FROM Acts WHERE actorName=name)) ); CREATE TABLE Acts( … CHECK(actorName NOT IN(SELECT name FROM Actor) OR movieYear>(SELECT birthYear FROM Actor WHERE name=actorName)) );
【答案解析】