Зачем хранить данные в разных строках в базе данных?

0

Я заметил, что некоторые люди хранят связанные данные в разных строках в базе данных, а некоторые poeple помещают связанные данные в одну строку.

Например

  id  user_id  field_id  value
  1      1        9     "name 1"
  2      1       10     "address 1"
  3      1       11     "phone 1"
  4      2        9     "name 2"
  5      2       10     "address 2"
  6      2       11     "phone 2"

против

 id     user_id    name         address      phone
 1        1        name 1     address 1     phone 1
 2        2        name 2     address 2     phone 2

Здесь вы видите два способа хранения данных для пользователя 1 и пользователя 2. Я не знаю, почему первый метод будет использоваться во втором.

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

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

Спасибо

  • 0
    Вы имеете в виду столбцы? Если люди используют его первым способом, это плохая практика, он даже не проходит 1NF.
  • 0
    Wordpress использует первый метод для хранения материалов в базе данных, что превращает мою жизнь в настоящий ад. Чтобы сделать простую вещь, я должен потратить целый день, чтобы получить правильный SQL
Теги:

1 ответ

2

Первый дизайн таблицы позволяет конечным пользователям динамически добавлять новые поля. Некоторое программное обеспечение может позволить вам добавлять новые поля к определенным вещам. Многие CMS делают это, а также такие приложения, как Jira. Предположительно, есть отдельная таблица fields где они могут быть определены.

Если у вас нет явной необходимости в этом, избегайте этого шаблона любой ценой. Это действительно тот тип вещей, который вы должны делать, только если у вас нет других вариантов, и даже тогда это может иметь смысл:

  • Делайте это только для настраиваемых полей, но сохраняйте поля по умолчанию
  • Возможно, вместо этого используйте тип JSON и просто выгрузите все пользовательские данные. Это не так хорошо, как индексы таблицы значений key->.
  • 0
    Спасибо за ваш ответ, но вы не объяснили, почему метод 2 следует избегать любой ценой, даже при том, что SQL-запросы кажутся проще, короче и быстрее при использовании метода 2.
  • 1
    @PaulPatt Они сказали, что метод 1 ( дизайн первой таблицы ) следует избегать любой ценой, а не метод два, что хорошо.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню