powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Универсальная, формализованная таблица для хранения контента
25 сообщений из 38, страница 1 из 2
Универсальная, формализованная таблица для хранения контента
    #38527861
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Задача такая:

Есть некий CMS для хранения текста, картинок, таблиц, файлов, видео и аудио. CMS предназначена не для HTML. Контент выдергивается некими плеерами (desktop, mobile) и интерпретируется в виде статей.

Сущность "статья" имеет следующую структуру:

Заголовок

Подзаголовок

Нумерованный список элементов контента (content_element: id, type, title, subtitle, text, url, pos, created_at, updated_at). Это может быть текст, ссылка на картинку, ссылка на видео и т.п

Нумерованный список атрибутов контента (content_attribute: id, key, value, pos, created_at, updated_at). Key->value значения, которые описывают статью или используются для отображения двух колоночной таблицы характеристик в статье.

Позиция статьи в списке статей

Дата создания

Дата обновления

Кроме текста, нужно хранить в элементах статьи еще и таблицы.

Как (какие сделать поля или использовать разметку типа textile что не желательно) можно сделать таблицу,
чтобы можно было любые 2-мерные сущности (таблицы в контенте) разбивать и складывать в эту таблицу и соответственно выдергивать по указанным значениям полей. У любой статьи есть идентификатор базы и идентификатор пользователя.

Спасибо!
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528064
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azamКак (какие сделать поля или использовать разметку типа textile что не желательно) можно сделать таблицу,
чтобы можно было любые 2-мерные сущности (таблицы в контенте) разбивать и складывать в эту таблицу и соответственно выдергивать по указанным значениям полей. У любой статьи есть идентификатор базы и идентификатор пользователя.

Спасибо!

Это называется EAV
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528130
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я примерно представляю как это работает.


Сущность = { ContentId, AttributeId, AttributeValue }
Для таблицы где, есть набор из двух полей, укладывается легко.
Например:

Танк Т-34

Длина корпуса, мм: 5920
Длина с пушкой вперёд, мм: 5964
Ширина корпуса, мм: 3000
Высота, мм: 2405
Клиренс, мм: 400

А если так?

Таблица расходов топлива танка Т-34

Топливо / летом / зимой /
Д.Т. 95 / 100 км - 50л / 100 км - 60л /
Д.Т. 85 / 100 км - 60л / 100 км - 65л /
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528193
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azamДа, я примерно представляю как это работает.


Сущность = { ContentId, AttributeId, AttributeValue }
Для таблицы где, есть набор из двух полей, укладывается легко.
Например:

Танк Т-34

Длина корпуса, мм: 5920
Длина с пушкой вперёд, мм: 5964
Ширина корпуса, мм: 3000
Высота, мм: 2405
Клиренс, мм: 400

А если так?

Таблица расходов топлива танка Т-34

Топливо / летом / зимой /
Д.Т. 95 / 100 км - 50л / 100 км - 60л /
Д.Т. 85 / 100 км - 60л / 100 км - 65л /

И какая проблема?
та же таблица из трех полей (для простоты ненормализованная)
RowColumnValueД.Т. 95 летом 50л Д.Т. 95 зимой 60л Д.Т. 85 летом 60л Д.Т. 85 зимой 65л
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528202
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для хранения разных таблиц можно добавить поле Table, в которое писать для Вашего примера "Таблица расходов топлива танка Т-34"
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528225
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А лучше не маяться и хранить контент в BLOB сразу в языке разметки - HTML, Tex и т.п.
Нужные для поиска параметры - вытащить отдельно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528235
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Особенно весело будет, когда решат изменить внешний вид сайта и для этого придется лазить по куче блоб-полей.
Или, скажем, одни и те же данные в одном месте показывать таким образом, а в другом - этаким.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528308
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинОсобенно весело будет, когда решат изменить внешний вид сайта и для
этого придется лазить по куче блоб-полей.
Не придётся. CSS изобрели не сегодня. И даже не вчера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528309
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

А contentId куда?
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528314
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА лучше не маяться и хранить контент в BLOB сразу в языке разметки - HTML, Tex и т.п.
Нужные для поиска параметры - вытащить отдельно.


