添加外键约束

Adding a constraint on foreign key

我有一个超类 Promotion,它有 3 个子类 GiftCard、Offers、TodaysDeals。

Promotion(PromotionID,expiryDate)
GiftCard(GiftCardID,points)
where GiftCard.giftcardID references promotion
TodaysDeals(TodaysDealsID,Discount)
where TodaysDeals.TodaysDealsID references promotion
Offers(OffersID,Discount)
where offers.offersID references promotion

GiftCard 促销活动与客户相关,而 Offers & Deals 与产品相关。一个产品不能同时有报价和交易。 我想将 promotionID 添加到 Products 的 table 中,确保与 GiftCardID 对应的任何 promotionID 不在 table 中。这种方法是否可以在 eerd 中表示并转换为 sql 代码?

我想在 deals 和 product 之间建立一个关系,在 offer 和 product 之间建立另一个关系,但这不能满足产品不能同时拥有 offer 和 deal 的约束,因为两个 ID 的将在产品 Table.

中表示为外键

您可以将 PromoType 添加到您的表中,使 Promotion(PromotionID,PromoType) 唯一并从其他表中引用此唯一键。

Promotion(PromotionID, 
         PromoType check ('Deal','Offer', 'Gift'),
         expiryDate,
         UNIQUE(PromotionID,PromoType)
)

Product(
  PromoId,
  PromoType check ('Deal','Offer'),
  FK (PromoId,PromoType) ref Promotion(PromotionID,PromoType)
)