Rails и целостность данных - PullRequest
       3

Rails и целостность данных

1 голос
/ 15 ноября 2010

Я в настоящее время нахожусь на ограждении о том, как реализовать мои модели.Прямо сейчас я использую полиморфные отношения, но это так неправильно, хотя и очень удобно.Мне кажется, что я должен использовать обеспечение целостности на уровне базы данных в качестве дополнительного уровня безопасности.

Являюсь ли я дедушкой для опроса уровня приложений?Пожалуйста, обсудите.

Я нашел этот пост, но он не относится к Rails Можно ли сделать внешний ключ MySQL для одной из двух возможных таблиц?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Всегда есть http://www.postgresql.org/docs/current/static/ddl-inherit.html

Я так и не понял, но работал (во время скучных поездок) над попытками сделать это с Rails.

1 голос
/ 15 ноября 2010

Все зависит.

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

Однако есть некоторые вещи, которые лучше всего сделать в базе данных.validates_uniqueness_of хороший пример здесь.Два экземпляра приложения могут сообщать о заданном значении уникально, но может быть условие гонки.Хорошая практика - иметь уникальный индекс в вашей базе данных.

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

0 голосов
/ 27 ноября 2010

Я не отставал от этого и придумал гибридное решение.

Я думаю, что функциональность полиморфизма Rails по умолчанию очень хорошо подходит для быстрого прототипирования.Но для долгосрочного решения я реализовал собственную полиморфную ассоциацию, используя промежуточную таблицу (например, Commentable, Votable).Я не могу найти сообщение, но Билл Карвин указывает этот метод в нескольких ответах на этом сайте.

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

Я написал свой собственный Mixins для эмуляции функциональности полиморфизма Rails по умолчанию.Это было немного сложно с добавлением внешних ключей или при добавлении взаимосвязи после заполнения таблицы, но кажется, что все работает гладко.

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

Короче говоря, я думаю, что это зависит, но в 90% случаев лучше иметь целостность на уровне БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...