Ваш столбец в твердом переплете должен принимать значение null для поддержки типов 2 и 3. Это правило приложения, а не правило базы данных.Вы должны проверить в приложении, что сущность с книгой type = 1 всегда имеет значение, установленное в твердом переплете.
Если вы определили наследование и у вас есть отдельный тип для книги типа 1, вы можете попытаться сделать свойство Hardcover необнуляемымв модели (но, скорее всего, он не будет работать с первым подходом кода).