我工作的一个网站,用户可以使用此表结构发表文章:mysql的“喜欢”结构表
CREATE TABLE IF NOT EXISTS `articles` (
`id_articles` int(10) unsigned NOT NULL AUTO_INCREMENT,
`id_users` int(10) unsigned NOT NULL,
`articles` text NOT NULL,
PRIMARY KEY (`id_articles`),
UNIQUE KEY `id_articles` (`id_articles`),
KEY `id_users` (`id_users`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
每个用户可以“喜欢”的文章。
是,下面的正确的方式来创建一个“如表”:
CREATE TABLE IF NOT EXISTS `articles_likes` (
`id_articles` int(10) unsigned NOT NULL,
`id_users` int(10) unsigned NOT NULL,
KEY `id_articles` (`id_articles`,`id_users`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
是看起来不错,你会像 'WHERE id_user = X',查询最佳性能..但是我会用'id_articles'和'id_users'来创建一个复合主键,这样你就只能像这样一篇文章一样。 – bitWorking 2013-02-19 14:33:40
在添加'like'之前,我还可以检查id_articles和id_users是否在这个表格中。 – Chris 2013-02-19 14:58:28
是的,你可以......但你永远不知道数据是如何进入db不久(web服务等)的,而且使用主键可以确保永远不会有双重入口 – bitWorking 2013-02-19 15:02:51