Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leitfaden zum Entwerfen einer Datenbank für Online-Warenkörbe in MySQL

Dieses Tutorial enthält vollständige Schritte zum Entwerfen eines Datenbankschemas von Online-Shops und Warenkörben, um die Benutzer, Produkte, Bewertungen, Warenkörbe, Bestellungen und Zahlungen zu verwalten. Es kann weiter verwendet werden, um einen Online-Shop und Warenkorb-basierte Websites oder Anwendungen zu entwickeln.

Das Entity-Relationship-Diagramm oder visuelle Datenbankdesign ist unten dargestellt.

Online-Warenkorb

Notizen :Es ermöglicht Gastbestellungen, die Bestellung aufzugeben, ohne sich anzumelden. Die Sicherheit kann gehandhabt werden, indem der RBAC-Datenbank in MySql gefolgt wird.

Sie können auch die beliebten Tutorials besuchen, darunter How To Install MySQL 8 on Ubuntu, How To Install MySQL 8 on Windows, How To Install MySQL 8 With Workbench On Windows 10, RBAC Database in MySql, Blog Database in MySql, Quiz Database In MySQL, Umfrage- und Umfragedatenbank zu MySQL und grundlegende SQL-Abfragen in MySQL lernen.

Shop-Datenbank

Der allererste Schritt ist die Erstellung der Shop-Datenbank. Es kann mit der unten gezeigten Abfrage erstellt werden.

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

Ich habe den Zeichensatz utf8mb4 verwendet um eine Vielzahl von Zeichen zu unterstützen.

Benutzertabelle

In diesem Abschnitt entwerfen wir die Benutzertabelle Benutzerinformationen zu speichern. Dieselbe Tabelle kann verwendet werden, um verschiedene Arten von Benutzern zu verwalten, einschließlich Administratoren und Kunden. Es kann auch verwendet werden, um die Produktersteller (aus dem Admin-Panel) und die auf der Website aufgegebenen Kundenbestellungen in Beziehung zu setzen. Benutzer können ihre eigenen Bestellungen verfolgen und den Status verfolgen. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzertabelle.

ID Die eindeutige ID zur Identifizierung des Benutzers.
Vorname Der Vorname des Benutzers.
Zweiter Vorname Der zweite Vorname des Benutzers.
Nachname Der Nachname des Benutzers.
Mobil Die Mobiltelefonnummer des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden.
E-Mail Die E-Mail des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden.
Passwort-Hash Der vom entsprechenden Algorithmus generierte Passwort-Hash. Wir müssen vermeiden, einfache oder verschlüsselte Passwörter zu speichern.
Administrator Das Flag zur Identifizierung, ob der Benutzer ein Administrator ist. Es ist nicht erforderlich, wenn RBAC-Tabellen gemäß dem RBAC-Datenbankdesign erstellt werden.
Anbieter Das Flag, um zu identifizieren, ob der Benutzer ein Produkt im Shop hosten kann. Es ist nicht erforderlich, wenn RBAC-Tabellen gemäß dem RBAC-Datenbankdesign erstellt werden.
Registriert unter Diese Spalte kann verwendet werden, um die Lebensdauer des Benutzers mit der Anwendung zu berechnen.
Letzte Anmeldung Es kann verwendet werden, um die letzte Anmeldung des Benutzers zu identifizieren.
Einführung Die kurze Einführung des Anbieterbenutzers, die auf der Produktseite angezeigt wird.
Profil Die auf der Produktseite anzuzeigenden Anbieterdetails.

Die Benutzertabelle mit den entsprechenden Einschränkungen sieht unten aus.

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) );

Produkttabelle

In diesem Abschnitt entwerfen wir die Produkttabelle um die Produktdaten zu speichern. Nachfolgend finden Sie die Beschreibung aller Spalten der Produkttabelle.

ID Die eindeutige ID zur Identifizierung des Produkts.
Benutzer-ID Die Benutzer-ID zur Identifizierung des Administrators oder Anbieters.
Titel Der Produkttitel, der auf der Shop-Seite und der Produktseite angezeigt werden soll.
Metatitel Der Metatitel, der für Browsertitel und SEO verwendet werden soll.
Schnecke Der Slug zur Bildung der URL.
Zusammenfassung Die Zusammenfassung, um die wichtigsten Highlights zu erwähnen.
Typ Der Typ, um zwischen den verschiedenen Produkttypen zu unterscheiden.
SKU Die Stock Keeping Unit zur Verfolgung des Produktbestands.
Preis Der Preis des Produkts.
Rabatt Der Rabatt auf das Produkt.
Menge Die verfügbare Menge des Produkts.
Einkaufen Es kann verwendet werden, um festzustellen, ob das Produkt öffentlich zum Einkaufen verfügbar ist.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der das Produkt erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Produktaktualisierung werden gespeichert.
Veröffentlicht unter Es speichert Datum und Uhrzeit der Veröffentlichung des Produkts im Shop.
Beginnt bei Es speichert das Datum und die Uhrzeit, zu der der Produktverkauf beginnt.
Endet bei Datum und Uhrzeit des Endes des Produktverkaufs werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details des Produkts gespeichert werden.

