【发布时间】:2013-02-04 06:30:03
【问题描述】:
我正在开发一个网站,用户可以在该网站上发布具有此表结构的文章:
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 ;
每个用户都可以“喜欢”文章。
这是创建“like table”的正确方法吗:
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;
【问题讨论】:
-
是的看起来不错..但我会用
id_articles和id_users创建一个复合主键,这样你就只能喜欢同一篇文章。 -
在添加“like”之前,我还可以检查 id_articles 和 id_users 是否在此表中。
-
是的,你可以......但你永远不知道数据是如何很快或稍后进入数据库的(网络服务等)。使用主键,您可以确保永远不会出现重复条目。
-
@redreggae:好的,谢谢
标签: php mysql database create-table