我有一個數據庫,我已經評論,投票,畫廊,圖像等... 例如,畫廊和圖像可以使用相同的形式進行評論,然後我將它存儲在一個表中,評論。你如何存儲變量字段?
我想知道如何將這種類型的信息存儲在評論表中? 使用ENUM類型,針對類型表的外鍵,插入時硬編碼等。?
我有一個數據庫,我已經評論,投票,畫廊,圖像等... 例如,畫廊和圖像可以使用相同的形式進行評論,然後我將它存儲在一個表中,評論。你如何存儲變量字段?
我想知道如何將這種類型的信息存儲在評論表中? 使用ENUM類型,針對類型表的外鍵,插入時硬編碼等。?
針對類型表的外鍵會得到我的投票。事情是這樣的:
不錯!是的,這就是我在選項#3中獲得的。在這一點上,CommentType肯定是可選的;我不認爲這真的提供了很多查詢支持。除非您認爲評論類型與圖庫/圖片不相交。 – 2010-10-07 18:49:36
謝謝你的回答,這意味着如果我需要添加一個新的資源,我需要添加一個引用資源和註釋的新交集表是值得維護的嗎? – John 2010-10-08 09:17:38
@John:基於有限的信息,這裏有另一個想法。如果圖庫和圖像之類的項目之間存在某些共同點,那麼也許可以創建一個主「資源」表和一個基於該主人的註釋的單個交點。然後,您可以創建「圖庫」和「圖像」作爲主「資源」的子表,以保存每種類型都獨有的屬性。 – 2010-10-08 13:17:29
可能有幾種方法可以在保留外鍵的同時進行設計。
第一種是基本上有每種類型的評論表;讓他們分開。對於每個評論,根據表格,對父庫或圖像有一個外鍵。
其次是有一個表(說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好得多。
如果註釋將與父記錄你真的需要知道在評論層次類型? – Roadie57 2010-10-07 18:22:28
@ Roadie57:就個人而言,我仍然想在評論層面知道。它會回答以下問題:「我們在所有畫廊收到了多少評論?」簡單得多。 – 2010-10-07 18:33:40