2011-12-11 11 views
2

タグシステムに最適なモデルは何ですか?例えば、トピックがNタグ、 スレッドに関連している可能性があります、私はテーブルを作成し、テーブルとこのテーブルのタグは、ID of the postsとタグを持っていた場合、このタグを追加する別のトピックとして多くのレコード、これを避けるための最良の方法は何ですか?タグシステムのベストモデル

enter image description here


@Quentinは、問題が続く、それはテーブルpost_tagsのレコードを繰り返すことになります

CREATE TABLE IF NOT EXISTS `posts` (
    `pid` bigint(22) NOT NULL AUTO_INCREMENT, 
    `author` varchar(25) NOT NULL, 
    `content` mediumtext NOT NULL, 
    PRIMARY KEY (`pid`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; 

INSERT INTO `posts` (`pid`, `author`, `content`) VALUES 
(1, 'Andrey Knupp Vital', 'Hello World !'); 

CREATE TABLE IF NOT EXISTS `tagged` (
    `pid` bigint(22) NOT NULL, 
    `tid` bigint(22) NOT NULL, 
    PRIMARY KEY (`pid`,`tid`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

INSERT INTO `tagged` (`pid`, `tid`) VALUES 
(1, 1), 
(1, 2); 

CREATE TABLE IF NOT EXISTS `tags` (
    `tid` bigint(22) NOT NULL AUTO_INCREMENT, 
    `tag` varchar(15) NOT NULL, 
    PRIMARY KEY (`tid`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

INSERT INTO `tags` (`tid`, `tag`) VALUES 
(1, 'main'), 
(2, 'hello'); 
+1

複数の*既存の*タグシステムがあります - 私は名前を忘れてしまった(でも、私はPHPを使用してください) - および要件に応じて、この問題にアプローチする*少なくとも3つの*異なる方法が。デザインの観点からは、他のデザインよりも純粋ではないものもあります。 –

+1

http://stackoverflow.com/questions/20856/how-do-you-recommend-implementing-tags-or-tagging、http://stackoverflow.com/questions/1329887/how-to-model-tags-inデータベース、http://stackoverflow.com/questions/3539744/best-way-to-store-tags-in-a-database –

答えて

7

使用junction table

それは、少なくとも2つの列を持つことになります。 "Posts"と "Tags"の間にプライマリキーが定義されます(データベースで許可されている場合はプライマリキーの3番目の列)。

関連する問題