@kott9ra

Как правильно спроектировать бд?

Здравствуйте! Возникла трудность в проектировании БД. Имеется небольшой сайт с магазином для которого создается более менее нормальная БД. Хочу узнать мнение опытных людей в правильности проектирования БД

Имеется 6 таблиц для работы магазина.
Все поля не стал переписывать.
1. User (id, login) Эта таблица пользователей
2. Order (id_order, id_users,purse,date) Эта таблица заказов
3. Permissions (id, title, price) Эта таблица товаров (Статусы)
4. Unban (id, price, count) Эта таблица товаров (Разбаны)
5. Transfer (id, price) Эта таблица товаров (Переносы)
6. Transfer_login (id, id_transfer, id_new_login) Эта промежуточная таблица для занесения данных

Я хотел сделать 1 таблицу "Заказ товаров", чтобы все "стекалось" туда, но тогда не возможно было без доп. поля определять к какой таблице относится товар. Вдобавок к этому идет связь 1 к 1 от таблиц с товарами к таблице "Заказ товара",т.к. 1 пользователь может заказать не более 1 товара из каждой таблицы за 1 раз.

Как решить такую проблему? В голову ничего нормального не приходит.
  • Вопрос задан
  • 2341 просмотр
Пригласить эксперта
Ответы на вопрос 2
JSinga
@JSinga
Agile Web Development with Rails

Даже если не пишите на рельсах советую полистать книгу( можно найти и на русском)
там как раз во 2 части по шагам расписано создание интернет магазина, и структура БД там проектировалась отлично.

Это если надо быстро.
Если будете продолжать создавать БД в будущем то лучше прочесть доп еще литературу.

К ваше структуре слишком много вопросов. Хочется все переделать, и привести к виду как описано в книге выше.
Ответ написан
tenoclock
@tenoclock
Python/Django программист
Вам бы как-то все товары одной табличкой лучше организовать. Сущность ведь одна. И там в полях уже добавить что нужно из Permissions, Unban и Transfer.

Ещё неплохо добавить табличку "Корзина", в которой будет соответствие id юзера и id товара. Или Order и есть такая табличка?

В общем в моём представление всё сводится к виду:
Users(id, login, ...) юзеры
Goods(id, title, price, count, status) Товары, в поле статус пишется то, для чего Вы распределили товары по трём таблицам
Cart(id, id_user, id_good, count) Корзина

ну и Transfer_login - она, как я понял, у вас служебная для чего-то отсранённого.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы