Mysql
 sql >> база данни >  >> RDS >> Mysql

Ръководство за проектиране на база данни за онлайн пазарска количка в MySQL

Този урок предоставя пълни стъпки за проектиране на схема на база данни за онлайн магазини и колички за пазаруване за управление на потребителите, продуктите, рецензиите, количките, поръчките и плащанията. Може да се използва допълнително за разработване на онлайн магазин и базирани на пазарска количка уебсайтове или приложения.

Диаграмата на взаимоотношенията на обектите или визуалният дизайн на базата данни е показан по-долу.

Онлайн количка за пазаруване

Бележки :Позволява на поръчките на гостите да направят поръчката без влизане. Сигурността може да бъде управлявана чрез следване на базата данни RBAC в MySql.

Можете също да посетите популярните уроци, включително Как да инсталирате MySQL 8 на Ubuntu, Как да инсталирате MySQL 8 на Windows, Как да инсталирате MySQL 8 с Workbench на Windows 10, RBAC база данни в MySql, Блог база данни в MySql, Quiz Database в MySQL, База данни за анкети и анкети в MySQL и научете основни SQL заявки в MySQL.

База данни за магазини

Първата стъпка е да създадете базата данни на магазина. Може да се създаде с помощта на заявката, както е показано по-долу.

CREATE SCHEMA `shop` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Използвал съм набора от знаци utf8mb4 за поддръжка на широк спектър от знаци.

Таблица с потребители

В този раздел ще проектираме Таблица на потребителите за съхраняване на потребителска информация. Същата таблица може да се използва за управление на различни типове потребители, включително администратори и клиенти. Може да се използва и за свързване на създателите на продукти (от административния панел) и клиентски поръчки, направени на уебсайта. Потребителите могат да проследяват собствените си поръчки и да проследяват състоянието. По-долу е посочено описанието на всички колони на потребителската таблица.

Id Уникалният идентификатор за идентифициране на потребителя.
Име Първото име на потребителя.
Биринно име Биринното име на потребителя.
Фамилия Фамилията на потребителя.
Мобилни Мобилният номер на потребителя. Може да се използва за влизане и регистрация.
Имейл Имейлът на потребителя. Може да се използва за влизане и регистрация.
Хеш на парола Хешът на паролата, генериран от подходящия алгоритъм. Трябва да избягваме съхраняването на обикновени или криптирани пароли.
Администратор Флагът за идентифициране дали потребителят е администратор. Не е задължително, ако RBAC таблиците са създадени, като се следва дизайнът на базата данни RBAC.
Продавач Флагът за идентифициране дали потребителят може да хоства продукт в магазина. Не е задължително, ако RBAC таблиците са създадени, като се следва дизайнът на базата данни RBAC.
Регистриран в Тази колона може да се използва за изчисляване на живота на потребителя с приложението.
Последно влизане Може да се използва за идентифициране на последното влизане на потребителя.
Въведение Краткото представяне на потребителя на доставчика, което ще бъде показано на продуктовата страница.
Профил Данните за доставчика, които да се показват на продуктовата страница.

Потребителската таблица със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`passwordHash` VARCHAR(32) NOT NULL,
`admin` TINYINT(1) NOT NULL DEFAULT 0,
`vendor` TINYINT(1) NOT NULL DEFAULT 0,
`registeredAt` DATETIME NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
`intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_mobile` (`mobile` ASC),
UNIQUE INDEX `uq_email` (`email` ASC) );

Таблица с продукти

В този раздел ще проектираме Таблица с продукти за съхраняване на данните за продукта. По-долу е посочено описанието на всички колони на таблицата с продукти.

