Зачем хранить значения поиска (значения комбинированного списка) в базе данных, а не размещать их на странице html? - PullRequest
1 голос
/ 22 февраля 2010

Каковы типичные аргументы в поддержку хранения значений поля со списком (статические значения поиска (строки и т. Д.) Для приложения) в базе данных по сравнению с хранением их непосредственно на самой html-странице?

Ответы [ 6 ]

4 голосов
/ 22 февраля 2010

Причина заключается в том, чтобы отделить ваши данные от пользовательского интерфейса.

Целью размещения данных в одном месте является упрощение изменений, исправлений и обновлений сайта. Если у вас есть 10 форм, и каждая из них нуждается в раскрывающемся списке состояний, то для добавления этого состояния потребуется изменить текст на 10 страницах.

Даже с одним выпадающим списком разделение облегчает обслуживание.

3 голосов
/ 22 февраля 2010

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

Скажем, у вас есть список цветов, которые вы можете выбрать. На странице HTML вы позволяете пользователю выбирать «красный», «зеленый», «синий» и «желтый». База данных отражает это.

Несколько недель спустя вы также добавили функциональность для пурпурного цвета. Таким образом, вы позволяете пользователю выбирать «фиолетовый» на странице HTML, но забыть о базе данных. Некоторые пользователи выбирают «фиолетовый», и делается попытка вставить их выбор в базу данных, но вы получаете ошибку ограничения внешнего ключа, поскольку «фиолетовый» в настоящее время не является допустимым значением в базе данных!

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

Еще через неделю вы добавите функциональность для 'pink'. На этот раз вы не забыли добавить его в базу данных, но забыли о HTML-странице. Теперь пользователи упускают классную «розовую» функциональность, которую позволяет база данных, потому что пользовательский интерфейс не был обновлен!

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

2 голосов
/ 22 февраля 2010

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

Изменить данные в базе данных проще, чем повторно развернуть новую версию веб-страницы.

2 голосов
/ 22 февраля 2010

Потому что значения поиска могут меняться со временем. Добавить один элемент в базу данных очень просто, тогда, если вы правильно закодировали, он также просто появится в пользовательском интерфейсе. Часто поисковые значения также можно использовать в других операциях, поэтому их застревание в пользовательском интерфейсе (особенно то, которое «доступно» только после обслуживания IIS) делает их недоступными - поэтому это очень плохая практика.

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

1 голос
/ 22 февраля 2010
  • Разделение данных и представления, поэтому вы можете представлять свои данные несколькими способами
  • Проще поддерживать актуальность данных, когда они хранятся только в одном месте.
  • Упрощенная локализация.
  • Упрощенная фильтрация, если вы добавляете метаданные в базу данных
1 голос
/ 22 февраля 2010

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

...