2016-07-06 35 views
-1

我正在寫這個Web應用程序的帖子,鏈接。用戶將abe爲這些鏈接/帖子添加類別。隨着網站規模的擴大,這些類別的數量將會增加。我如何在SQL模式中實現這個?我應該使用哪種數據類型?並且是TEXT數據類型存儲用戶帖子的好方法?我如何設計SQL中類別的模式?

+0

你在用什麼語言編寫你的應用程序?我的建議是你對'標籤'做一些研究,因爲我知道你在設置等方面做了很多工作......而這正是你設置的。 – MageeWorld

+0

「TEXT」或「VARCHAR」應該適用於帖子(在MySQL 5.0及更高版本中,最大限制爲65KB)。 –

+0

我要用golang。 –

回答

1

顯然,第一個你應該做的事情是衝浪GitHub和其他已經做到這一點的工作。 (也許你可以簡單地使用的東西,已經被寫入!)

從理論上講:「鏈接/帖」和「類」之間的關係被稱爲許多一對多。(A鏈路/柱可具有「一對多」的屬性,以及一個給定的屬性可以被分配給「多」鏈接/帖)。因此,使用中間表,如下面的簡單的例子:

CREATE TABLE LINKS_POSTS (LINK_ID INTEGER, CONTENT TEXT) PRIMARY KEY (LINK_ID); 

CREATE TABLE ATTRIBS (ATTRIB_ID INTEGER, ATTRIB_NAME TEXT) PRIMARY KEY (ATTRIB_ID); 

現在的魔術......

CREATE TABLE LINKS_POSTS_ATTRIBS (LPA_ID INTEGER, LINK_ID INTEGER NOT NULL, 
ATTRIB_ID INTEGER NOT NULL) PRIMARY KEY (LPA_ID) 
FOREIGN KEY (LINK_ID) REFERENCES LINKS_POSTS (LINK_ID) 
FOREIGN KEY (ATTRIB_ID) REFERENCES ATTRIBS (ATTRIB_ID); 

CREATE UNIQUE INDEX FOOBAR ON LINKS_POSTS_ATTRIBS(LINK_ID, ATTRIB_ID); 

...(或類似的東西!)我在寫這從我的頭頂,所以有可能是tpyos或sintax erurs。 ;-)

當給定的帖子具有特定的屬性時,LINKS_POSTS_ATTRIBS表中的條目表示它。 FOREIGN KEY屬性規定值必須與外表中的現有條目相匹配。 UNIQUE INDEX避免重複。

應該根據需要使用進一步的「參照完整性」約束來規定,例如,如果任何LINKS_POSTS_ATTRIBS條目引用它,屬性行可能不會被刪除。