4
我打算用一個標籤發佈一個網站。標籤可以達到五個標籤,如在stackoverflow.com。我如何製作一個標籤系統像stackoverflow.com?
任何人都可以告訴標籤系統的StackOverflow嗎?帶有帖子和標籤的關係數據庫系統。
我應該在張貼表中添加一列還是應該爲它創建單獨的標籤表?標籤可以用空格或逗號分隔。
我打算用一個標籤發佈一個網站。標籤可以達到五個標籤,如在stackoverflow.com。我如何製作一個標籤系統像stackoverflow.com?
任何人都可以告訴標籤系統的StackOverflow嗎?帶有帖子和標籤的關係數據庫系統。
我應該在張貼表中添加一列還是應該爲它創建單獨的標籤表?標籤可以用空格或逗號分隔。
絕對創建一個包含在列表可用標籤的表。
你也絕對應該創建一個包含獨立應用的代碼表:
你想,因爲使用了非規範化的設計(增加5列)使用一個標準化的設計將打破,如果你想改變你的業務規則,讓更少或更多的標籤。另外,如果您還有其他信息需要保存,例如何時添加標籤以及由誰發佈,它不會對您有所幫助。
編輯:DDL
在OP的要求:
CREATE TABLE post (
id INTEGER IDENTITY
, title VARCHAR(1000) NOT NULL
, added_date DATETIME NOT NULL
, posting_user_id INTEGER NOT NULL
, ... (and so forth) ...
, PRIMARY KEY (id)
, FOREIGN KEY (posting_user_id) REFERENCES posting_user (id)
);
CREATE TABLE tag (
id INTEGER IDENTITY
, term VARCHAR(20) NOT NULL
, description VARCHAR(1000) NULL
, ... (and so forth) ....
, PRIMARY KEY (id)
);
CREATE TABLE applied_tag (
post_id INTEGER NOT NULL
, tag_id INTEGER NOT NULL
, display_order INTEGER NOT NULL
, tagging_user INTEGER NOT NULL
, applied_date DATETIME NOT NULL
, ... (anything else you want)....
, PRIMARY KEY (post_id, tag_id_, display_order) -- Or use an auto-increment, but this is unique.
, FOREIGN KEY (post_id) REFERENCES post (id)
, FOREIGN KEY (tag_id) REFERENCES tag (id)
, FOREIGN KEY (tagging_user) REFERENCES posting_user (id)
);
你能後關係型數據庫schemal。這將有助於理解。 – shibly 2012-02-11 18:04:55