Добавление ограничения на внешний ключ - PullRequest
0 голосов
/ 16 октября 2019

У меня есть акция суперкласса, и она имеет 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 относятся к клиентам, а предложения и предложения связаны с продуктом. У продукта не может быть предложения и сделки одновременно. Я хочу добавить promoID в таблицу продуктов, чтобы убедиться, что любой promoID, соответствующий GiftCardID, отсутствует в таблице. Возможно ли, чтобы этот подход был представлен в переводе и переведен в SQL-код?

Я думал о том, чтобы установить связь между сделками и продуктом, а другой между предложением и продуктом, но это не будет удовлетворять ограничению, что продуктне может одновременно иметь предложение и сделку, поскольку оба идентификатора будут представлены как внешние ключи в Таблице продуктов.

1 Ответ

0 голосов
/ 16 октября 2019

Вы можете добавить 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)
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...