Es verwendet die Spaltenmenge, um den im Produktinventar verfügbaren Bestand zu verfolgen, um das Design einfach zu halten. Es kann erforderlich sein, die Menge in mehreren Spalten anzugeben, um ein breites Produktspektrum abzudecken. Die möglichen Spalten könnten sellQuantity, sellUnit, stockQuantity und stockUnit sein, wobei sellQuantity und sellUnit verwendet werden können, um im Shop für die Käufer angezeigt zu werden, und stockQuantity und stockUnit verwendet werden können, um den Bestand zu verfolgen. Es kann auch erforderlich sein, sellUnit in stockUnit umzuwandeln, während das Inventar bei der Bestellung aktualisiert wird. Die Produkttabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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);

Produktmeta

Die Produkt-Metatabelle kann verwendet werden, um zusätzliche Informationen über Produkte zu speichern, einschließlich der URL des Produktbanners usw. Unten aufgeführt finden Sie die Beschreibung aller Spalten der Produkt-Metatabelle.

ID Die eindeutige ID zur Identifizierung des Produktmeta.
Produkt-ID Die Produkt-ID zur Identifizierung des übergeordneten Produkts.
Schlüssel Der Schlüssel, der das Meta identifiziert.
Inhalt Die Spalte zum Speichern der Produktmetadaten.

Die Produkt-Meta-Tabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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;

Produktbewertungstabelle

In diesem Abschnitt entwerfen wir die Produktbewertungstabelle um die Produktbewertungen zu speichern. Nachfolgend finden Sie die Beschreibung aller Spalten der Produktbewertungstabelle.

ID Die eindeutige ID zur Identifizierung der Produktbewertung.
Produkt-ID Die Produkt-ID zur Identifizierung des übergeordneten Produkts.
Eltern-ID Die übergeordnete ID zur Identifizierung der übergeordneten Bewertung.
Titel Der Bewertungstitel.
Bewertung Die Rezensionsbewertung.
Veröffentlicht Es kann verwendet werden, um festzustellen, ob die Bewertung öffentlich verfügbar ist.
Erstellt am Datum und Uhrzeit der Abgabe der Bewertung werden gespeichert.
Veröffentlicht unter Datum und Uhrzeit der Veröffentlichung der Bewertung werden gespeichert.
Inhalt Die Spalte, in der die Bewertungsdetails gespeichert werden.

Die Produktbewertungstabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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;

Kategorietabelle und Produktkategorietabelle

In diesem Abschnitt entwerfen wir die Kategorietabelle und Produktkategorietabelle um die Produktkategorien und deren Zuordnungen zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Kategorietabelle.

ID Die eindeutige ID zur Identifizierung der Kategorie.
Eltern-ID Die übergeordnete ID zur Identifizierung der übergeordneten Kategorie.
Titel Der Kategorietitel.
Metatitel Der Metatitel, der für Browsertitel und SEO verwendet werden soll.
Schnecke Der Kategorie-Slug zur Bildung der URL.
Inhalt Die Spalte zum Speichern der Kategoriedetails.

Die Kategorietabelle mit den entsprechenden Einschränkungen sieht unten aus.

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;

Nachfolgend finden Sie die Beschreibung aller Spalten der Produktkategorietabelle.

Produkt-ID Die Produkt-ID zur Identifizierung des Produkts.
Kategorie-ID Die Kategorie-ID zur Identifizierung der Kategorie.

Die Produktkategorietabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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);

Tag-Tabelle und Produkt-Tag-Tabelle

Ähnlich wie die Kategorie- und Produktkategorietabellen können wir die Tag-Tabelle gestalten und Produkt-Tag-Tabelle . Die Hauptunterschiede zwischen der Kategorie und dem Tag sind unten aufgeführt.

  • Die parentId-Spalte ist in der Tag-Tabelle nicht erforderlich.
  • Die Anzahl der Kategorien bleibt niedrig, da diese verwendet werden können, um das Hauptmenü für Navigationszwecke zu bilden. Die Tags können mehr sein als Kategorien.
  • Sowohl Kategorien als auch Tags können verwendet werden, um die Produkte in Beziehung zu setzen.
  • Man sollte einem Produkt nur wenige Kategorien zuweisen, wobei die Anzahl der Tags höher sein kann.

Warenkorbtabelle und Warenkorbartikeltabelle

