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

Leitfaden zum Entwerfen einer Datenbank für ein Bestandsverwaltungssystem in MySQL

Dieses Tutorial enthält die vollständigen Schritte zum Entwerfen eines Datenbankschemas des Bestandsverwaltungssystems zum Verwalten von Lieferanten, Verkäufern, Artikeln, Artikelbeständen, Bestellungen und Kundenbestellungen.

Notizen :Üblicherweise verwenden Unternehmen im Einzelhandel und in der Fertigung Bestandssysteme. Unter den weit verbreiteten Anwendungsfällen in anderen Branchen kann dieses Datenbankschema beispielsweise für die Bestandsverwaltung von Krankenhäusern verwendet werden, um die Effizienz der Lieferketten im Gesundheitswesen zu steigern und die Verschwendung von Medikamenten zu reduzieren.

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

Bestandsverwaltungsdatenbank

Sie können auch die beliebten Tutorials besuchen, darunter So installieren Sie MySQL 8 unter Ubuntu 20.04 LTS, So installieren Sie MySQL 8 unter Windows, So installieren Sie MySQL Workbench unter Ubuntu, So installieren Sie MySQL 8 mit Workbench unter Windows 10, RBAC-Datenbank in MySql, Blog-Datenbank in MySQL, Quiz-Datenbank in MySQL, Datenbank für Umfragen und Umfragen in MySQL, Online-Warenkorb-Datenbank in MySQL und Lernen Sie grundlegende SQL-Abfragen in MySQL.

Inventardatenbank

Der allererste Schritt besteht darin, die Inventardatenbank zu erstellen. Es kann mit der unten gezeigten Abfrage erstellt werden.

CREATE SCHEMA `inventory` 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. Benutzer können ihre eigenen Profile verwalten. Außerdem können die Benutzer die Anwendung gemäß den ihnen zugewiesenen Rollen verwenden. Sie können sich auch auf das Tutorial RBAC-Datenbank in MySql beziehen, um ein vollständiges RBAC-System zum Verwalten von Rollen und Berechtigungen zu implementieren. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzertabelle.

ID Die eindeutige ID zur Identifizierung des Benutzers.
Rollen-ID Die Rolle des Benutzers. Dies können Administrator, Lieferant, Verkäufer und Kunde sein.
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.
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.
Einleitung Eine kurze Einführung des Benutzers.
Profil Benutzerdetails.

Die Benutzertabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

CREATE TABLE `inventory`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`roleId` SMALLINT NOT NULL,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`username` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`passwordHash` VARCHAR(32) NOT NULL,
`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_username` (`username` ASC),
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.
Titel Der Produkttitel, der im Inventar angezeigt werden soll.
Zusammenfassung Die Zusammenfassung, um die wichtigsten Highlights zu erwähnen.
Typ Der Typ, um zwischen den verschiedenen Produkttypen zu unterscheiden.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der das Produkt erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Produktaktualisierung werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details des Produkts gespeichert werden.

Die Produkttabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

CREATE TABLE `inventory`.`product` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`summary` TINYTEXT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

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 `inventory`.`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 `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

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 `inventory`.`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 `inventory`.`category`
ADD INDEX `idx_category_parent` (`parentId` ASC);
ALTER TABLE `inventory`.`category`
ADD CONSTRAINT `fk_category_parent`
FOREIGN KEY (`parentId`)
REFERENCES `inventory`.`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 `inventory`.`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 `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_pc_category`
FOREIGN KEY (`categoryId`)
REFERENCES `inventory`.`category` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Markentabelle

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

ID Die eindeutige ID zur Identifizierung der Marke.
Titel Der Markentitel, der im Inventar angezeigt werden soll.
Zusammenfassung Die Zusammenfassung erwähnt die wichtigsten Highlights.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der das Produkt erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Produktaktualisierung werden gespeichert.
Inhalt Die Spalte, in der die zusätzlichen Details der Marke gespeichert werden.

Die Markentabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

CREATE TABLE `inventory`.`brand` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`summary` TINYTEXT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

Bestelltabelle Tabelle

Dieser Abschnitt enthält die Tabelle zur Verwaltung der Lagerbestellungen. Die Bestellung kann entweder dem Lieferanten oder dem Kunden 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 Lieferanten oder Kunden.
Typ Die Auftragsart zur Unterscheidung zwischen Bestellung und Kundenbestellung.
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.
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 `inventory`.`order` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`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,
`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 `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Adresstabelle

Dieser Abschnitt enthält die Tabelle zur Verwaltung der Adresse des Benutzers oder der Bestellung. Die Benutzeradresse kann verwendet werden, um die dem Benutzer zugeordnete Adresse zu speichern. Die Bestelladresse kann verwendet werden, um die Lieferadresse für die Heimlieferungsbestellungen zu hinterlegen. Unten erwähnt ist die Beschreibung aller Spalten der Adresstabelle.

ID Die eindeutige ID zur Identifizierung der Adresse.
Benutzer-ID Die Benutzer-ID zur Identifizierung des mit der Adresse verknüpften Benutzers.
Bestell-ID Die Bestell-ID zur Identifizierung der mit der Adresse verknüpften 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.

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

