У меня есть быстрый вопрос относительно базы данных, которую я проектирую и проверяю, чтобы она нормализовалась ...
У меня есть таблица клиентов с первичным ключом customerId. Он имеет столбец StatusCode, который имеет код, который отражает статус учетной записи клиента, т.е. 1 = открыто, 2 = закрыто, 3 = приостановлено и т. Д. *
Теперь я хотел бы иметь еще одно поле в таблице клиентов, которое указывает, разрешено ли приостановление учетной записи или нет ... некоторые клиенты будут автоматически приостановлены, если они нарушат условия торговли ... другие нет ... поэтому соответствующие поля таблицы будут выглядеть так:
Клиенты (CustomerId (PK): StatusCode: IsSuspensionAllowed)
Теперь оба поля зависят от первичного ключа, так как вы не можете определить статус или разрешить приостановки для конкретного клиента, если вы не знаете конкретного клиента, за исключением, конечно, когда для поля IsSuspensionAllowed установлено значение YES, клиент никогда не должен иметь StatusCode 3 (Приостановлено).
Как видно из приведенного выше дизайна таблицы, это возможно, если в мою таблицу не добавлено контрольное ограничение. Я не вижу, как можно добавить еще одну таблицу в реляционный дизайн, чтобы реализовать это, поскольку это только в случае, когда IsSuspensionAllowed установлен в YES, а StatusCode установлен в 3, когда эти две имеют зависимость друг от друга.
Итак, после моего многословного объяснения мой вопрос таков: это проблема нормализации, и я не вижу реляционного дизайна, который будет обеспечивать это ... или это на самом деле просто бизнес-правило, которое следует применять с помощью проверки противоречие и таблица фактически все еще нормализована.
Приветствия,
Steve