首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个条目中有两个MySQL关系?

问在一个条目中有两个MySQL关系?
EN

Stack Overflow用户
提问于 2017-03-02 23:00:47
回答 1查看 56关注 0票数 1

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

示例:

结构:

代码语言:javascript
复制
Table: QUEST

专栏: questId,questRewardTypeId

代码语言:javascript
复制
Table: REWARD_TYPE

专栏: rewardId,rewardDesc

数据:

一条数据线是{}

QUEST:

代码语言:javascript
复制
{1, LEVEL AND MONEY}

REWARD_TYPE:

代码语言:javascript
复制
{LEVEL, Level reward}, {MONEY, money reward}, {ITEM, item reward}

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-11 03:29:00

有了两个表QUEST和REWARD_TYPE,每个表都有自己的主键(questId和rewardTypeId),通常的方法是创建第三个表,该表通过主键链接两个表中的数据集。这允许一个任务有多个奖励条目。

让我们将表命名为QUEST_REWARD,并为其提供以下结构:

代码语言:javascript
复制
+--------------+--------------+
| Field        | Type         |
+--------------+--------------+
| questId      | int(10)      |
| rewardTypeId | varchar(255) |
+--------------+--------------+

类型应与QUEST和REWARD_TYPE中的键匹配。

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

代码语言:javascript
复制
INSERT INTO QUEST_REWARD SET questId=1, rewardTypeId='LEVEL';
INSERT INTO QUEST_REWARD SET questId=1, rewardTypeId='MONEY';

现在你可以通过以下查询获得任务的所有奖励(这里是id为1的任务):

代码语言:javascript
复制
SELECT * from QUEST_REWARD WHERE questId = 1;

..。结果将是:

代码语言:javascript
复制
+---------+--------------+
| questId | rewardTypeId |
+---------+--------------+
|       1 | LEVEL        |
|       1 | MONEY        |
+---------+--------------+

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42558828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档