Mysql Innodb: объединение 3 таблиц в единую таблицу для быстрого поиска ... Условные объединения

ЗАДНИЙ ПЛАН:

Я разрабатываю функцию поиска, которая позволяет пользователям одновременно искать три объекта: классы, студенческие организации и события по имени.

MySQL 5.6 и Innodb будут использоваться на относительно небольшом сервере.

ТАБЛИЦЫ:

Поиск

entity_id  (tiny_int)
entity_type  (tiny_int)
full_name   (varchar(255))

Index (Primary) -> entity_id, entity_type
Index (FULL TEXT INDEX) -> full_name

Класс (entity_type = 1)

class_id
ALL OTHER COLUMNS...

События (entity_type = 2)

event_id
ALL OTHER COLUMNS

Orgs (entity_type = 3)

org_id
ALL OTHER COLUMNS

ВОПРОС:

Is it appropriate to index the name of 3 seemingly similar but different data sets (class, event, organization) into one Поиск table through the use of entity_id, entity_type Primary Key?

How would I go about doing a join on the Поиск table with the Class, Events, Orgs tables? Is there a conditional I can do using the entity_type?

Любая помощь или руководство получают большую оценку.

0
nl ja de

1 ответы

Это похоже на разумный подход к связыванию этих трех типов таблиц. Это похоже на то, что вы часто видите в ppl с «account_type: user, admin, other» и ссылаетесь на отдельные настройки для каждого.

Чтобы выполнить соединение между основной таблицей и всеми тремя подсистемами, будет зависеть от того, насколько похожи столбцы. Если они похожи на v, вы можете сделать три объединения в одном запросе и поместить entity_type как часть предложения on. Если они отличаются друг от друга, вам может быть лучше, если вы разделите запрос на 3 отдельных объединения. Вы можете объединить их вместе, но это может быть или не быть того стоит.

1
добавлено
Да. Абсолютно.
добавлено автор ethrbunny, источник
Может ли оператор «ON» иметь несколько условий, таких как ON a.entity_id = b.entity_id AND a.entity_type = 1 ?
добавлено автор ProfileTwist, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw