Я работаю над приложением магазина на PHP с MySQL. В настоящее время я храню свои данные в 4 таблицах: одна для продуктовых линеек, одна для конкретных продуктов в этих продуктовых линейках, одна для изображений продуктов и одна, которая указывает, какие изображения связаны с какими конкретными продуктами. Каждый конкретный продукт принадлежит одной линейке продуктов, каждое изображение продукта может принадлежать нескольким конкретным продуктам, и каждый конкретный продукт может иметь несколько изображений. Мои таблицы выглядят так:
ProductLines
id, name, description, etc.
SpecificProducts
productLineID
id, color, size, etc.
ProductImageLinks
specificProductID
imageID
Images
id, imageFileLocation, name, etc.
Таким образом, он работает нормально, но, похоже, он не очень эффективен для поиска.
Например, у меня есть страница, на которой перечислены все линейки продуктов вместе с миниатюрой случайно выбранного изображения из этой линейки продуктов. Для этого мне нужно сначала запросить в базе данных список всех товарных линий, а затем выполнить отдельный запрос для каждой товарной линейки , чтобы получить все конкретные продукты, с которыми связаны изображения, выберите один из них, и затем запросите снова, чтобы получить изображение.
Еще одна возможность, которую я рассмотрел, - это использовать один запрос, чтобы получить все товарные линии, на которые я смотрю, второй запрос, чтобы получить все конкретные продукты для всех этих товарных линий, третий запрос, чтобы получить все изображение. ссылки, которые определяют, какие изображения связаны с какими конкретными продуктами, и четвертый запрос, чтобы получить все эти изображения. Я полагаю, что это будет немного быстрее из-за уменьшенного количества запросов, но PHP потребует много работы для выяснения связей между линиями продуктов и продуктами и изображениями, что может быть столь же медленным.
Итак, мой вопрос: есть ли лучший способ сохранить эти данные? Или лучший способ получить его на основе базы данных, которая у меня уже есть? Или один из двух вариантов, которые я определил, действительно является моей лучшей ставкой?
Редактировать: Я не храню файлы изображений в базе данных. Файлы изображений хранятся в файловой системе. Моя таблица «Изображения» в базе данных просто хранит местоположение файла изображения вместе с полезной информацией, такой как заголовок изображения, альтернативный текст и т. Д.