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. |
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. |
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.