Dieser Abschnitt enthält die Tabellen zum Verwalten der virtuellen Warenkörbe, um die Benutzerauswahl zu speichern, bevor die eigentliche Bestellung erstellt wird. Wenn der Benutzer die Zahlung storniert oder die Zahlung fehlschlägt, können dieselben Warenkörbe vom Marketingteam als verlassene Warenkörbe verwendet werden, um sich nach den Käufern zu erkundigen. Dem Warenkorb kann auch ein eingeloggter Benutzer zugeordnet werden. Nachfolgend finden Sie die Beschreibung aller Spalten der Warenkorbtabelle.

Notizen :Die Warenkorbtabelle und die Warenkorbartikeltabelle können optional gemacht werden, wenn die lokalen Daten, Sitzungen oder In-Memory-Datenbanken wie Redis zum Speichern der Warenkorbdaten verwendet werden. Gleiches gilt für die Erstellung der Bestellung bei Zahlungserfolg.

ID Die eindeutige ID zur Identifizierung des Einkaufswagens.
Benutzer-ID Die Benutzer-ID zur Identifizierung des mit dem Warenkorb verknüpften Benutzers oder Käufers.
Sitzungs-ID Die eindeutige Sitzungs-ID, die dem Einkaufswagen zugeordnet ist.
Token Das eindeutige Token, das dem Einkaufswagen zugeordnet ist, um den Einkaufswagen über mehrere Sitzungen hinweg zu identifizieren. Derselbe Token kann bei Bedarf auch an das Payment Gateway übergeben werden.
Status Der Status des Einkaufswagens kann „Neu“, „Einkaufswagen“, „Zur Kasse“, „Bezahlt“, „Abgeschlossen“ und „Verlassen“ sein.
Vorname Der Vorname des Benutzers.
Zweiter Vorname Der zweite Vorname des Benutzers.
Nachname Der Nachname des Benutzers.
Mobil Die Handynummer des Benutzers.
E-Mail Die E-Mail des Benutzers.
Zeile 1 Die erste Zeile zum Speichern der Adresse.
Zeile 2 Die zweite Zeile zum Speichern der Adresse.
Stadt Die Stadt der Adresse.
Provinz Die Provinz der Adresse.
Land Das Land der Adresse.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der der Warenkorb erstellt wurde.
Aktualisiert um Es speichert das Datum und die Uhrzeit, zu der der Warenkorb aktualisiert wird.
Inhalt Die Spalte, in der die zusätzlichen Details des Warenkorbs gespeichert werden.

Die Warenkorb-Tabelle mit den entsprechenden Beschränkungen ist wie unten gezeigt.

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);

Nachfolgend finden Sie die Beschreibung aller Spalten der Warenkorb-Artikeltabelle.

ID Die eindeutige ID zur Identifizierung des Artikels im Einkaufswagen.
Produkt-ID Die Produkt-ID zur Identifizierung des Produkts, das mit dem Artikel im Einkaufswagen verknüpft ist.
Warenkorb-ID Die Einkaufswagen-ID zur Identifizierung des Einkaufswagens, der mit dem Einkaufswagenartikel verknüpft ist.
SKU Die SKU des Produkts beim Kauf.
Preis Der Preis des Produkts beim Kauf.
Rabatt Der Rabatt des Produkts beim Kauf.
Menge Die Menge des vom Benutzer ausgewählten Produkts.
Aktiv Das Flag, um zu identifizieren, ob das Produkt im Einkaufswagen aktiv ist. Es kann verwendet werden, um zu vermeiden, dass dasselbe Produkt mehrmals in denselben Einkaufswagen gelegt wird.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der der Warenkorbartikel erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des Warenkorbartikels werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details des Warenkorbartikels gespeichert werden.

Die Warenkorbartikeltabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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;

Bestelltabelle und Bestellartikeltabelle

Dieser Abschnitt enthält die Tabellen zur Verwaltung der Filialbestellungen. Der Bestellung kann auch ein eingeloggter Benutzer zugeordnet werden. Unten erwähnt ist die Beschreibung aller Spalten der Auftragstabelle.

