如何在MYSQL数据库中存储列表

时间:2020-05-22 14:07:31

标签: mysql sql

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

它们如下

用户

user_id文字

session_id文字

last_login日期时间

会话

session_id文字

用户文字

类别文字

类别

category_id int

类别名称文字


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

有人可以帮我更好的方法吗?

谢谢。


编辑:

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

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

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

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

category_id将是一个整数,例如32

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

categories将是category_id的列表,例如32、42、15

问题在于,我认为不建议像用户或类别那样存储列表,因此我想知道还应该怎么做。

1 个答案:

答案 0 :(得分:0)

如果我答对了,那么您可以参加一个可以与多个类别相匹配的会议,对吗? 然后创建一个附加表,该表存储会话的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概念)