Я работаю над проектом ASP.NET, который заменяет многие существующие бумажные формы. Одним из требований является то, что пользователь может сохранить форму в любом состоянии, то есть он может создать новую пустую форму и сразу же сохранить ее без данных или с частичными данными. Я проверяю тип данных при каждом сохранении, но проверка обязательных полей не происходит, пока пользователь не пометит форму как заполненную.
Я не уверен, что лучший подход заключается в обработке этого требования в базе данных и модели предметной области. На мой взгляд, у меня есть два варианта:
- Разрешить пустые значения для любого поля, которое может не иметь данных. Это похоже на «правильный» подход, но требует, чтобы почти каждое поле базы данных позволяло принимать значения NULL, и мне приходилось кодировать множество обнуляемых типов. Кроме того, когда форма завершена, в базе данных нет обязательных полей.
- Заполните мои бизнес-объекты значимыми значениями по умолчанию. В некоторых случаях существуют значимые значения по умолчанию для многих (но не всех) полей, которые я мог бы использовать. Этот подход граничит с «магическими числами», что делает меня неудобным.
Какой подход лучше? Или есть третий путь? Я не готов идти на крайние меры, такие как разделение таблиц.
Отредактировано, чтобы добавить: я хотел бы остановиться на этом немного, так как я принял ответ. Основная причина, по которой я не заинтересован в разделении таблиц, заключается в том, что после отправки проекта данные в формах используются для создания данных для другой системы, которая является системой записей. На этом этапе исходные данные формы вряд ли будут пересмотрены или использованы для отчетности.