Эффективно ли использовать только одну таблицу для хранения более одного типа отношений? - PullRequest
0 голосов
/ 07 января 2019

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

Сообщения

  • post_id
  • post_description

затем таблица отношений:

  • post_has_
    • post_id
    • user_id
    • отношение (строка: «лайк», «комментарий», «акции») и т. Д.

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

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Трудно быть конкретным, но показанный вами дизайн обычно используется для отношений " многие-ко-многим " между сообщениями и пользователями.

Что может означать в терминах приложения: «Один пост может принадлежать нескольким различным пользователям; у каждого пользователя могут быть разные« отношения », и « Один пользователь может создавать несколько сообщений ».

Это может быть, а может и не быть правдой - по вашему вопросу это трудно понять.

Если ваше намерение: «Один пользователь может создать много сообщений. Каждое сообщение может иметь много связей. Сообщение принадлежит только одному пользователю.», Вы добавили бы «user_id» в свою таблицу сообщений.

0 голосов
/ 07 января 2019

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

Или, если вы когда-нибудь решите стать еще более любопытным (безумнее, смеется) и хотите иметь возможность оставлять комментарии о комментариях или даже комментарии о комментариях к комментариям (т.е. углубляться в уровни), то вы можете захотеть как-то использовать одну таблицу который может обрабатывать все возможности, такие как: сообщения: post_id parent_post_id_if_applies post_description Идентификатор пользователя отношение (строка: «оригинал», «лайк», «комментарий», «акции») и т. д.

И, возможно, поле уровня, чтобы сказать, какой у вас уровень, например 1 для исходного сообщения, 2 для представления или комментария к исходному сообщению, 3 для представления или комментария о # 2 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...