2010-10-07 78 views
2

我有一個數據庫,我已經評論,投票,畫廊,圖像等... 例如,畫廊和圖像可以使用相同的形式進行評論,然後我將它存儲在一個表中,評論。你如何存儲變量字段?

我想知道如何將這種類型的信息存儲在評論表中? 使用ENUM類型,針對類型表的外鍵,插入時硬編碼等。?

+1

如果註釋將與父記錄你真的需要知道在評論層次類型? – Roadie57 2010-10-07 18:22:28

+0

@ Roadie57:就個人而言,我仍然想在評論層面知道。它會回答以下問題:「我們在所有畫廊收到了多少評論?」簡單得多。 – 2010-10-07 18:33:40

回答

2

針對類型表的外鍵會得到我的投票。事情是這樣的:

alt text

+0

不錯!是的,這就是我在選項#3中獲得的。在這一點上,CommentType肯定是可選的;我不認爲這真的提供了很多查詢支持。除非您認爲評論類型與圖庫/圖片不相交。 – 2010-10-07 18:49:36

+0

謝謝你的回答,這意味着如果我需要添加一個新的資源,我需要添加一個引用資源和註釋的新交集表是值得維護的嗎? – John 2010-10-08 09:17:38

+0

@John:基於有限的信息,這裏有另一個想法。如果圖庫和圖像之類的項目之間存在某些共同點,那麼也許可以創建一個主「資源」表和一個基於該主人的註釋的單個交點。然後,您可以創建「圖庫」和「圖像」作爲主「資源」的子表,以保存每種類型都獨有的屬性。 – 2010-10-08 13:17:29

2

可能有幾種方法可以在保留外鍵的同時進行設計。

第一種是基本上有每種類型的評論表;讓他們分開。對於每個評論,根據表格,對父庫或圖像有一個外鍵。

其次是有一個表(說commentables),其中包含任何可評論的常見數據。每個圖庫或圖像都有一個外鍵,用於評論中唯一對應的行。評論表中的每一行都有一個可評論的外鍵,以及評論,日期等的文本。

因爲您最終會想要集合的元數據作爲一個整體的意見...例如指定是否禁用註釋,僅爲朋友啓用,還是爲每個人啓用。

編輯選項3是像選項1,但代替具有用於每個commentable型全獨立的評論表,只是對每個commentable類型單獨表。

|comments| |gallery_comments| |image_comments | 
--------  ----------------  --------------- 
|id (pk)| |comment_id (fk)| |comment_id (fk)| 
|text | |gallery_id (fk)| |image_id (fk)| 
|date |  ----------------  --------------- 
|author | 
-------- 

在我看來,比選項1好得多。