1

我无法模拟这种情况。我正在设计一个基于位置的优惠券系统。用户可以定义区域和报价,然后将每个报价与多个区域相关联。此外,每个区域可以有多个报价。所以 zone 和 offer 有一个多对多的关系。用户实体拥有这两个实体。仅当同一用户同时拥有区域和优惠时,才能关联区域和优惠。图表可能会很有帮助。谢谢。

4

2 回答 2

2

假设用户可以独立于区域和优惠是否实际连接而拥有自己的区域和优惠,您可以执行以下操作:

在此处输入图像描述

这是菱形依赖的经典问题,菱形底部必须为菱形两侧引用相同的菱形顶部这是通过使用识别关系来确保的,因此顶部 PK 向下传播,然后在底部合并(注意 FK1和 FK2 在 ZONE_OFFER.USER_ID 前面)。

如果有外部原因,您始终可以向此模型添加更多(代理?)键,但此基本结构必须以某种形状或形式存在,以确保只能连接同一用户的区域和报价。

于 2013-08-10T16:53:58.247 回答
0

这是您的数据库模型:

Tbl_Zone
    id_Zone not null
    id_User not null
    zoneDescription not null
    ....

Tbl_Offer
    id_Offer not mull
    id_User not null
    offerDescription not null
    ....

Tbl_ZoneOffer
    id_ZoneOffer
    id_Zone not null
    id_Offer not null

回到您的用户规则,这将成为您的业务逻辑的一部分,其中表格将在显示之前被过滤:

SELECT * FROM Tbl_Zone WHERE id_User = myUserIdentifier
SELECT * FROM Tbl_Offer WHERE id_User = myUserIdentifier

并且,对于每个区域可用的报价列表:

SELECT zoneDescription, offerDescription FROM Tbl_ZoneOffer 
    INNER JOIN Tbl_Zone on Tbl_ZoneOffer.id_Zone = Tbl_Zone.id_Zone 
    INNER JOIN Tbl_Offer on Tbl_ZoneOffer.id_Offer = Tbl_Offer.id_Offer
    WHERE Tbl_Zone.id_User = myUserIdentifier
于 2013-08-09T14:08:05.193 回答