mysql - 如何在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
问题是我认为不建议像我为用户和类别建议的那样存储列表,所以我想知道我应该怎么做。
解决方案
如果我没听错的话,你有一个可以匹配多个类别的会话,对吗?然后创建一个额外的表来存储会话的 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 概念)
推荐阅读
- c++ - 在 C++ 中,是否可以使用指针魔法同时修改多个结构对象?
- mongodb - 在 MongoDB 中使用 $or 进行更新时出现问题,错误:更新操作文档必须包含原子操作符
- php - 将剩余物品放在新行中
- reactjs - 在带有 react-router 的 react-static 中,如何访问路由模板中的 props.location?
- laravel - 如何从全局范围内获取模型 ID
- sql-server - 如何从 SQL Server 2019 的历史记录表中排除计算列?
- php - 一个简单的问题:切换到静态html模式并返回,或者在不同平台停留在执行模式
- java - Spring Boot Job 使用延迟无法正常工作
- sonarqube - SonarQube 社区版卡在加载中
- reactjs - fontFamily 不是系统字体,没有通过 Font.loadAsync 加载,而是通过 Font.loadAsync