Id Уникалният идентификатор за идентифициране на продукта.
Потребителски идентификатор Потребителският идентификатор за идентифициране на администратора или доставчика.
Заглавие Заглавието на продукта, което да се показва на страницата на магазина и страницата на продукта.
Метазаглавие Мета заглавието, което ще се използва за заглавие на браузъра и SEO.
Плюс Плужката за формиране на URL адреса.
Резюме Резюме за споменаване на ключови акценти.
Тип Типът за разграничаване на различните типове продукти.
SKU Звеното за поддържане на склад за проследяване на инвентара на продуктите.
Цена Цената на продукта.
Отстъпка Отстъпката за продукта.
Количество Наличното количество от продукта.
Пазарувайте Може да се използва за идентифициране дали продуктът е публично достъпен за пазаруване.
Създаден в Той съхранява датата и часа, в които е създаден продуктът.
Актуализирано в Той съхранява датата и часа, в които продуктът е актуализиран.
Публикувано в Той съхранява датата и часа, в които продуктът е публикуван в Магазина.
Започва в Той съхранява датата и часа, в който започва продажбата на продукта.
Завършва в Той съхранява датата и часа, в които приключва продажбата на продукта.
Съдържание Колоната, използвана за съхраняване на допълнителни подробности за продукта.

Той използва количеството в колоната, за да проследи наличните запаси в продуктовия инвентар, за да поддържа дизайна прост. Може да се наложи да посочите количеството в няколко колони, за да покриете широка гама от продукти. Възможните колони могат да бъдат sellQuantity, sellUnit, stockQuantity и stockUnit, където sellQuantity и sellUnit могат да се използват за показване в магазина за купувачите, а stockQuantity и stockUnit могат да се използват за проследяване на инвентара. Може също да се наложи да конвертирате sellUnit в stockUnit, докато актуализирате инвентара при поставяне на поръчката. Таблицата с продукти със съответните ограничения е, както е показано по-долу.

CREATE TABLE `shop`.`product` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`title` VARCHAR(75) NOT NULL,
`metaTitle` VARCHAR(100) NULL,
`slug` VARCHAR(100) NOT NULL,
`summary` TINYTEXT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`sku` VARCHAR(100) NOT NULL,
`price` FLOAT NOT NULL DEFAULT 0,
`discount` FLOAT NOT NULL DEFAULT 0,
`quantity` SMALLINT(6) NOT NULL DEFAULT 0,
`shop` TINYINT(1) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`publishedAt` DATETIME NULL DEFAULT NULL,
`startsAt` DATETIME NULL DEFAULT NULL,
`endsAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC),
INDEX `idx_product_user` (`userId` ASC),
CONSTRAINT `fk_product_user`
FOREIGN KEY (`userId`)
REFERENCES `shop`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Мета на продукта

Продуктовата мета таблица може да се използва за съхраняване на допълнителна информация за продукти, включително URL адреса на продуктовия банер и т.н. По-долу е посочено описанието на всички колони на метатаблицата на продукта.

Id Уникалният идентификатор за идентифициране на мета продукта.
Идентификатор на продукта Идентификаторът на продукта за идентифициране на основния продукт.
Ключ Ключът, идентифициращ мета.
Съдържание Колоната, използвана за съхраняване на метаданните на продукта.

Мета таблицата на продукта със съответните ограничения е, както е показано по-долу.

CREATE TABLE `shop`.`product_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_product` (`productId` ASC),
UNIQUE INDEX `uq_product_meta` (`productId` ASC, `key` ASC),
CONSTRAINT `fk_meta_product`
FOREIGN KEY (`productId`)
REFERENCES `shop`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

Таблица за преглед на продукти

В този раздел ще проектираме Таблица за преглед на продукти за съхраняване на отзивите за продукти. По-долу е посочено описанието на всички колони в таблицата за преглед на продукти.

Id Уникалният идентификатор за идентифициране на прегледа на продукта.
Идентификатор на продукта Идентификаторът на продукта за идентифициране на основния продукт.
Идентификатор на родител Идентификаторът на родител за идентифициране на родителския преглед.
Заглавие Заглавието на рецензията.
Оценка Оценката на прегледа.
Публикувано Може да се използва, за да се определи дали прегледът е публично достъпен.
Създаден в Той съхранява датата и часа, в които е изпратен прегледът.
Публикувано в Той съхранява датата и часа на публикуване на рецензията.
Съдържание Колоната, използвана за съхраняване на подробностите за прегледа.

Таблицата за преглед на продукта със съответните ограничения е, както е показано по-долу.

CREATE TABLE `shop`.`product_review` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`parentId` BIGINT NULL DEFAULT NULL,
`title` VARCHAR(100) NOT NULL,
`rating` SMALLINT(6) NOT NULL DEFAULT 0,
`published` TINYINT(1) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`publishedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_review_product` (`productId` ASC),
CONSTRAINT `fk_review_product`
FOREIGN KEY (`productId`)
REFERENCES `shop`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `shop`.`product_review`
ADD INDEX `idx_review_parent` (`parentId` ASC);
ALTER TABLE `shop`.`product_review`
ADD CONSTRAINT `fk_review_parent`
FOREIGN KEY (`parentId`)
REFERENCES `shop`.`product_review` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Таблица с категории и таблица с категории продукти

В този раздел ще проектираме Таблица с категории и Таблица с категории продукти за съхраняване на продуктовите категории и техните съпоставяния. По-долу е споменато описанието на всички колони на таблицата с категории.

Id Уникалният идентификатор за идентифициране на категорията.
Идентификатор на родител Идентификаторът на родител за идентифициране на родителската категория.
Заглавие Заглавието на категорията.
Метазаглавие Мета заглавието, което ще се използва за заглавие на браузъра и SEO.
Плюс Категорията, която формира URL адреса.
Съдържание Колоната, използвана за съхраняване на подробностите за категорията.

Таблицата на категориите със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`category` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`parentId` BIGINT NULL DEFAULT NULL,
`title` VARCHAR(75) NOT NULL,
`metaTitle` VARCHAR(100) NULL DEFAULT NULL,
`slug` VARCHAR(100) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`));

