首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当SQL数据库中有大量的资源B时,如何建模“资源A可以关联到所有的资源B”?

当SQL数据库中有大量的资源B时,如何建模“资源A可以关联到所有的资源B”?
EN

Stack Overflow用户
提问于 2020-05-05 13:50:03
回答 2查看 31关注 0票数 0

例如,用例

推广可以适用于所有渠道,也可以是几个渠道,

关系

多对多

问题

关系A promotion can be applied to all channels的建模

我的思想

如果我们没有太多的通道,我们可以将每个通道添加到它们的关系表中,如果我们有上千个通道,那么处理这种情况的最佳实践是什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-05 15:34:03

代码语言:javascript
运行
复制
-- channel CHN exists.
--
channel {CHN}
     PK {CHN}
代码语言:javascript
运行
复制
-- Promotion PRO exists.
--
promotion {PRO}
       PK {PRO}
代码语言:javascript
运行
复制
-- Promotion PRO is a global promotion.
-- (applied to all channels)
--
glob_pro {PRO}
      PK {PRO}

FK {PRO} REFERENCES promotion {PRO}
代码语言:javascript
运行
复制
-- Promotion PRO applies to channel CHN.
--
chn_pro {CHN, PRO}
     PK {CHN, PRO}

FK1 {CHN} REFERENCES channel   {CHN}
FK2 {PRO} REFERENCES promotion {PRO}

这可能是一种情况,一个推广只适用于少数几个渠道,后来的推广被宣布为全球,这是可以的。

例如:

{C1..C100}.

  • You
  1. 说,您有10个促销{P1 .. P10},100个频道通过在chn_pro.
  2. Then中插入(C3, P7)(C5, P7)来向C3C5频道应用促销P7,您决定通过将(P7)插入glob_pro使促销P7成为全局的,现在它适用于所有channels.
  3. Later,,如果您降级促销,则通过删除glob_pro中的(P7),它仅再次应用于C3d26。H 227G 228

若要列出所有渠道的所有促销活动,请使用视图。

代码语言:javascript
运行
复制
-- Promotion PRO applies to channel CHN.
--
CREATE VIEW all_channel_promotions
AS
SELECT CHN, PRO FROM chn_pro

UNION

SELECT CHN, PRO
FROM channel
JOIN glob_pro on True ;

注意:

代码语言:javascript
运行
复制
All attributes (columns) NOT NULL

PK = Primary Key
FK = Foreign Key
票数 1
EN

Stack Overflow用户

发布于 2020-05-05 13:54:12

您应该有一个promotion_channels表(我认为您正在调用"relations“,但这个名称很模糊),并将任何匹配的通道添加到表中。对于影响所有渠道的促销活动,应增加所有渠道。

为什么?因为你可能会随着时间的推移而增加频道。你不希望旧的晋升申请到新的渠道。

当然,您也可以有一个“特殊”通道,它意味着所有的通道--也许使用channel_id Of 0。然后,任何寻找通道的代码都可以考虑到这一点。这有点复杂,容易出错,但其中大部分可能隐藏在视图和其他构造中。

但是,由于频道可能会随着时间的推移而改变,我不建议采用这种方法。

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

https://stackoverflow.com/questions/61614754

复制
相关文章

相似问题

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