【发布时间】:2012-09-01 09:01:29
【问题描述】:
我有这样的桌子:
post:
+----------------+-----------+
| article_id | tags |
+----------------+-----------+
| 1 | x1,x2,x3|
| 2 | x1,x4,x5 |
+----------------+-----------+
我想做的是对其进行规范化,所以我再创建 2 个表:
tags:
+----------------+-----------+
| tag_id | tag_name |
+----------------+-----------+
| 1 | x1 |
| 2 | x2 |
| 3 | x3 |
+----------------+-----------+
post_tag:
+----------------+-----------+
| id_post | id_tag |
+----------------+-----------+
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
+----------------+-----------+
我已经将所有标签从 post 表导出到 tags 表,现在每个标签在 tags 表中都有自己的 id,但是当我在考虑如何使用 post_tag 表时我很困惑?
编辑:questin 是如何填充 post_tag 表,查询会是什么样子?
这样尝试过
$sql=mysql_query("SELECT * FROM post");
while($row=mysql_fetch_array($sql)) {
$article_id=$row['article_id'];
$all_tags =$row['tags'];
$tags= explode(",",$all_tags);
foreach($all_tags as $tag) {
$sql2=mysql_query("SELECT * FROM tags WHERE tag_name = '$tag'");
while($row=mysql_fetch_array($sql2)) { $tag_id=$row['tag_id']; $q = "INSERT INTO post_tag (id_post, id_tag) VALUE ('$article_id', $tag_id')";
$r = mysql_query($q);
}
}
}
但它没有写完整的 post_tag 表
【问题讨论】:
-
这看起来不错..你在困惑什么?
-
你有什么问题? post_tag 表很好
-
您所拥有的是帖子和标签之间的 n 到 n 关系。您的 post_tag 表条目将充当一个标签和一篇文章之间的链接。像这样,您将一篇文章链接到 n 个标签,并将一个标签链接到 n 个文章。
-
@Eregrith:更常见的是使用 M 和 N,不同的字母
-
我的意思是每边的关系都是
0,n。
标签: php mysql database normalization