添加外键约束
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)
)
我有一个超类 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)
)