【发布时间】:2014-01-25 13:58:09
【问题描述】:
我正在为私人网站开发 CMS 系统(主要是作为学习练习)。 Atm 我有三个表:一个用于文章,一个用于标签和一个连接表,以便每篇文章可以有多个标签。
我遇到问题的表由三列组成 -
article_tags: id (auto_increment), article_id, tag_id
我的问题源于一篇文章可以出现任意次数,标签也可以出现任意次数,但是两者的给定组合应该只出现一次 - 也就是说,每篇文章应该只有对任何单个标签的引用。目前可以在 id 不同的地方插入“重复”行,但 article_id 和 tag_id 的组合是相同的:
id , article_id, tag_id
1 1 1
2 1 2
3 2 1
4 1 1 <- this is wrong
我可以在 PHP 代码中检查包含此组合的记录,但如果可能的话,我更愿意在 sql 中执行此操作(如果不是,或者不合需要,那么我将使用 PHP 执行此操作)。由于 id 不同并且无法设置唯一列,因此 INSERT IGNORE 和 ON DUPLICATE 等操作不起作用。
我对 mySQL 很陌生,所以如果我在做一些愚蠢的事情,请指出正确的方向。
谢谢
【问题讨论】:
标签: php mysql sql database-schema