Хранение форматированного текста в БД при сохранении абстракции
-
06-07-2019 - |
Вопрос
Как вы будете хранить отформатированные блоки текста (разрывы строк, табуляции, списки и т. д.) в базе данных (ничего конкретного) для отображения в Интернете (XHTML), сохраняя при этом уровень абстракции, чтобы данные могли быть используется в других приложениях или если в будущем структура сайта изменится?
Решение
В вашем вопросе есть две идеи, которые немного противоречат друг другу: идея отделить данные от содержимого, чтобы их можно было переосмыслить, и идея включить форматирование данных.
Являются ли данные форматирования частью данных или просто метаданными?
Разве мы не видели это раньше; в основном это кажется загадкой CSS / HTML.
Если эти блоки текста вписываются в известную схему данных (как предполагает ответ Марио), тогда да, я бы пошел с его ответом, но, перечитав ваши вопросы, я отвечу (и предположу), что у вас есть биты форматирования скажем, внутри тега абзаца, который использовал Марио?
Исходя из идеи, что форматирование - это в основном часть данных, а не просто дополнительная информация, я бы предложил принять что-то вроде решения CSS / HTML. Храните текст со стандартными тегами XHTML, готовыми для вашего CSS. Затем это можно проанализировать, если вы хотите использовать стандартный пользовательский интерфейс (как в не веб-приложении?), И просто удалить теги и заменить при необходимости.
Конечно, вы могли бы создать свою собственную разметку ([myBitOfText #] вместо < span class = " myBitOfText / >), но вы также можете получить один возврат из ваша база данных, которая не требует повторного использования или манипуляции со строками.
Другие советы
Я бы сохранял структуру документа с использованием XML и всегда применял некоторые преобразования XSLT, прежде чем показывать их в веб-браузере. Таким образом, информация может быть адаптирована к различным браузерам или другим видам использования, таким как отображение в обычном интерфейсе пользователя или экспорт в какой-либо простой текстовый документ.
Структура должна быть чем-то значимым, а не только форматировать информацию. В идеале это было бы представление некоторой предметно-ориентированной модели данных.
Конечно, ничто не мешает вам, если значимой информацией является структура документа, определить что-то вроде:
<document>
<title>SomeTitle</title>
<paragraph>Some Long paragraph text</paragraph>
</document>
Еще одним преимуществом использования XML в этом контексте является то, что если ваша база данных поддерживает его (например, Oracle), вы можете запрашивать содержимое текста.
Мы предполагаем, что к тексту не нужно часто обращаться с запросами или что контент действительно предназначен только для отображения. В противном случае может быть лучше нормализовать базу данных.