Как обеспечить целостность бизнес-правил для нескольких таблиц? - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь обеспечить целостность данных в нескольких таблицах, этот вопрос не специфичен для СУБД, это теоретический вопрос. Вот схема тестовых таблиц:

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.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...