【发布时间】:2010-01-05 22:27:38
【问题描述】:
我有以下表格;
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' 表中是否有效.
这可能是解决此类问题的坏方法吗?
欢迎所有建议。
【问题讨论】:
-
你会在完成后将它作为开源发布吗?带有“与 Stack Overflow 非常相似的东西”