首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[MySQL]:有没有一种更“有效”的方法来链接这些表?

[MySQL]:有没有一种更“有效”的方法来链接这些表?
EN

Stack Overflow用户
提问于 2010-01-28 07:04:18
回答 3查看 150关注 0票数 1

我有三张桌子-

代码语言:javascript
复制
Transaction:
ID    TimeStamp

Discount:
Code   Amount

Transaction_Discount:
ID      Code

它几乎是你所能得到的最基本的东西。

有没有一种更“有效”的方法将这些表链接在一起?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-28 07:09:23

如果你正在模拟一个交易可以有0或更多的折扣,并且折扣可以应用于0或更多的交易,那么这种3表的方法是标准的方法。

我要做的唯一改变是,除了代码字段之外,还要给折扣一个数字主键,并将其用作Transaction_Discount中的外键。

票数 5
EN

Stack Overflow用户

发布于 2010-01-28 07:11:16

如果是一对一,那么只需将折扣代码字段添加到您的交易表中。

如果是一对多,则在您的折扣表中添加一个交易id。

如果是多对多,那么您拥有的三表解决方案是唯一可行的方法。

票数 1
EN

Stack Overflow用户

发布于 2010-01-28 08:31:08

从您的评论来看,这种关系是一对多的关系,其中一个折扣可以应用于许多交易。

因此,您应该对表进行建模,如下所示:

代码语言:javascript
复制
Transaction table:
id, discount_id, timestamp

Discount table:
id, code, amount

如你所见,不需要第三个链接表。只有当关系是多对多时,才需要这样做。

您还可以看到,由于一笔交易只有一个折扣,我们将折扣ID作为外键存储在transaction表中。这样,如果我们愿意,我们可以有多个交易引用相同的折扣,但每个交易将只引用一个折扣。

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

https://stackoverflow.com/questions/2150993

复制
相关文章

相似问题

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