Проектирование БД магазина

Рейтинг: 1Ответов: 2Опубликовано: 17.04.2015

Здравствуйте! Создаю игровой магазин и столкнулся с 1 проблемой. В магазине буду продавать игровой статус, игровые деньги, игровые предметы.

У всех этих товаров есть одинаковые поля

1. Название
2. Описание
3. Цена
4. Картинка

НО есть и слишком разные поля для каждой группы товаров

Для статуса:
1. Продолжительность продажи
2. Время жизни статуса

Для Денег
1. Валюта денег
2. Максимально возможный баланс

Для предметов
1. Количество предметов

Как правильно составить БД исходя из таких полей?

Ответы

▲ 2Принят

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

  • Создал таблицу GAME_OBJECTS с общими полями и полем TYPE указывающим тип объекта.
  • Создал бы еще 3 таблицы: GAME_STATUSES, GAME_MONEY, GAME_THINGS с полем OBJECT_ID указывающим на поле в таблице GAME_OBJECT.

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

▲ 2

Тут я вижу два варианта.

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

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

    [товар]
    -Название
    -Описание
    -Цена
    -Картинка
    -Тип товара(id)