#django #rdbms #database-normalization
#django #СУБД #база данных-нормализация
Вопрос:
Я новичок в Django и веб-фреймворках в целом, но довольно часто работал с СУБД. Зная, что каждый класс в моделях django сопоставляется с таблицей в базе данных, должны ли модели основываться на ERD, где таблицы нормализованы? Будет ли иметь значение нормальная форма в этом случае? Спасибо!
Ответ №1:
Предполагая, что вы используете серверную часть SQL (т. Е. Не Что-то вроде mongodb), тогда будут применяться те же рекомендации по нормализации. Помните, что django — это просто красивый способ доступа к базе данных, но в фоновом режиме вы все еще выполняете серию SQL-запросов, которые таким же образом выиграют от нормализации.
Тем не менее, большая часть бизнес-логики, которую вы обычно встраиваете в базу данных, теперь может обрабатываться django, поэтому можно обойтись слегка ненормализованной структурой, если это упрощает работу с ней. Подход, который я обычно использую, заключается в нормализации там, где имеет смысл избегать дублирования, и денормализации там, где нормализованная структура приведет к действительно сложным запросам (django не любит сложные запросы). Я обеспечиваю согласованность данных, используя приемники или перегружая save
метод.