Господа, сразу говорю, контент не для сайта.
А для нативных приложений под ios, android, wp.

Браузера в этой цепочке нет.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528318
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинДля хранения разных таблиц можно добавить поле Table, в которое писать для Вашего примера "Таблица расходов топлива танка Т-34"

Ну вот в классический EAV не влезает, нужно еще одно поле, а потом еще, еще...
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528330
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azamГоспода, сразу говорю, контент не для сайта.
А для нативных приложений под ios, android, wp.
Пофиг. В любом случае существует некоторый "готовый" формат содержимого для отображения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528341
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovnodir_azamГоспода, сразу говорю, контент не для сайта.
А для нативных приложений под ios, android, wp.
Пофиг. В любом случае существует некоторый "готовый" формат содержимого для отображения.


Нету.
Там только есть типы контента. Нет форматирования никакого, ответственно заявляю.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528370
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azamНу вот в классический EAV не влезает
"Классический EAV" вообще предназначен исключительно для поиска. Формировать из его
содержимого какие-то отчёты или т.н. "контент" - геморрой на всю голову. Как я уже сказал:
контент должен храниться отдельно, в EAV из него попадают только ключевые "слова".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528372
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКот МатроскинОсобенно весело будет, когда решат изменить внешний вид сайта и для
этого придется лазить по куче блоб-полей.
Не придётся. CSS изобрели не сегодня. И даже не вчера.

При чем тут CSS? Вы CSS-ом будете, например, таблицу транспонировать (уж не говорю фильтровать-расширять)?

nodir_azam Ну вот в классический EAV не влезает, нужно еще одно поле, а потом еще, еще...

Классический EAV строится не из одной таблицы, как в Вашем исходном письме и моем примере, а из четырех
Ваш расход топлива можно впихнуть и в классический EAV с главной таблицей из трех полей, просто это расписывать долго и лениво.
Вкратце - Таблица "расход топлива" будет у Вас типом сущности, каждая строка таблицы - экземпляром этой сущности,
"летом","зимой" - атрибутами сущности, "Д.Т. 95 " - значением специального дополнительного атрибута сущности RowName
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528385
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovnodir_azamНу вот в классический EAV не влезает
"Классический EAV" вообще предназначен исключительно для поиска. Формировать из его
содержимого какие-то отчёты или т.н. "контент" - геморрой на всю голову.

Я бы сказал ровно наоборот :) в поиске EAV явно слаб (хотя потому что статистики по атрибутам ни к черту), а вот для только хранения и отображения всякой заранее неизвестной шняги - вполне себе справляется.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528412
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинDimitry Sibiryakovпропущено...

Не придётся. CSS изобрели не сегодня. И даже не вчера.

При чем тут CSS? Вы CSS-ом будете, например, таблицу транспонировать (уж не говорю фильтровать-расширять)?

nodir_azam Ну вот в классический EAV не влезает, нужно еще одно поле, а потом еще, еще...

Классический EAV строится не из одной таблицы, как в Вашем исходном письме и моем примере, а из четырех
Ваш расход топлива можно впихнуть и в классический EAV с главной таблицей из трех полей, просто это расписывать долго и лениво.
Вкратце - Таблица "расход топлива" будет у Вас типом сущности, каждая строка таблицы - экземпляром этой сущности,
"летом","зимой" - атрибутами сущности, "Д.Т. 95 " - значением специального дополнительного атрибута сущности RowName


В том то и дело, что гибкость и универсальность страдает.
У меня потом будут типы spatial, int, float и по этим полям надо будет искать.
В вашем примере, это всегда +1 поле, которое описывает, например, тип атрибута.
Другое решение я не нашел и решил написать сюда.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528662
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azamВ том то и дело, что гибкость и универсальность страдает.
У меня потом будут типы spatial, int, float и по этим полям надо будет искать.

Расширения EAV для полей разных типов - тоже не big deal и описаны много где (вкратце - это либо добавление в основную таблицу полей IntValue, DateValue и т.п., либо разбиение этой основной таблицы на несколько с полями соответствующих типов).

