MySQL表问题。 [多部分问题]

时间:2010-08-19 17:48:43

标签: mysql

我想知道我是否允许我的用户选择他们的帖子将显示哪些类别,他们可以从一个到多个选择多个类别。

  • 如何在数据库中存储类别ID值?
  • 我应该将每个值组合在一起,例如45,12,45,78,还是应该一次存储一个值?
  • 我的桌子结构怎么样?
  • 或者我应该将它添加到现有表格中吗?

2 个答案:

答案 0 :(得分:0)

您描述的结构实际上是 many-to-many relationship (用于所有标记结构等)。

Entries Table
+----+-------+------+
| id | title | text |
+----+-------+------+

Entries-to-Tags Table
+----------+--------+
| entry_id | tag_id |
+----------+--------+

Tags Table
+----+-----+
| id | tag |
+----+-----+

检查标记中所有条目的典型SQL调用是

SELECT *
FROM tags_table as tg
LEFT JOIN entries_to_tags AS entg ON tg.id = entg.tag_id
LEFT JOIN entries AS en ON entg.entry_id = en.id
WHERE tg.tag = 'my tag'

检查条目中标记的典型SQL调用是

SELECT *
FROM entries AS en
LEFT JOIN entries_to_tags AS entg ON en.id = entg.entry_id 
LEFT JOIN tags_table AS tg ON entg.tag_id = tg.id
WHERE en.title = 'my article title'

答案 1 :(得分:0)

设计数据库表的最佳方法是尽可能将它们分开。在这种情况下,我将使用3个表来设计它:Post,Category和PostCategory。 Post将是用户创建的每个帖子的表格。 类别应该是查找表。 PostCategory是存储每个帖子类别的表。

  • 帖子是一对多的PostCategory
  • 类别是一对多PostCategory
  • PostCategory具有PostId和CategoryId主要ID