Мне нужно хранить электронные письма HTML в базе данных.Это плохая идея? - PullRequest
3 голосов
/ 17 марта 2011

Шаблоны для этих писем в формате HTML одинаковы, но есть только разные переменные, например, имя, фамилия и т. Д.

Будет ли просто иметь смысл хранить самые минимальные данные, которыеМне нужно, и загружать шаблон и заменять переменные каждый раз?

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

Поиск мнений от людей, которые делали это раньше ...

ЦЕЛЬ/ ЦЕЛЬ / ИСПОЛЬЗОВАНИЕ:

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

В этом письме содержится ссылка «Не удается просмотреть это электронное письмо? Посмотрите его здесь», которая обеспечивает веб-просмотр электронного письма,в дополнение к открытому тексту.

Мне нужно отобразить то же письмо, которое было отправлено, в дополнение к открытому тексту.

Шаблон может быть изменен, но я думаю, что из-заИменно по этому факту у меня должна быть таблица шаблонов и сопоставление данных с шаблоном.

Ответы [ 4 ]

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

Да, ваше право на трассе. Я сделал похожую вещь. Все динамические переменные / переменные времени выполнения начинались с @@ symbol .

Таким образом, в базе данных у вас будет одна таблица шаблонов. Одна таблица будет для динамических / динамических переменных. Одна таблица для отображения между шаблоном и динамическими / динамическими переменными.

tblTemplate - TemplateID, TemplateValue
tblRuntimeVariables - RuntimeVariableID, VariableString, VariableSQL
tblMapping - TemplateID, RuntimeVariableID, RuntimeVariableValue

Преимущество использования дополнительной таблицы сопоставления заключается в том, что добавление новых динамических переменных к существующим изменениям означает отсутствие изменений в существующей базе данных. Только больше строк будет добавлено в tblMapping.

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

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

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

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

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

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

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

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

На самом деле, было бы еще лучше, если бы вы использовали механизм шаблонов, такой как Velocity (в Java), для создания ваших электронных писем в формате HTML ... между прочим, очень просто.

...