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