【问题标题】:Structuring a list of tags for each event为每个事件构建标签列表
【发布时间】:2011-08-13 21:31:12
【问题描述】:

我正在创建一个包含事件列表的网站(基于 PHP + MySQL)。

我目前将事件存储在名为“事件”的数据库中。

我希望每个事件都有一个标签列表。我不确定我是否应该...

  1. 将所有标签作为一个值存储在 MySQL 中,排序如下...(tag1,tag2,tag3)

  1. 创建一个名为 event_tags 的单独数据库,并为每个标签创建一行。然后该标签将包含它所引用的事件的 event_id。

或者

  1. 我还没有想到更好的东西?

【问题讨论】:

    标签: php mysql database-design


    【解决方案1】:

    为什么不为这些标签创建单独的表格,这样当您更改标签名称时,您就不需要更改所有行中的所有值。

    并使用另一个表将事件表与标签表链接起来。所以基本上你有这些表:事件、标签、事件标签(这里你需要将事件和标签列作为唯一键)

    看起来像这样:

    事件表:

    |ID|Event |
    |1 |first |
    |2 |second|
    

    标签表:

    |ID|Tag|
    |1 |c# |
    |2 |c++|
    

    Event_tag 表:

    |Event|Tag|
    |1    |1  |
    |1    |2  |
    |2    |2  |
    

    【讨论】:

    • 所以如果我有 Event1 & Event2。这两个事件都有标签“音乐”。那么我需要标签表中有 2 行吗?
    • 看看我编辑的帖子。它将具有相应事件和标签的 id。在我的示例中,第一个事件将有 c# 和 c++ 标签,第二个事件将只有 c++
    • 看这个教程,Many to Many Relation
    【解决方案2】:

    我认为这取决于你。如果你认为你的标签会被重复,你最好创建一个标签表,然后使用一个外部表来连接它们。否则,您可以简单地创建引用事件 ID 的标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-28
      相关资源
      最近更新 更多