2009-10-27 56 views
2

我正在創建一個在線博客網站,並且對於每篇博文,我希望讓用戶能夠創建/編輯/刪除他們自己的類別,以便他們可以對他們的帖子進行分類。自定義類別的SQL數據庫結構

什麼通常被認爲是用戶生成類別的良好數據庫設計?

這是我提出的表格設計。 (有沒有這種類型的數據庫的名字嗎?)

USER_TABLE
USER_ID(PK),USER_NAME

CATEGORY_TABLE
CATEGORY_ID(PK),CATEGORY_NAME

USER_CATEGORIES
USER_ID(FK) category_id(fk)

感謝您的幫助。我相信有一個關於這個帖子的帖子,但我無法找到它。如果這是一個騙局,請讓我知道,我會刪除這個問題。

+1

我很好奇......當cou可以簡單地將category_name放到USER_CATEGORIES中時,爲什麼要拆分USER_CATEGORIES和CATEGORY_TABLE? – ty812 2009-10-27 00:13:07

+0

@Martin ...我相信,如果2個用戶具有相同的類別名稱,它不會成爲2個單獨的行,並且這樣它可以引用相同的類別名稱 – 2009-10-27 00:16:39

+0

@Martin:因爲您的建議只支持單個用戶類別映射。 – 2009-10-27 00:17:02

回答

5

這是一個多對多的關係。這將允許每個用戶潛在地擁有許多不同的類別,並且每個類別可能具有許多不同的用戶。這似乎是你正在嘗試做的一個有用的模型。

2

我認爲你的模式看起來不錯。您將類別標籤保留在一張表中以避免重複,然後將其ID分配給用戶。

1

如果你想要做的是讓每個用戶擁有「私人」類別,那麼這很好。 另一方面,如果類別應該是公共的(就像stackoverflow上的標籤),那麼你可以考慮另一種選擇 - 不存儲用戶< - >類別關係,而是將字段use_counter添加到類別表中,並使用觸發器在類別正在被使用(博客條目被分類)或當它被「釋放」時遞減(博客條目被刪除/其類別被刪除)。當use_counter達到0時 - 刪除類別。

+0

嘿kubal感謝您的信息。我從來沒有想過如此實施它。 – justinl 2009-10-27 17:57:51