我有以下表格;將標籤插入表格的最有效方法是什麼
CREATE TABLE IF NOT EXISTS `tags` (
`tag_id` int(11) NOT NULL auto_increment,
`tag_text` varchar(255) NOT NULL,
PRIMARY KEY (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_display_name` varchar(128) default NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
CREATE TABLE IF NOT EXISTS `user_post_tag` (
`upt_id` int(11) NOT NULL auto_increment,
`upt_user_id` int(11) NOT NULL,
`upt_post_id` int(11) NOT NULL,
`upt_tag_id` int(11) NOT NULL,
PRIMARY KEY (`upt_id`),
KEY `upt_user_id` (`upt_user_id`),
KEY `upt_post_id` (`upt_post_id`),
KEY `upt_tag_id` (`upt_tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `view_post` (
`post_id` int(11)
,`post_url` varchar(255)
,`post_text` text
,`post_title` varchar(255)
,`post_date` datetime
,`user_id` int(11)
,`user_display_name` varchar(128)
);
這個想法是,我想使用最有效的方式來保存標籤,爲一個職位和用戶。簡單地說,一旦我添加一篇文章,我會在帖子和用戶身上傳遞一些標籤。稍後我希望能夠爲每個用戶和帖子計數標籤。與Stack Overflow非常相似。
我想'tag_text'應該是唯一的嗎?如果我每次提交一個新帖子來檢查'標籤'表以檢查標籤是否已經存在,並且如果是,則返回'tag_id',以便我可以將其插入'user_post_tag'表中。
這可能是一種解決這類問題的不好方法。
歡迎您提出任何建議。
完成後,你會以開放源碼的形式發佈嗎?與「與堆棧溢出非常相似」 – ant 2010-01-05 22:37:58