ОРМ:Рукописная схема или созданная автоматически?

StackOverflow https://stackoverflow.com/questions/126978

  •  02-07-2019
  •  | 
  •  

Вопрос

Должен ли я использовать рукописную схему для моего проекта, разработанного на языке высокого уровня (например, Python, Ruby), или мне следует позволить моему решению ORM автоматически сгенерировать ее?В конце концов мне придется выполнить миграцию, не уничтожая все данные.Привязка к конкретной СУБД — это нормально, но было бы неплохо, если бы можно было каким-то образом поддерживать такие функции, как ограничения и процедуры.

Это было полезно?

Решение

Я никогда не использую схему, сгенерированную ORM.

Я обнаружил, что способы, которыми ORM хочет генерировать схему, часто полностью противоречат тому, как я хочу, чтобы моя база данных была структурирована.Кроме того, и я знаю, что это тривиально, схема номенклатуры обычно плохая.

Структура базы данных имеет свои собственные ограничения, которые, как я считаю, обычно инструменты автогенерации ORM не учитывают в полной мере.И если вы захотите позже создавать отчеты по своей базе данных (а вы это сделаете), то очень важно иметь хорошую структуру и дизайн базы данных.

Другие советы

Видеть эта статья ужасов кодирования и ссылки для обсуждения той миграции, которую вам в конечном итоге придется сделать.Планируйте это сейчас.

Также см Мартин Фаулер об эволюции баз данных;Я особенно рекомендую идею о том, что генерация тестовых данных является частью настройки базы данных.Идея может быть немного недостаточно развитой, поскольку нет четкого разграничения различных проблем в разных средах: разработка, контроль качества и производство.

Позвольте ORM сгенерировать нужную ему схему.Тогда вы всегда сможете изменить то, что происходит слишком медленно или что вы хотите по-другому.Но это позволяет вам быстро приступить к работе и что-то работать, плюс люди из ORM обычно знают, что они делают, когда дело доходит до генерации схем.

Позвольте вашему ORM-решению сгенерировать его, но не используйте его слепо;прочитайте его и проверьте здравомыслие.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top