Здравствуйте! Возникла трудность в проектировании БД. Имеется небольшой сайт с магазином для которого создается более менее нормальная БД. Хочу узнать мнение опытных людей в правильности проектирования БД
Имеется 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 раз.
Как решить такую проблему? В голову ничего нормального не приходит.
Даже если не пишите на рельсах советую полистать книгу( можно найти и на русском)
там как раз во 2 части по шагам расписано создание интернет магазина, и структура БД там проектировалась отлично.
Это если надо быстро.
Если будете продолжать создавать БД в будущем то лучше прочесть доп еще литературу.
К ваше структуре слишком много вопросов. Хочется все переделать, и привести к виду как описано в книге выше.
Поясню почему не использую "стандартную структуру БД".
У меня все 3 таблицы товаров кроме 2-3 полей ничего между собой не имеют общего. Размещать все в 1 таблицу где будет много NULL полей я считаю не разумным.
Далее, от 2 из 3 таблиц данные должны идти напрямую в таблицу "Заказа товара", но из-за связи 1 к 1 и невозможности определить (на данный момент) от какой таблицы идет IDшник товара.
Далее, 1 из 3 таблиц имеет доп. таблицу. Она нужна для переноса товара из 1 аккаунта в другой, чтобы не завязывать заказ на 2 логина я сделал так. Если добавить 2 логин в заказ, то очень много NULL полей будет.
Если есть вопросы задавайте, чтобы могли коллективно найти решение.
Вам бы как-то все товары одной табличкой лучше организовать. Сущность ведь одна. И там в полях уже добавить что нужно из Permissions, Unban и Transfer.
Ещё неплохо добавить табличку "Корзина", в которой будет соответствие id юзера и id товара. Или Order и есть такая табличка?
В общем в моём представление всё сводится к виду:
Users(id, login, ...) юзеры
Goods(id, title, price, count, status) Товары, в поле статус пишется то, для чего Вы распределили товары по трём таблицам
Cart(id, id_user, id_good, count) Корзина
ну и Transfer_login - она, как я понял, у вас служебная для чего-то отсранённого.