我正在创建一个网站(PHP + MySQL为基础)与列表事件。
我目前有事件存储在一个名为'events'的数据库中。
我希望每个事件都有一个标签列表。我不确定我是否应该……
- 将所有标签作为一个值存储在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的标记。