Мартин дал вам возможный ответ, но из вашего поста неясно, какова ваша модель данных: автомобильная лицензия и автобусная лицензия имеют один и тот же номер лицензии или нет? Иными словами, если у меня есть автомобильная лицензия и я учусь водить автобус, я получу вторую лицензию или просто штамп на моей существующей лицензии?
Если это отдельные лицензии, то я предполагаю, что они будут отдельными строками в вашей таблице, потому что первичный ключ таблицы - надеюсь! - Номер лицензии. И в этом случае ограничения CHECK не будут работать, потому что они применяются только к значениям в одной строке; вам нужно будет использовать триггеры, чтобы проверить, какие лицензии уже есть у драйвера при добавлении нового.
Так что ваши варианты:
- Водители могут иметь только одну лицензию с одним уникальным номером: используйте ограничение CHECK
- Драйверы могут иметь несколько лицензий разных типов с разными номерами: используйте триггер
- Это сложнее: использовать сохраненный код процесса или приложения для вставки новых лицензий
Ваш пост предлагает 1, но немного неясно. И даже если это так, вы можете рассмотреть вторую таблицу под названием DrivingLicenceQualifications или любую другую: если одна лицензия может иметь много квалификаций, и если вы планируете добавлять новые квалификации в будущем, тогда это будет более гибким.
И, к вашему сведению, в MSSQL нет логического типа данных, возможно, вы имели в виду BIT?