我的问题是:是否可以在一个数据条目中创建两个 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}
最佳答案
有两个表 QUEST
和 REWARD_TYPE
,每个表都有它们的主键(questId
和 rewardTypeId
),通常的方法是创建第三个表,通过主键链接两个表中的数据集。这允许一个任务有多个奖励条目。
让我们调用表 QUEST_REWARD
并为其提供以下结构:
+--------------+--------------+
| Field | Type |
+--------------+--------------+
| questId | int(10) |
| rewardTypeId | varchar(255) |
+--------------+--------------+
类型应与 QUEST
和 REWARD_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/