База данных должна рассматриваться как отдельная вотчина, так как она не должна доверять данным вне себя.Слишком часто я видел системы, где прямое подключение к базе данных было необходимо и нарушало все правила, установленные исходным приложением.Базы данных часто превращаются в использование несколькими приложениями, и поэтому крайне важно, чтобы они реализовывали свою собственную целостность данных.Предположим, что другие разработчики полностью обойдут ваше приложение или промежуточный уровень.Кроме того, базы данных, как правило, остаются в обслуживании гораздо дольше, чем приложение, которое было изначально создано для их обслуживания.
Таким образом, да, крайне важно включить ограничения внешнего ключа, правильное использование ограничений обнуляемости и т. Д. Вдизайн вашей базы данных.Те ограничения ссылочной целостности, с которыми вы сталкиваетесь, предназначены для защиты данных от потерянных строк.Кроме того, они предоставляют документацию о том, как таблицы связаны друг с другом.
Если у вас есть дочерний объект, который логически должен быть удален при удалении родителя, вы можете рассмотреть каскадное удаление.Я склонен проявлять осторожность, не каскадное удаление, если весь код, который удаляет родительский элемент, уже не закодирован для удаления дочернего элемента, и в этом случае вы также можете каскадно удалять.Каскадные обновления, очевидно, безопаснее, и, как правило, нет причин не применять их, если вы не беспокоитесь о производительности или не можете их реализовать из-за некоторых ограничений в дизайне.