При использовании базы данных SQL, когда у меня есть таблицы с одинаковыми атрибутами.

Например, если у меня есть

  • [posts] с атрибутами (идентификатор, изображение, описание, количество лайков и антипатий)
  • [Comments] с атрибутами (идентификатор, изображение, описание, количество лайков и антипатий)
    а также
  • [Replies] с атрибутами (идентификатор, изображение, описание, количество лайков и антипатий)

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

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

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

2
M.Saif 31 Дек 2019 в 11:38
У этих трех сущностей могут быть общие атрибуты - но логически они все еще являются отдельными сущностями - сообщение, которое затем может иметь 0-n комментариев и 0-n ответов на него. Я бы четко разделил их на отдельные таблицы.
 – 
marc_s
31 Дек 2019 в 11:42

2 ответа

Ответ полностью зависит от того, как вы используете эти таблицы.

Их объединение упростит написание логики, которая одинаково обращается ко всем трем типам (например, предоставление значка пользователю, набравшему X лайков, или удаление всего содержимого пользователя).

Их разделение обеспечит большую гибкость, если вы захотите изменить эти таблицы в будущем (например, добавив дату редактирования, которая может применяться только к сообщениям, но не к комментариям).

1
Mureinik 31 Дек 2019 в 11:45
1
Лично я бы разделил их, так как это упрощает расширение таблиц, как вы упомянули. Довольно часто изменения в объектах вносятся на поздних этапах разработки (к сожалению).
 – 
A_kat
31 Дек 2019 в 12:07

У вас есть классическая фраза «как бывает».

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

Вы можете разделить свою таблицу по типу сообщений, что поможет.

Если у вас есть 3 таблицы, вам могут понадобиться три разных способа получения данных.

Лично я бы разделил одну таблицу и сохранил ее все вместе.

0
Jim Jimson 1 Янв 2020 в 05:42