Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > База данных интернет магазина


Автор: zzdxw 8.11.2017, 22:44
Всем привет! Помогите новичку с БД.
Дали задание спроектировать БД интернет-магазина с 5 таблицами.
Вроде бы элементарное задание, но я никак не могу определиться с сущностями и связями (то есть с самой сутью).
Для создания и редактирования БД использую консоль mySQL.

Моя примерная схема базы данных:

Таблица Товары: ID товара (PRIMARY), наименование, цена.
Таблица Юзеры: ID юзера (PRIMARY), ФИО юзера.
Таблица Комменты: ID коммента (PRIMARY), ID товара, коммент.
Таблица Покупки: ID покупки (PRIMARY), ID корзины.
Таблица Корзина: ID корзины (PRIMARY), ID товара, ID юзера.

Достаточно ли этого? Правильно ли построена архитектура (если можно так выразиться)?

Автор: Akina 9.11.2017, 07:45
Цитата(zzdxw @  8.11.2017,  23:44 Найти цитируемый пост)
Правильно ли построена архитектура (если можно так выразиться)? 

Нет.

Цитата(zzdxw @  8.11.2017,  23:44 Найти цитируемый пост)
не могу определиться с сущностями и связями (то есть с самой сутью).

Ну так анализ-то не проведён... хотя могу обрадовать - сущности на первый взгляд выделены верно. Теперь определяйтесь с атрибутами, связями и процессами.

Автор: zzdxw 9.11.2017, 13:37
Цитата

Теперь определяйтесь с атрибутами, связями и процессами.


Код

CREATE TABLE goods (
goods_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
name_of_goods VARCHAR (255) NOT NULL,
price_ru DECIMAL NOT NULL);

CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
username VARCHAR(50) NOT NULL);

CREATE TABLE comments (
comment_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
goods_id INT NOT NULL,
user_id INT NOT NULL,
comment VARCHAR(255) NOT NULL);

CREATE TABLE purchases (
purchase_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
user_id INT NOT NULL,
goods_id INT NOT NULL,
purchase_date DATE NOT NULL);

CREATE TABLE cart (
cart_number INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
user_id INT NOT NULL);



Подскажите, правильно ли я всё сделал?

Автор: Snowy 9.11.2017, 13:39
Таблица Прайслист: ID позиции (PRIMARY), категория, наименование, цена, статус (на складе, в продаже, закрыта)
Таблица Юзеры: ID юзера (PRIMARY), ФИО юзера, email, phone, адрес для доставки, логин, пароль, статус (регистрация, подтверждён, бан), ...
Таблица Комменты: ID коммента (PRIMARY), ID товара, коммент.
Таблица Заказ: ID (PRIMARY), ID юзера, статус (оформляется/корзина, сформирован, оплачен, аннулирован), дата создания, дата закрытия, способ оплаты, доставка
Таблица Товар: ID (PRIMARY), ID позиции в прайслисте, ID заказа, цена на момент оформления заказа

Это структура для штучного товара. То есть торгуем готовыми изделиями, а не тоннами и кубометрами.
Без учёта документов: счетов, накладных, прочей бухгалтерии и налогов.

Прайслист: раздел бытовая техника, телевизор "Хрюндик". Цена 6000 единиц валюты. 
Товар в количестве 50 штук. 
Начинаем продавать. Продали 5 штук. Снизили цену до 5999. Продали ещё 28 штук и т.д...

Автор: Akina 9.11.2017, 13:44
Ну вот опять... анализ где? ну или хотя бы объяснения, почему именно так, а не иначе?
Даже навскидку - схема не предусматривает половины бизнес-процессов. Snowy хорошо показал на один из них - изменение цены товара. Обычная практика в магазине... Что делать-то будешь? менять в таблице товара цену? так готовые невыкупленные заказы поплывут...

Автор: zzdxw 9.11.2017, 14:16
Цитата

Прайслист: раздел бытовая техника, телевизор "Хрюндик". Цена 6000 единиц валюты. 
Товар в количестве 50 штук. 
Начинаем продавать. Продали 5 штук. Снизили цену до 5999. Продали ещё 28 штук и т.д... 

Цитата

схема не предусматривает половины бизнес-процессов


Ребят, спасибо, но вы очень глубоко копаете. 
Это обычное задание по БД. Спроектировать БД для инет магазина с 5 таблицами (товары, юзеры, комменты к товарам, покупки, корзина). Как, например, задания по составлению БД студент-группа-факультет и т.п. 
Я сделал эти сущности и добавил атрибуты. 
И вот спрашиваю, верно ли я составил БД, атрибуты, связи? Если нет, подскажите как нужно?
Еще раз спасибо.

Автор: igorold 9.11.2017, 15:10
Цитата(Snowy @  9.11.2017,  13:39 Найти цитируемый пост)
Таблица Комменты: ID коммента (PRIMARY), ID товара, коммент.


Я бы добавил ИД юзера - кто собственно комментировал ... дату ... м.б. оценку, поставленнуя товару ... 

Цитата(zzdxw @  8.11.2017,  22:44 Найти цитируемый пост)
Таблица Корзина: ID корзины (PRIMARY), ID товара, ID юзера.


Скорее корзина должна быть без ИД товара, а вот записи о товаре, которые кидают в корзину, должны иметь уже ИД корзины, ИД товара, Цену и Количество.


Вот навскидку по 2-м таблицам ... т.е. схема написана дилетантом, который не хочет думать ... 

Автор: zzdxw 9.11.2017, 16:02
igorold, я во втором своем сообщении написал код mySQL данной бд. Там таблица "комментарии" уже с ID юзера, в таблице "корзина" нет ID товара. 

Цитата
 вот записи о товаре, которые кидают в корзину, должны иметь уже ИД корзины, ИД товара, Цену и Количество

Если про таблицу "товары", то там есть атрибуты ID товара (goods_id), наименование (name_of_goods) и цена (price_ru). То есть туда надо добавить атрибут ID корзины (cart_number) и создать новый "Количество"?
Цитата
схема написана дилетантом

Новичком.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)