为每个事件构建标记列表


Structuring a list of tags for each event

我正在创建一个网站(PHP + MySQL为基础)与列表事件。

我目前有事件存储在一个名为'events'的数据库中。

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

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

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

    还有更好的我没想到的吗?

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

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

它看起来像这样:

事件表:

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

标记表:

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

Event_tag表:

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

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