Хранить несколько URL изображений в одной строке в базе данных

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

1. Первый путь

Один подход — форма 1NF (которой следует избегать, как я читал в книгах).

Я создам таблицу Кормить с URL-адрес столбца и хранить несколько URL-адресов, разделенных запятой

Я бы URL

1 a.jpg, b.jpg, c.jpg

2 xyz.jpg, image.jpg

Чтобы получить изображения, я бы использовал explode ()

  $photos = explode(' , ', $url);

2. Второй способ

Второй способ — нормализовать таблицу и создать отдельную таблицу изображений с отношением «многие к одному» с таблицей Feed.

Таблица подачи:

Я бы

1

2

Таблица изображений:

шлагтов URL

1 a.jpg

1 b.jpg

1 c.jpg

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

2

Решение

У вас есть переменное количество имен изображений? «Массивы» должны быть реализованы в виде строк в другой таблице. Как с твоим №2.

Вы, очевидно, сделали свою домашнюю работу и прочитали аргументы; Я не буду перефразировать их здесь. Вместо этого я предлагаю повернуть вопрос двумя учебными упражнениями.

  1. Идем дальше и реализуем # 1. Через месяц вы поймете проблемы. В этот момент вы получите другой урок, а именно …
  2. как изменить схему (1 таблицу на 2) и сохранить данные. Это займет несколько операторов SQL; они будут вторым учебным упражнением.
2

Другие решения

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

Итак, ваша первоначальная идея близка к правильной (Первый способ). Но я бы посоветовал использовать функции json_ * для хранения значений.

$urls = json_encode( ['x.jpg', 'y.jpg', 'z.jpg'] );
// INSERT INTO mytable (..., urls) VALUES (..., $urls);

// SELECT urls FROM mytable;
$photos = json_decode($data['urls']);
0

По вопросам рекламы [email protected]