我很难模拟这种情况。我在设计一个基于位置的优惠券系统。用户可以定义区域和优惠,然后将每个优惠关联到多个区域。此外,每个区域可以有多个优惠。所以zone和offer有很多对很多的关系。用户实体拥有这两个实体。只有在同一用户拥有区域和优惠的情况下,才能将它们关联起来。图表会很有帮助。多谢了。
假设用户可以独立于区域和提供是否实际连接而拥有自己的区域和提供,那么您可以做如下操作:
这是一个典型的菱形依赖问题,其中菱形底部必须为两个菱形边引用相同的菱形顶部,这通过使用标识关系来确保,因此顶部PK向两边传播,然后在底部合并(注意zone_offer.user_id前面的FK1和FK2)。
您总是可以添加更多(代理?)如果有外部原因可以这样做,则此模型的关键字,但此基本结构必须以某种形状或形式存在,以确保只能连接同一用户的区域和提供。
以下是您的数据库模型:
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