2012-02-26 59 views
0

我有這個person表作爲超級父母,提到超級父母或作爲一個單獨的實體?

id 
firstname 
lastname 
email 
telephone 
... 
... 

user表作爲一個孩子

id 
person_id (FK) 
password 
username 
screenname 
... 
... 

他們必須1:1關係,因爲用戶不能重複兩次。所以人行中的電子郵件不得重複兩次。

然後,我有這個message表,從任何存儲的消息,

id 
firstname 
lastname 
email 
telephone 
subject 
content 
... 
... 

,但你可以看到,firstname,lastname, email,telephonemessage表複製

所以我想將這個問題交給person表像下面這樣,

id 
person_id 
subject 
content 
... 

但後來它看起來不正確,與相同的電子郵件,名稱的人,等可以發送消息給我,多次他們想要的。所以他/她提供的細節可以重複。

所以我應該將message作爲person的孩子作爲父母或他們應該是單獨的實體嗎?

或任何更好的建議來解決這個問題。

+0

你是什麼意思「但是它看起來並不正確,因爲具有相同電子郵件,姓名等的人可以多次發送消息給他,因此他/她提供的細節可以重複。「? – chroipahtz 2012-02-26 03:47:44

回答

0

你必須決定你想要你的系統做什麼。您是否希望舊郵件反映某人的新名稱,或者是否希望每封郵件都具有創建郵件時生效的名稱(以及其他詳細信息)?

如果您希望系統只反映當前的個人詳細信息,那麼您的所有消息需要是PERSON的外鍵。

另一方面,如果您希望您的郵件始終以相同的方式顯示,即使發送郵件的人更改了姓名,電子郵件地址或其他詳細信息,您也必須找到一種方法來保留歷史信息。兩個顯而易見的選擇是:(i)將個人詳細信息非規範化到消息中 - 就像在你當前的設計中一樣;或者(ii)將個人詳細信息與MESSAGE的每個組合的快照保存在PERSON的歷史表中,一個外鍵。

相關問題