|
Связь таблиц-сущностей с тегами: общая таблица связей или отдельные таблицы связей ?
|
|||
---|---|---|---|
#18+
stenfordЕсли утверждается, что сущности симантически не связаны друг с другом, то должно быть по отдельной таблице для связки с тэгами один ко многим для каждой из сущностей, мешать список тэгов для несвязанных между собой сущностей в одной таблице нельзя Если утверждается что сущности все-же симантически связаны и список тэгов это их общая характеристика, то рассматривается один из 3х вариантов с наследованием. Соответственно в случае ТРС у тебя будет по таблице с тэгами на каждую таблицу с сущностями, а в случае ТРН одна таблица с тэгами на общую таблицу со всеми сущностями +100 . Вы, собственно, и озвучили мои мысли/выводы. А реализовал я первый вариант. Для случая отдельных таблиц-сущностей это самый чистый, самый легковесный (минимум дисковой памяти), самый быстрый (скорость выборки) и самый правильный (с точки зрения классической реляционной модели). Ну а дальше на рабочих нагрузках при необходимости можно выполнять поэтапную денормализацию для ускорения виборки/фильтрации. P.S . Dimitry Sibiryakov почему-то принципиально отказывается рассматривать вариант отдельных таблиц-сущностей (даже на личности перейти успел). Ведь очевидно, что наличие тегов в предметной области вовсе не является определяющим фактором способа реализации иерархии ( TPH или TPC ). И тем более необходимости перехода на модель EAV . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 02:33 |
|
Связь таблиц-сущностей с тегами: общая таблица связей или отдельные таблицы связей ?
|
|||
---|---|---|---|
#18+
сам лично такую штуку не делал, но покопал бы еще следующий вариант: текстовое поле + where like + оптимизации для like запросов, например pg_trgm у постгреса: https://niallburkley.com/blog/index-columns-for-like-in-postgres https://www.cybertec-postgresql.com/en/postgresql-more-performance-for-like-and-ilike-statements плюсы: * проще структура БД * меньше кода, чтобы это дело сохранять и обновлять * на UI достаточно tag editor, который через запятую складывает значения минусы: * думаю трудно будет сделать запрос - кол-во сущностей по тегам * вставка дольше из-за индекса ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 10:11 |
|
Связь таблиц-сущностей с тегами: общая таблица связей или отдельные таблицы связей ?
|
|||
---|---|---|---|
#18+
17-77сам лично такую штуку не делал, но покопал бы еще следующий вариант: текстовое поле + where like + оптимизации для like запросов, например pg_trgm у постгреса... на UI достаточно tag editor, который через запятую складывает значенияЕсли рассматривать вариант хранения тегов сущности в одном поле (в таблице сущностей), то здесь возможны 2 варианта: 1 ) ваш вариант с тегами через запятую (LIKE + индекс по триграммам) 2 ) вариант с массивом json (этот вариант также упоминал graycode ) В варианте с json , судя по всему, индекс по jsonb будет кушать меньше дисковой памяти. Да и поиск, наверняка, будет работать быстрее, чем по триграммам. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 11:44 |
|
Связь таблиц-сущностей с тегами: общая таблица связей или отдельные таблицы связей ?
|
|||
---|---|---|---|
#18+
Cyrax_02Ведь очевидно, что наличие тегов в предметной области вовсе не является определяющим фактором способа реализации иерархии (/TPH/ или /TPC/). И тем более необходимости перехода на модель /EAV/. Повторюсь в третий раз: если для вас всё очевидно, то начните уже реализацию. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 13:30 |
|
Связь таблиц-сущностей с тегами: общая таблица связей или отдельные таблицы связей ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Повторюсь в третий раз: если для вас всё очевидно, то начните уже реализацию. вот прям вчера еще хотел сказать, - да сделай уже как думаешь, а то скоро самому уже надоест всё... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 23:12 |
|
Связь таблиц-сущностей с тегами: общая таблица связей или отдельные таблицы связей ?
|
|||
---|---|---|---|
#18+
Cyrax_02 А реализовал я первый вариант. Для случая отдельных таблиц-сущностей это самый чистый, самый легковесный (минимум дисковой памяти), самый быстрый (скорость выборки) и самый правильный (с точки зрения классической реляционной модели). Ну да, ну да, главное себя в этом убедить)) Разницы между вашим первым и вторым вариантом практически нет, партицируете таблицу связей по entity_type и вуаля) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 23:24 |
|
|
start [/forum/topic.php?fid=32&gotonew=1&tid=1539834]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
128ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 244ms |
total: | 483ms |
0 / 0 |