Я пытаюсь обеспечить целостность данных в нескольких таблицах, этот вопрос не специфичен для СУБД, это теоретический вопрос. Вот схема тестовых таблиц:
Purchase
PurchaseID CustomerID ItemID CustomerTypeDiscountID
1 23 4 2
Customer
CustomerID Customer Name CustomerTypeID
23 Mike Smith 3
24 John Doe 1
CustomerTypes
CustomerTypeID CustomerTypeDescription
1 New
2 Old
3 Returning
Discounts
DiscountID PercentDiscount
1 5
2 10
3 15
4 20
5 25
6 30
CustomerTypeDiscounts
CustomerTypeDiscountID CustomerTypeID DiscountID
1 3 6
2 3 5
3 1 4
4 2 1
Вы видите, что в таблице «Покупка» скидка на покупку 1 составляет 25%, поскольку клиент 23 (Майк Смит) является типом «Возвращающий клиент» и можетполучить скидку 5 (25%) через CustomerTypeDiscountID 2.
Постоянные клиенты также могут получить скидку 30%.
Но как я могу убедиться, используя ограничения внешнего ключа, что в Закупкетаблица, CustomerTypeDiscountID всегда подходит для данного CustomerID? Например, в примере CustomerTypeDiscountID в записи о покупке может быть только 1 или 2 для этого CustomerID, он никогда не будет 3 или 4 и т. Д., Поскольку эти скидки не подходят для типа клиента Клиента 23.
Спасибо.