ID Die eindeutige ID zur Identifizierung der Bestellung.
Benutzer-ID Die Benutzer-ID zur Identifizierung des mit der Bestellung verbundenen Benutzers oder Käufers.
Sitzungs-ID Die der Bestellung zugeordnete eindeutige Sitzungs-ID.
Token Das eindeutige Token, das der Bestellung zugeordnet ist, um sie über mehrere Sitzungen hinweg zu identifizieren. Derselbe Token kann bei Bedarf auch an das Payment Gateway übergeben werden.
Status Der Status der Bestellung kann Neu, Zur Kasse, Bezahlt, Fehlgeschlagen, Versendet, Geliefert, Retourniert und Abgeschlossen sein.
Zwischensumme Der Gesamtpreis der Bestellartikel.
Artikelrabatt Der Gesamtrabatt der Bestellartikel.
Steuer Die Steuer auf die Bestellartikel.
Versand Die Versandkosten der Bestellartikel.
Gesamt Der Gesamtpreis der Bestellung einschließlich Steuern und Versand. Es schließt den Artikelrabatt aus.
Promo Der Promo-Code der Bestellung.
Rabatt Der Gesamtrabatt der Bestellung basierend auf dem Promo-Code oder Shop-Rabatt.
Gesamtsumme Die vom Käufer zu zahlende Gesamtsumme der Bestellung.
Vorname Der Vorname des Benutzers.
Zweiter Vorname Der zweite Vorname des Benutzers.
Nachname Der Nachname des Benutzers.
Mobil Die Handynummer des Benutzers.
E-Mail Die E-Mail des Benutzers.
Zeile 1 Die erste Zeile zum Speichern der Adresse.
Zeile 2 Die zweite Zeile zum Speichern der Adresse.
Stadt Die Stadt der Adresse.
Provinz Die Provinz der Adresse.
Land Das Land der Adresse.
Erstellt am Datum und Uhrzeit der Auftragserstellung werden gespeichert.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Bestellung werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details der Bestellung gespeichert werden.

Die Bestelltabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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);

Nachfolgend finden Sie die Beschreibung aller Spalten der Bestellartikeltabelle.

ID Die eindeutige ID zur Identifizierung des bestellten Artikels.
Produkt-ID Die Produkt-ID zur Identifizierung des Produkts, das dem bestellten Artikel zugeordnet ist.
Bestell-ID Die Bestell-ID zur Identifizierung der mit dem bestellten Artikel verknüpften Bestellung.
SKU Die SKU des Produkts beim Kauf.
Preis Der Preis des Produkts beim Kauf.
Rabatt Der Rabatt des Produkts beim Kauf.
Menge Die Menge des vom Benutzer ausgewählten Produkts.
Erstellt am Es speichert Datum und Uhrzeit der Erstellung des bestellten Artikels.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des bestellten Artikels werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details des bestellten Artikels gespeichert werden.

Die Bestellpostentabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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;

Transaktionstabelle

Wir benötigen auch eine Transaktionstabelle, um die vom Käufer getätigten Bestellzahlungen zu verfolgen und für die Buchhaltung. Wir können dieselbe Tabelle auch verwenden, um die teilweise oder vollständige Rückerstattung der Bestellung zu erfassen. Unten erwähnt ist die Beschreibung aller Spalten der Transaktionstabelle.

ID Die eindeutige ID zur Identifizierung der Transaktion.
Benutzer-ID Die Benutzer-ID zur Identifizierung des mit der Transaktion verknüpften Benutzers.
Bestell-ID Die Bestell-ID zur Identifizierung der mit der Transaktion verknüpften Bestellung.
Code Die vom Zahlungsgateway bereitgestellte Zahlungs-ID.
Typ Die Art der Bestelltransaktion kann entweder Gutschrift oder Lastschrift sein.
Modus Der Modus der Bestelltransaktion kann Offline, Nachnahme, Scheck, Wechsel, Kabelgebunden und Online sein.
Status Der Status der Bestelltransaktion kann Neu, Storniert, Fehlgeschlagen, Ausstehend, Abgelehnt, Abgelehnt und Erfolg sein.
Erstellt am Datum und Uhrzeit der Erstellung des Bestellvorgangs werden gespeichert.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Bestelltransaktion werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details der Transaktion gespeichert werden.

Die Transaktionstabelle mit den entsprechenden Einschränkungen ist wie unten gezeigt.

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;

Adresstabelle

Abhängig von der tatsächlichen Implementierung kann eine Adresstabelle verwendet werden, um die redundanten Spalten in der Cart- und Order-Tabelle zu vermeiden. Es kann mit den entsprechenden Fremdschlüsseln direkt der Warenkorbtabelle und der Bestelltabelle zugeordnet werden.

Zusammenfassung

In diesem Tutorial haben wir das Datenbankdesign eines Online-Einkaufswagens besprochen, um die Benutzer zu speichern und den Produktbestand zu verwalten. Es lieferte auch das Datenbankdesign, um den Einkaufswagen zu verwalten, die Einkaufswagenartikel zu speichern und die Bestellungen in einem Online-Shop zu verwalten. Das Flussdiagramm für vereinfachtes Online-Shopping kann verwendet werden, um einen Einkaufswagen zu implementieren.

Sie können Ihre Kommentare einreichen, um an der Diskussion teilzunehmen. Sie könnten auch daran interessiert sein, die Datenbank der Anwendungen Blog und Umfrage &Umfrage zu entwerfen. Das vollständige Datenbankschema ist auch auf GitHub verfügbar.