Я бы на Вашем месте все же не изобретал велосипед.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528714
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин
Расширения EAV для полей разных типов - тоже не big deal и описаны много где (вкратце - это либо добавление в основную таблицу полей IntValue, DateValue и т.п., либо разбиение этой основной таблицы на несколько с полями соответствующих типов).
Я бы на Вашем месте все же не изобретал велосипед.

Согласен. Я принципе так и сделал.
Получается так:

key valueД.Т. 95. Летом 50 лД.Т. 95. Зимой 60 лД.Т. 85. Летом 60 лД.Т. 85. Летом 65 л
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528764
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azam В том то и дело, что гибкость и универсальность страдает. У меня складывается ощущение что вы неправы.
Танцуйте от печки
У вас есть некая CMS система. Есть список типичных (или критичных по времени) действий с этой системой: наполнение, поиск - выдача результатов и т.п.
Вот эти типичные действия и оптимизируйте, а не готовность к будущим изменениям в системе.
Dimitry Sibiryakov А лучше не маяться и хранить контент в BLOB сразу в языке разметки - HTML, Tex и т.п.
Нужные для поиска параметры - вытащить отдельно.+1
Кот Матроскин Особенно весело будет, когда решат изменить внешний вид сайта и для этого придется лазить по куче блоб-полей.Когда придется (если придется) лучше это будет сделать один раз для всех, неторопясь, чем каждый раз собирать документ с секундомером. Потом сырцы выбрасывать никто не советовал. Место на диске стоит недорого.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528772
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257У вас есть некая CMS система. Есть список типичных (или критичных по времени) действий с этой системой: наполнение, поиск - выдача результатов и т.п.
Вот эти типичные действия и оптимизируйте, а не готовность к будущим изменениям в системе.


Приложения разные. Система одна.
Одно приложение, к примеру хранит рецепты. Другое - описание моделей авто.
Третье - картинки и описание танков.

Вроде бы все хранят текст и картинки, но нет. Есть еще характеристики, в них вся разница.
Хранить в блобе с разметкой - та еще задача. На клиенте надо эту разметку распознать
и интерпретировать. Клиент не браузер, еще раз повторюсь.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528785
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Когда придется (если придется) лучше это будет сделать один раз для всех, неторопясь, чем каждый раз собирать документ с секундомером. Потом сырцы выбрасывать никто не советовал. Место на диске стоит недорого.

С этих позиций вообще никакая база не нужна, надо все делать на static HTML - ничего не придется "собирать с секундомером" :).
Счмтаете что весь мир последние 20 лет идет не в ногу (изо всех сил отделяя данные от их представления) и только Вы идете в ногу?
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528788
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nodir_azam Приложения разные. Система одна.
Одно приложение, к примеру хранит рецепты. Другое - описание моделей авто.
Третье - картинки и описание танков.И вы хотите сделать одну базу подходящую всем, запрячь так сказать в одну телегу коня и трепетную лань. Не боитесь что получившееся универсальное решение будет универсально плохо работать со всеми приложениями? Не проще ли будет сделать несколько похожих, но заточенных решений?
nodir_azam На клиенте надо эту разметку распознать Клиенту надо отдавать то что он клиент скушает.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528791
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин С этих позиций вообще никакая база не нужна, надо все делать на static HTMLВ моем хрустальном шаре подробностей задачи не видно, поэтому голословных утверждений делать не буду.
...
Рейтинг: 0 / 0
Универсальная, формализованная таблица для хранения контента
    #38528794
nodir_azam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257И вы хотите сделать одну базу подходящую всем, запрячь так сказать в одну телегу коня и трепетную лань. Не боитесь что получившееся универсальное решение будет универсально плохо работать со всеми приложениями? Не проще ли будет сделать несколько похожих, но заточенных решений?


Нет, не боюсь. В том-то и фишка. Одно серверное решение (CMS) позволяет сократить издержки и время публикации контентных приложений в разы, а может и на порядок. Даже можно было бы наверно использовать готовый, если бы клиент был на браузере. В нашей системе важен контент, а способ его отображения. Универсальность имеет большой смысл.
Уж клиент данные в формате JSON обыграет, и качественно, в этом сомнений нет.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Универсальная, формализованная таблица для хранения контента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]