mysql - 一个条目中有两个 MySQL 关系?

标签 mysql relational-database

我的问题是:是否可以在一个数据条目中创建两个 MySQL 关系?

示例:

结构:

Table: QUEST

列:questId、questRewardTypeId

Table: REWARD_TYPE

列: rewardId, rewardDesc

数据:

一条数据线是{}

任务:

{1, LEVEL AND MONEY}

REWARD_TYPE:

{LEVEL, Level reward}, {MONEY, money reward}, {ITEM, item reward}

Database relations

最佳答案

有两个表 QUESTREWARD_TYPE,每个表都有它们的主键(questIdrewardTypeId),通常的方法是创建第三个表,通过主键链接两个表中的数据集。这允许一个任务有多个奖励条目。

让我们调用表 QUEST_REWARD 并为其提供以下结构:

+--------------+--------------+
| Field        | Type         |
+--------------+--------------+
| questId      | int(10)      |
| rewardTypeId | varchar(255) |
+--------------+--------------+

类型应与 QUESTREWARD_TYPE 中的键匹配。

然后您可以为任务提供的每种奖励类型创建一个条目。例如,如果任务提供了新的等级和金钱,则 SQL 语句可以是:

INSERT INTO QUEST_REWARD SET questId=1, rewardTypeId='LEVEL';
INSERT INTO QUEST_REWARD SET questId=1, rewardTypeId='MONEY';

现在您可以使用以下查询获取任务的所有奖励(此处为 id 为 1 的任务):

SELECT * from QUEST_REWARD WHERE questId = 1;

...结果将是:

+---------+--------------+
| questId | rewardTypeId |
+---------+--------------+
|       1 | LEVEL        |
|       1 | MONEY        |
+---------+--------------+

当然,您可以将其扩展为任意数量的奖励类型,而不仅仅是每个任务两个。此外,与评论中提出的任何 JSON 或 CSV 方法相比,它也更容易查询,因为您可以省去将这些内容解析为其组件的麻烦。

关于mysql - 一个条目中有两个 MySQL 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42558828/

相关文章:

mysql - 自动将数据从 google doc 上传到 MySQL 数据库 - 如何在 google 脚本中隐藏数据库凭据

php - 数组对象未打印在输入字段中并且 sql 查询未接收 id 值

PHP MYSQL 函数有效,但在添加额外参数时中断

php - 如何为关系查询配置我的 Yii 模型?

mysql - 如何处理数据库模式中的用户权限?

MySQL + JSON : Retrieve all data where id = term

mysql - 我可以在触发器上的 SELECT INTO 语句内部使用 SUM() 吗?

php - 在数据库中添加类别和子类别

mysql - 了解 MYSQL 连接

sql - 如何正确构造此 sql 查询?