Есть ли преимущества использования ограничений внешнего ключа при работе в активной структуре записей, такой как ruby-on-rails? - PullRequest
3 голосов
/ 03 июля 2010

Я возвращаюсь к полноценной веб-разработке после пятилетнего перерыва.Мой предыдущий опыт (без активной записи или MVC) говорит мне, что я должен быть очень внимательным с моей схемой базы данных.Ограничения внешнего ключа, уникальные индексы и т. Д. Действительно могут помочь при написании кода для спагетти.

Считает ли сообщество это полезным при работе в среде Active Record / MVC?

РЕДАКТИРОВАТЬ

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

Ответы [ 2 ]

5 голосов
/ 03 июля 2010

Если вы не используете ограничения, ваша база данных будет накапливать случаи нарушения ссылочной целостности и дублировать там, где должны быть уникальные значения, и т. Д.

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

В этом ценность ограничений, налагаемых базой данных: это единственный способ быть уверенным в своих данных, и вам не придется перепроверять правильность работы вашей инфраструктуры (например, ActiveRecord).Вам не нужно будет писать сценарии очистки SQL для поиска поддельных сирот и дубликатов.

1 голос
/ 03 июля 2010

Это будет работать нормально, однако в случаях, когда вы должны быть осторожны с ошибками условия гонки двойным щелчком (поскольку validates_uniqueness_of страдает от условий гонки).в базе данных отдельно от логики в приложении Rails.

...