0
我有一些复杂的约束条件和一些跨越多个表。复制列(主键的一部分)以执行约束还是使用存储过程更好?复制列来强制约束?
下面是一个例子:
create table responses
(
resp_id int PRIMARY KEY
participant_id int,
session_id int,
form_id int,
section_id int,
sec_target_id int,
quest_id int,
input_method_id int,
foreign key(form_id, section_id) references form_sections(form_id, section_id),
foreign key(section_id, quest_id) references questions(section_id, quest_id),
foreign key(session_id, form_id) references session_forms(session_id, form_id),
unique(resp_id, session_id)
);
create table user_responses
(
resp_id int PRIMARY KEY
participant_id int,
session_id int,
instructor_id int,
foreign key(resp_id, session_id) references responses(resp_id, session_id),
foreign key(session_id, instructor_id) references session_instructors(session_id, instructor_id)
);
可以有两种类型的响应:匿名或用户。用户响应中有一位讲师与每个会话相关联。 在user_responses表中,我从响应表中复制了session_id列,以便我可以强制将instructor_id实际分配给选定会话的约束。
像这样有许多复杂的约束和一些未来可能导致DDL变更的附加要求,是通过SP还是上述方法强制执行约束更好?
可以修改响应类型吗? user_response可以成为匿名用户还是匿名用户? – 2012-08-09 18:34:01