ALTER TABLE `shop`.`category`
ADD INDEX `idx_category_parent` (`parentId` ASC);
ALTER TABLE `shop`.`category`
ADD CONSTRAINT `fk_category_parent`
FOREIGN KEY (`parentId`)
REFERENCES `shop`.`category` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

По-долу е споменато описанието на всички колони в таблицата с категории продукти.

Идентификатор на продукта Идентификаторът на продукта за идентифициране на продукта.
Идентификатор на категория Идентификаторът на категорията за идентифициране на категорията.

Таблицата с категории продукти със съответните ограничения е, както е показано по-долу.

CREATE TABLE `shop`.`product_category` (
`productId` BIGINT NOT NULL,
`categoryId` BIGINT NOT NULL,
PRIMARY KEY (`productId`, `categoryId`),
INDEX `idx_pc_category` (`categoryId` ASC),
INDEX `idx_pc_product` (`productId` ASC),
CONSTRAINT `fk_pc_product`
FOREIGN KEY (`productId`)
REFERENCES `shop`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_pc_category`
FOREIGN KEY (`categoryId`)
REFERENCES `shop`.`category` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Таблица с етикети и Таблица с етикети на продукти

Подобно на таблиците за категории и категории продукти, можем да проектираме Таблица с етикети и Таблица с етикети на продукта . Основните разлики между категорията и етикета са изброени по-долу.

  • Колоната parentId не се изисква в таблицата с маркери.
  • Броят на категориите остава нисък, тъй като те могат да се използват за формиране на главното меню за навигационни цели. Таговете могат да бъдат повече в сравнение с категориите.
  • И двете категории и тагове могат да се използват за свързване на продуктите.
  • Трябва да се присвоят само няколко категории на продукт, докато броят на етикетите може да бъде повече.

Таблица на количката и Таблица с артикули в количката

Този раздел предоставя таблиците за управление на виртуалните колички за съхраняване на потребителския избор, преди да създадете действителната поръчка. Ако потребителят отмени плащането или плащането не успее, същите колички могат да бъдат използвани като изоставена количка от маркетинговия екип, за да се запита за купувачите. Влезлият потребител също може да бъде свързан с количката. По-долу е посочено описанието на всички колони на таблицата Количка.

Бележки :Таблицата на количката и таблицата с артикули в количката могат да бъдат направени по избор, ако базата данни за локални данни, сесия или в паметта като Redis се използва за съхраняване на данните за количката. Същото може да се направи и за създаване на поръчка за успешно плащане.

Id Уникалният идентификатор за идентифициране на количката.
Потребителски идентификатор Потребителският идентификатор за идентифициране на потребителя или купувача, свързан с количката.
Идентификатор на сесията Уникалният идентификатор на сесията, свързан с количката.
Токен Уникалният токен, свързан с количката за идентифициране на количката през множество сесии. Същият токен може да бъде прехвърлен и към Payment Gateway, ако е необходимо.
Състояние Състоянието на количката може да бъде Нова, Количка, Плащане, Платено, Завършена и Изоставена.
Име Първото име на потребителя.
Биринно име Биринното име на потребителя.
Фамилия Фамилията на потребителя.
Мобилни Мобилният номер на потребителя.
Имейл Имейлът на потребителя.
Ред 1 Първият ред за съхраняване на адреса.
Ред 2 Вторият ред за съхраняване на адрес.
Град Градът на адреса.
Провинция Провинцията на адреса.
Държава Държавата на адреса.
Създаден в Той съхранява датата и часа, в които е създадена количката.
Актуализирано в Той съхранява датата и часа, в които количката е актуализирана.
Съдържание Колоната, използвана за съхраняване на допълнителните подробности за количката.

Таблицата с количките със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`cart` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
`sessionId` VARCHAR(100) NOT NULL,
`token` VARCHAR(100) NOT NULL,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`line1` VARCHAR(50) NULL DEFAULT NULL,
`line2` VARCHAR(50) NULL DEFAULT NULL,
`city` VARCHAR(50) NULL DEFAULT NULL,
`province` VARCHAR(50) NULL DEFAULT NULL,
`country` VARCHAR(50) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_cart_user` (`userId` ASC),
CONSTRAINT `fk_cart_user`
FOREIGN KEY (`userId`)
REFERENCES `shop`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

По-долу е споменато описанието на всички колони в таблицата с артикули в количката.

Id Уникалният идентификатор за идентифициране на артикула в количката.
Идентификатор на продукта Идентификаторът на продукта за идентифициране на продукта, свързан с артикула в количката.
Идентификатор на количката Идент. № на количката за идентифициране на количката, свързана с артикула в количката.
SKU СКУД на продукта, докато го купувате.
Цена Цената на продукта при закупуването му.
Отстъпка Отстъпката на продукта при закупуването му.
Количество Количеството на продукта, избрано от потребителя.
Активно Флагът за идентифициране на това дали продуктът е активен в количката. Може да се използва, за да се избегне добавянето на един и същи продукт към една и съща количка няколко пъти.
Създаден в Той съхранява датата и часа, в които е създаден артикулът в количката.
Актуализирано в Той съхранява датата и часа, в които артикулът в количката е актуализиран.
Съдържание Колоната, използвана за съхраняване на допълнителните подробности за артикула в количката.

Таблицата с артикули в количката със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`cart_item` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`cartId` BIGINT NOT NULL,
`sku` VARCHAR(100) NOT NULL,
`price` FLOAT NOT NULL DEFAULT 0,
`discount` FLOAT NOT NULL DEFAULT 0,
`quantity` SMALLINT(6) NOT NULL DEFAULT 0,
`active` TINYINT(1) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_cart_item_product` (`productId` ASC),
CONSTRAINT `fk_cart_item_product`
FOREIGN KEY (`productId`)
REFERENCES `shop`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `shop`.`cart_item`
ADD INDEX `idx_cart_item_cart` (`cartId` ASC);
ALTER TABLE `shop`.`cart_item`
ADD CONSTRAINT `fk_cart_item_cart`
FOREIGN KEY (`cartId`)
REFERENCES `shop`.`cart` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Таблица за поръчки и таблица с артикули за поръчки

Този раздел предоставя таблиците за управление на поръчките в магазина. Влезлият потребител също може да бъде свързан с поръчката. По-долу е посочено описанието на всички колони на таблицата с поръчки.

Id Уникалният идентификатор за идентифициране на поръчката.
Потребителски идентификатор Потребителският идентификатор за идентифициране на потребителя или купувача, свързан с поръчката.
Идентификатор на сесията Уникалният идентификатор на сесията, свързан с поръчката.
Токен Уникалният токен, свързан с поръчката, за да я идентифицира през множество сесии. Същият токен може да бъде прехвърлен и към Payment Gateway, ако е необходимо.
Състояние Състоянието на поръчката може да бъде Нова, Плащане, Платено, Неуспешно, Изпратено, Доставено, Върнато и Завършено.
Под общо Общата цена на артикулите на поръчката.
Отстъпка за артикули Общата отстъпка на артикулите на поръчката.
Данък Данъкът върху артикулите на поръчката.
Доставка Таксите за доставка на артикулите на поръчката.
Общо Общата цена на поръчката, включително данък и доставка. Това изключва отстъпката за артикули.
Промоция Промоционалният код на поръчката.
Отстъпка Общата отстъпка на поръчката въз основа на промоционалния код или отстъпката в магазина.
Обща сума Общата сума на поръчката, която трябва да бъде платена от купувача.
Име Първото име на потребителя.
Биринно име Биринното име на потребителя.
Фамилия Фамилията на потребителя.
Мобилни Мобилният номер на потребителя.
Имейл Имейлът на потребителя.
Ред 1 Първият ред за съхраняване на адреса.
Ред 2 Вторият ред за съхраняване на адрес.
Град Градът на адреса.
Провинция Провинцията на адреса.
Държава Държавата на адреса.
Създаден в Той съхранява датата и часа, в които поръчката е създадена.
Актуализирано в Той съхранява датата и часа, в които поръчката е актуализирана.
Съдържание Колоната, използвана за съхраняване на допълнителните подробности за поръчката.

Таблицата на поръчките със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`order` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
`sessionId` VARCHAR(100) NOT NULL,
`token` VARCHAR(100) NOT NULL,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`subTotal` FLOAT NOT NULL DEFAULT 0,
`itemDiscount` FLOAT NOT NULL DEFAULT 0,
`tax` FLOAT NOT NULL DEFAULT 0,
`shipping` FLOAT NOT NULL DEFAULT 0,
`total` FLOAT NOT NULL DEFAULT 0,
`promo` VARCHAR(50) NULL DEFAULT NULL,
`discount` FLOAT NOT NULL DEFAULT 0,
`grandTotal` FLOAT NOT NULL DEFAULT 0,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`line1` VARCHAR(50) NULL DEFAULT NULL,
`line2` VARCHAR(50) NULL DEFAULT NULL,
`city` VARCHAR(50) NULL DEFAULT NULL,
`province` VARCHAR(50) NULL DEFAULT NULL,
`country` VARCHAR(50) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_order_user` (`userId` ASC),
CONSTRAINT `fk_order_user`
FOREIGN KEY (`userId`)
REFERENCES `shop`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

По-долу е посочено описанието на всички колони на таблицата с артикули за поръчка.

Id Уникалният идентификатор за идентифициране на поръчания артикул.
Идентификатор на продукта Идентификаторът на продукта за идентифициране на продукта, свързан с поръчания артикул.
Идентификатор на поръчката Идентификаторът на поръчката за идентифициране на поръчката, свързана с поръчания артикул.
SKU СКУД на продукта, докато го купувате.
Цена Цената на продукта при закупуването му.
Отстъпка Отстъпката на продукта при закупуването му.
Количество Количеството на продукта, избрано от потребителя.
Създаден в Той съхранява датата и часа, в които е създаден поръчания артикул.
Актуализирано в Той съхранява датата и часа, в които поръчаният артикул се актуализира.
Съдържание Колоната, използвана за съхраняване на допълнителните подробности за поръчания артикул.

Таблицата с артикули за поръчка със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`order_item` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`orderId` BIGINT NOT NULL,
`sku` VARCHAR(100) NOT NULL,
`price` FLOAT NOT NULL DEFAULT 0,
`discount` FLOAT NOT NULL DEFAULT 0,
`quantity` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_order_item_product` (`productId` ASC),
CONSTRAINT `fk_order_item_product`
FOREIGN KEY (`productId`)
REFERENCES `shop`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `shop`.`order_item`
ADD INDEX `idx_order_item_order` (`orderId` ASC);
ALTER TABLE `shop`.`order_item`
ADD CONSTRAINT `fk_order_item_order`
FOREIGN KEY (`orderId`)
REFERENCES `shop`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Таблица на транзакциите

Необходима ни е и таблица за транзакции, за да проследяваме плащанията по поръчка, направени от купувача и за счетоводство. Можем също да използваме същата таблица, за да запишем частичното или пълното възстановяване на поръчката. По-долу е споменато описанието на всички колони на таблицата с транзакции.

Id Уникалният идентификатор за идентифициране на транзакцията.
Потребителски идентификатор Потребителският идентификатор за идентифициране на потребителя, свързан с транзакцията.
Идентификатор на поръчката Идентификаторът на поръчката за идентифициране на поръчката, свързана с транзакцията.
Код Идентификационният номер на плащането, предоставен от шлюза за плащане.
Тип Типът транзакция на поръчката може да бъде кредитна или дебитна.
Режим Режимът на транзакцията на поръчката може да бъде офлайн, наложен платеж, чек, чернова, кабелна и онлайн.
Състояние Състоянието на транзакцията на поръчката може да бъде Нова, Отменена, Неуспешна, Изчакваща, Отхвърлена, Отхвърлена и Успешна.
Създаден в Той съхранява датата и часа, в които е създадена транзакцията за поръчка.
Актуализирано в Той съхранява датата и часа, в които транзакцията на поръчката е актуализирана.
Съдържание Колоната, използвана за съхраняване на допълнителните подробности за транзакцията.

Таблицата на транзакциите със съответните ограничения е както е показано по-долу.

CREATE TABLE `shop`.`transaction` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`orderId` BIGINT NOT NULL,
`code` VARCHAR(100) NOT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`mode` SMALLINT(6) NOT NULL DEFAULT 0,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_transaction_user` (`userId` ASC),
CONSTRAINT `fk_transaction_user`
FOREIGN KEY (`userId`)
REFERENCES `shop`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `shop`.`transaction`
ADD INDEX `idx_transaction_order` (`orderId` ASC);
ALTER TABLE `shop`.`transaction`
ADD CONSTRAINT `fk_transaction_order`
FOREIGN KEY (`orderId`)
REFERENCES `shop`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Таблица с адреси

Може да се използва адресна таблица, за да се избегнат излишните колони в таблицата Количка и Поръчка в зависимост от действителната реализация. Може директно да се съпостави с таблицата на количката и таблицата за поръчки, като се използват съответните външни ключове.

Резюме

В този урок обсъдихме дизайна на база данни на онлайн количка за пазаруване за съхраняване на потребителите и управление на инвентара на продукти. Той също така предостави дизайна на базата данни за управление на количката, съхраняване на артикулите в количката и управление на поръчките в онлайн магазин. Опростената блок-схема за онлайн пазаруване може да бъде използвана за внедряване на пазарска количка.

Можете да изпратите вашите коментари, за да се присъедините към дискусията. Може да се интересувате и от проектирането на базата данни на приложенията за блогове и анкети и анкети. Пълната схема на базата данни е достъпна и на GitHub.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL НЕ В заявката

  2. Как да върнете лявата или дясната част от низ в MySQL

  3. Система за управление на релационни бази данни (RDBMS):MSSQL срещу MySQL

  4. Функция MySQL SIGN() – Разберете дали числото е положително или отрицателно в MySQL

  5. JSON кодиране на MySQL резултати