我的问题是:是否可以在一个数据条目中创建两个MySQL关系?
示例:
结构:
Table: QUEST
Colums:questId,questRewardTypeId
Table: REWARD_TYPE
Colums: rewardId,rewardDesc
数据:的
一个数据行是{}
QUEST:
{1, LEVEL AND MONEY}
REWARD_TYPE:
{LEVEL, Level reward}, {MONEY, money reward}, {ITEM, item reward}
答案 0 :(得分:3)
具有两个表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方法更容易查询,因为您可以避免将这些内容解析为组件的麻烦。