Подход к сопоставлению таблиц словарных баз данных с моделями в MVC - PullRequest
1 голос
/ 17 марта 2010

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

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

Теперь последняя таблица должна быть сопоставлена ​​с моделью на стороне кода приложения. Я могу либо:

  1. Определите все состояния как константы, чтобы на них можно было ссылаться в коде, не вставляя эти страшные «магические числа» здесь и там. Однако любое изменение словаря (на стороне базы данных) потребует модификации кода.

  2. Опустить таблицу `status` и просто определить значимую константу, которая будет использоваться в коде. Плюсы: одно место, чтобы править ими всеми. Минусы: все изменения требуют углубления в код, теперь в базе данных есть «магические числа», которые на самом деле не являются внешними ключами

  3. Попытайтесь автоматически преобразовать состояния в модель, добавив поле типа const_name в таблицу «statuses» и создавая константы на лету при загрузке модели. Этот, кажется, имеет больше всего смысла для меня.

Не могли бы вы поделиться своим обычным подходом к этому вопросу?

Лучший, Bartek

Ответы [ 2 ]

0 голосов
/ 17 марта 2010

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

0 голосов
/ 17 марта 2010

Если это просто набор констант, которые содержатся в базе данных, а не в коде, у вас может быть статический класс, загружающий константы status для использования всеми остальными. Таким образом, нет дублирования между БД и кодом, и нет магических чисел.

edit: поскольку это статический класс, вы можете лениво загружать константы. Не попадайте в базу данных до тех пор, пока кто-то впервые не запросит значение статуса.

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