Я не думаю, что здесь есть один «правильный» ответ.Я думаю это зависит .Если вы используете одну таблицу со столбцом «тип отношения» и часто хотите извлечь только отношения одного типа, скажем, просто «Избранное», то каждый запрос к этой таблице должен будет применять предложение WHERE для фильтрации типов, которые вы используете. не хочу.Это может привести к медленным запросам, если вы неправильно индексируете неключевой столбец «тип отношения».Кроме того, это делает так, чтобы будущие разработчики всегда должны были знать и не забывать фильтровать по типам, которые они хотят, или они могут неожиданно получить данные о связях, которые они не намереваются.Наличие двух отдельных таблиц легче понять.Например, мне проще быстро узнать, чего ожидать в таблице «Избранное», чем в таблице «Users_Posts», поэтому отдельные таблицы могут сообщать различия быстрее.
С другой стороны, есливам часто нужно выбирать оба типа отношений в одном наборе, тогда проще иметь их в одной таблице, потому что вам не нужно беспокоиться о выполнении UNION для объединения данных из двух таблиц в однуПосмотреть.Что если бы было 10 000 различных возможных типов отношений?Вы бы хотели 10000 разных столов, или вы бы предпочли один стол?Большинство людей предпочли бы одну таблицу в этом случае.
Так что я думаю, что это зависит от многих факторов, таких как ожидаемое использование, размер и т. Д. «Правильный» ответ - это больше искусство, чем наука.