我有以下表格;将标签插入表格的最有效方法是什么
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