2012-10-24 36 views
0

enter image description here在這種模式設計中,我有參照完整性嗎?

我很擔心,我有涉及VersionsVersionQuestions表數據完整性問題。例如,如果DefMasterIDVersions表中更改,它將指向一個不同的主定義,但Questions中的子記錄仍將指向MasterQuestionsPool中屬於原始調查主數據的記錄。理想情況下,限制會阻止這一點,但我認爲他們不會。

我對這個設計有完整性嗎?如果不是,確保完整性的適當途徑是什麼?

上面的架構是基於以下要求:

  1. 我們需要有多個調查掌握的定義,代表顯著不同的調查。

  2. 主調查定義需要一個或多個版本,這些版本代表了很小的差異。

  3. 每個調查大師都有一組問題,這些問題在其版本之間共享。個別版本通常不會使用所有問題。這提供了在所有版本的調查主數據中比較答案的能力。

回答

0

我想你是對的關心。

一種方法是將標識符(稱爲MasterQuestionInstanceLabel)添加到給定池中唯一的MasterQuestionsPool(儘管不一定在池中)。換句話說,問題1與主人1的配對可能被標記爲問題「A」(對於主人1),但主人2可能具有不同的問題「A」。然後,在MasterVersionQuestions表中,使用該標籤,而不是實際的問題ID。

我認爲這適合現實一點。這個想法是,你爲給定的主人定義一個問題庫 - 問題A,B,C,D,E,F(它們是實際ID 1,5,102,15和754的標籤),然後說版本1使用A,B和E,而版本2使用A,B,C和F(而不是在版本表中引用實際的ID)。

這樣版本表並不是說「這個版本中有哪些問題」,而是說「我的主人的哪個池實例在這個版本中」。