CREATE TABLE `inventory`.`address` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
`orderId` BIGINT NULL DEFAULT NULL,
`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,
PRIMARY KEY (`id`),
INDEX `idx_address_user` (`userId` ASC),
CONSTRAINT `fk_address_user`
FOREIGN KEY (`userId`)
REFERENCES `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `inventory`.`address`
ADD INDEX `idx_address_order` (`orderId` ASC);
ALTER TABLE `inventory`.`address`
ADD CONSTRAINT `fk_address_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Artikeltabelle

In diesem Abschnitt entwerfen wir das Element Tabelle um die Artikeldetails zu speichern. Der Artikel stellt die Artikel dar, die im Inventar gelagert und von den Lieferanten gekauft wurden. Unten erwähnt ist die Beschreibung aller Spalten der Artikeltabelle.

ID Die eindeutige ID zur Identifizierung des Artikels.
Produkt-ID Die Produkt-ID zur Identifizierung des Produkts, das mit dem Inventarelement verknüpft ist.
Marken-ID Die Marken-ID zur Identifizierung der Marke, die mit dem Inventarelement verknüpft ist.
Lieferanten-ID Die Lieferanten-ID zur Identifizierung des Lieferanten, der dem Bestandsartikel zugeordnet ist.
Bestell-ID Die Bestell-ID, um die Bestellung zu identifizieren, die dem Bestandsartikel zugeordnet ist.
Erstellt von Die Benutzer-ID zur Identifizierung des Benutzers, der das Inventarelement hinzugefügt hat.
Aktualisiert von Die Benutzer-ID zur Identifizierung des Benutzers, der das Inventarelement aktualisiert hat.
Lagerhaltungseinheit Die ID zur Identifizierung des Artikels auf Lager.
Höchstverkaufspreis Der gedruckte Preis des Produkts, das dem Artikel zugeordnet ist.
Rabatt Der Rabatt wird vom Lieferanten gewährt.
Preis Der Preis, zu dem das Produkt gekauft wurde.
Menge Die im Bestand erhaltene Gesamtmenge.
Verkauft Die an die Kunden verkaufte Gesamtmenge.
Verfügbar Die auf Lager verfügbare Menge.
Defekt Die Gesamtzahl defekter Artikel, die entweder beim Inventar eingegangen sind oder von den Kunden zurückgegeben wurden.
Erstellt am Datum und Uhrzeit der Auftragserstellung werden gespeichert.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Bestellung werden gespeichert.

Die Artikeltabelle mit den entsprechenden Beschränkungen ist wie unten gezeigt.

CREATE TABLE `inventory`.`item` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`brandId` BIGINT NOT NULL,
`supplierId` BIGINT NOT NULL,
`orderId` BIGINT NOT NULL,
`sku` VARCHAR(100) NOT NULL,
`mrp` FLOAT NOT NULL DEFAULT 0,
`discount` FLOAT NOT NULL DEFAULT 0,
`price` FLOAT NOT NULL DEFAULT 0,
`quantity` SMALLINT(6) NOT NULL DEFAULT 0,
`sold` SMALLINT(6) NOT NULL DEFAULT 0,
`available` SMALLINT(6) NOT NULL DEFAULT 0,
`defective` SMALLINT(6) NOT NULL DEFAULT 0,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_item_product` (`productId` ASC),
CONSTRAINT `fk_item_product`
FOREIGN KEY (`productId`)
REFERENCES `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `inventory`.`item`
ADD INDEX `idx_item_brand` (`brandId` ASC);
ALTER TABLE `inventory`.`item`
ADD CONSTRAINT `fk_item_brand`
FOREIGN KEY (`brandId`)
REFERENCES `inventory`.`brand` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `inventory`.`item`
ADD INDEX `idx_item_user` (`supplierId` ASC);
ALTER TABLE `inventory`.`item`
ADD CONSTRAINT `fk_item_user`
FOREIGN KEY (`supplierId`)
REFERENCES `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `inventory`.`item`
ADD INDEX `idx_item_order` (`orderId` ASC);
ALTER TABLE `inventory`.`item`
ADD CONSTRAINT `fk_item_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`order` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Bestellartikeltabelle

Dieser Abschnitt enthält die Tabelle zur Verwaltung der von den Kunden gekauften Bestellartikel. 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.
Artikel-ID Die Artikel-ID zur Identifizierung des mit dem bestellten Artikel verknüpften Artikels.
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 `inventory`.`order_item` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`productId` BIGINT NOT NULL,
`itemId` 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 `inventory`.`product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `inventory`.`order_item`
ADD INDEX `idx_order_item_item` (`itemId` ASC);
ALTER TABLE `inventory`.`order_item`
ADD CONSTRAINT `fk_order_item_item`
FOREIGN KEY (`itemId`)
REFERENCES `inventory`.`item` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `inventory`.`order_item`
ADD INDEX `idx_order_item_order` (`orderId` ASC);
ALTER TABLE `inventory`.`order_item`
ADD CONSTRAINT `fk_order_item_order`
FOREIGN KEY (`orderId`)
REFERENCES `inventory`.`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 `inventory`.`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 `inventory`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

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

Zusammenfassung

In diesem Lernprogramm haben wir das Datenbankdesign eines Bestandsverwaltungssystems besprochen, um die Benutzer zu speichern und den Produktbestand zu verwalten. Es lieferte auch das Datenbankdesign, um die Bestellungen und Kundenbestellungen zu verwalten.

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.