SQL Design: таблица изображений как хранилище для нескольких таблиц

Ситуация

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

Моя проблема здесь в том, чтобы выбрать параметры для хранения изображений каждого продукта (например, еда, одежда, фильмы) каждого поставщика услуг, а также изображений для поставщиков услуг и торгового центра. Каждая запись этих объектов (продуктов, поставщиков услуг или торгового центра) может иметь несколько изображений.

Одно из предложений - создать таблицы для этих объектов, и к каждой из этих таблиц будут прикреплены отдельные таблицы для хранения изображений.

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

Итак, что является хорошей практикой в ​​ситуации, когда несколько таблиц используют одни и те же поля, как это?

Мой нынешний подход

Я создаю 4 таблицы: Mall, Movie, ServiceProvider и Image. Каждая из первых трех таблиц имеет отношение Один ко многим с таблицей Image.

Мой подход - иметь таблицу CommonKey. Каждая из первых трех таблиц будет иметь столбец типа CommonKeyId (ссылка на Id в таблице CommonKey) (отношение один-один). Таблица Image будет иметь отношение "один-много" с таблицей CommonKey. Делая это, я думаю, я достигну отношения «один-много» между mall, movie, serviceprovider и Image. Схема должна быть такой:

SQL Design: таблица изображений как хранилище для нескольких таблиц

Другой подход для меня - это создание столбца Type для хранения типа изображения (например, торговый центр, фильм ...) и IdField для хранения идентификаторов записей в других трех таблицах.

Интересно, какой метод будет лучше в этой ситуации, с соблюдением 3 шагов нормальной формы? Пожалуйста, посоветуйте, спасибо.

Мы тоже задаемся вопросом, поскольку понятия не имеем, какова реальная «ситуация». Ваша диаграмма в порядке. Кроме того, шесть столов - это не много. Если вам нужно управлять 500-600 столами, дайте нам знать.

Gilbert Le Blanc 30.03.2021 15:50

@Gilbert Le Blanc, Спасибо за комментарий. Я просто редактирую свой вопрос с учетом ситуации, с которой я столкнулся. Надеюсь, теперь стало понятнее. И диаграмма содержит только ключевые поля, так как я думаю, что другие поля представляют собой общую информацию, которая не связана с проблемами.

B.Green 31.03.2021 05:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
37
0

Другие вопросы по теме