Разработка программного обеспечения: СУХОЙ, Единый источник правды и проверка данных
Из статьи Википедии о DRY Software:
Принцип СУХОЙ гласит: "Каждая часть знаний должна иметь одно, однозначное, авторитетное представление в системе". Этот принцип был сформулирован Энди Хантом и Дейвом Томасом в их книге "Прагматичный программист". Они применяют его достаточно широко, чтобы включить "схемы базы данных, планы тестирования, систему сборки, даже документацию".
Из статьи Википедии об одном источнике истины:
В проектировании и теории информационных систем, как это делается на уровне предприятия, "Единый источник истины" (SSOT) относится к практике структурирования информационных моделей и связанных схем так, что каждый элемент данных сохраняется ровно один раз (например, не более чем в одном строка одной таблицы). Любые возможные связи с этим элементом данных (возможно, в других областях реляционной схемы или даже в удаленных федеративных базах данных) приведены только для справки.
Мой вопрос: если я пишу приложение для базы данных и уже написал конкретный код для проверки введенных пользователем данных, нарушу ли я принципы DRY и SSoT для определения типов данных поля моей базы данных, чтобы наиболее точно соответствовать ожидаемым данным? (В отличие от этого, просто используя текстовые типы данных для каждого поля. На данный момент, давайте проигнорируем другие потенциальные преимущества, такие как индексация).
1 ответ
Вы бы не нарушили принцип DRY, если бы ваш процесс сборки использовал файл конфигурации для генерации правильного кода как для базы данных, так и для прикладного уровня.
Разработчики приложений нередко проверяют только на уровне кода приложения. Обычно это ошибка.
Например, вы можете использовать один файл конфигурации, чтобы сгенерировать javascript для проверки через веб-интерфейс, сгенерировать SQL DDL и сгенерировать ограничение SQL check() для проверки на уровне базы данных.
Вы не можете разумно избежать запуска различного кода в обеих средах исполнения. (Унаследованные приложения баз данных могут иметь десятки различных сред выполнения.) Администраторы баз данных не должны использовать код своего приложения для обновления базы данных. Другой код приложения - код, о котором вам не обязательно сообщать, - также не должен использовать код вашего приложения.