首页 > 解决方案 > 如何在MYSQL数据库中存储列表

问题描述

我正在创建一个有几张桌子的游戏。

它们如下

用户

user_id 文本

session_id 文本

last_login 日期时间

会话

session_id 文本

用户文本

类别文本

类别

category_id 整数

类别名称文本


我的主要问题是如何将类别列存储在会话表中。每个会话是一个游戏的实例,类别是用户选择的游戏类别。我想我可以只列出该会话中的 category_ids 吗?我在存储会话中的用户时遇到了同样的问题。

有人可以帮助我更好地做到这一点吗?

谢谢。


编辑:

user_id 将是一个 uuid。例如“bcb4a209-3d90-4fe4-b8ed-594976a7b836”

last_login 只是他们最后一次登录的时间,所以它是日期和时间

session_id 将是一个 8 个字符的字母数字 ID,例如“9KAN4P2X”

就目前而言,我对用户的想法是 user_ids 列表,例如“bcb4a209-3d90-4fe4-b8ed-594976a7b836, 5a8b0148-f02b-4372-9ff7-781546b5c62d”

category_id 将是一个整数,例如 32

category_name 只是一个标识类别的字符串,例如“食物”

类别将是类别 ID 的列表,例如 32、42、15

问题是我认为不建议像我为用户和类别建议的那样存储列表,所以我想知道我应该怎么做。

标签: mysqlsql

解决方案


如果我没听错的话,你有一个可以匹配多个类别的会话,对吗?然后创建一个额外的表来存储会话的 id 和类别的 id。然后对于相同的会话 ID,您将存储与您拥有的类别一样多的行。然后,您可以使用 JOIN 将会话详细信息与类别详细信息进行匹配。

SESSION_CATEGORY
id    session_id    category_id
-------------------------------
1     1             1
2     1             2
3     1             3

这将是表格的样子:对于会话 1,您将分配类别 1,2 和 3

然后做类似的事情

SELECT * FROM session_category 
    JOIN sessions on session_id=session.id
    JOIN category ON category_id=category.id

(根据您的数据细化查询,只是一个草稿向您解释 JOIN 概念)


推荐阅读