Questo tutorial fornisce i passaggi completi per progettare uno schema di database del sistema di gestione dell'inventario per gestire i fornitori, i venditori, gli articoli, le scorte di articoli, gli ordini di acquisto e gli ordini dei clienti.
Note :comunemente, le aziende nel settore della vendita al dettaglio e della produzione utilizzano sistemi di inventario. Tra i casi d'uso diffusi in altri settori, questo schema di database può essere utilizzato, ad esempio, per la gestione dell'inventario ospedaliero per aumentare l'efficienza delle catene di approvvigionamento sanitario e ridurre lo spreco di farmaci.
Il diagramma della relazione tra entità o il design del database visivo è mostrato di seguito.
Database di gestione dell'inventario
Puoi anche visitare i tutorial popolari tra cui Come installare MySQL 8 su Ubuntu 20.04 LTS, Come installare MySQL 8 su Windows, Come installare MySQL Workbench su Ubuntu, Come installare MySQL 8 con Workbench su Windows 10, Database RBAC in MySql, Database del blog in MySql, database dei quiz in MySQL, database di sondaggi e sondaggi in MySQL, database del carrello degli acquisti online in MySQL e informazioni sulle query SQL di base in MySQL.
Database dell'inventario
Il primo passo è creare il database dell'inventario. Può essere creato utilizzando la query come mostrato di seguito.
CREATE SCHEMA `inventory` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ho usato il set di caratteri utf8mb4 per supportare un'ampia gamma di caratteri.
Tabella utenti
In questa sezione, progetteremo la Tabella utente per memorizzare le informazioni sull'utente. Gli utenti possono gestire i propri profili. Inoltre, gli utenti possono utilizzare l'applicazione in base ai ruoli loro assegnati. Puoi anche fare riferimento al tutorial RBAC Database in MySql per implementare un sistema RBAC completo per la gestione di ruoli e autorizzazioni. Di seguito è riportata la descrizione di tutte le colonne della Tabella Utente.
ID | L'ID univoco per identificare l'utente. |
ID ruolo | Il ruolo dell'utente. Può essere amministratore, fornitore, venditore e cliente. |
Nome | Il nome dell'utente. |
Secondo nome | Il secondo nome dell'utente. |
Cognome | Il cognome dell'utente. |
Cellulare | Il numero di cellulare dell'utente. Può essere utilizzato per scopi di accesso e registrazione. |
L'e-mail dell'utente. Può essere utilizzato per scopi di accesso e registrazione. | |
Hash password | L'hash della password generato dall'algoritmo appropriato. Dobbiamo evitare di memorizzare password semplici o crittografate. |
Registrato presso | Questa colonna può essere utilizzata per calcolare la vita dell'utente con l'applicazione. |
Ultimo accesso | Può essere utilizzato per identificare l'ultimo accesso dell'utente. |
Introduzione | Una breve introduzione dell'Utente. |
Profilo | Dettagli utente. |
Di seguito è mostrata la tabella utente con i vincoli appropriati.
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) );
Tabella dei prodotti
In questa sezione, progetteremo la Tabella dei prodotti per memorizzare i dati del prodotto. Di seguito è riportata la descrizione di tutte le colonne della Tabella Prodotto.
ID | L'ID univoco per identificare il prodotto. |
Titolo | Il titolo del prodotto da visualizzare nell'inventario. |
Riepilogo | Il riepilogo per citare i punti salienti. |
Tipo | Il tipo per distinguere tra i diversi tipi di prodotto. |
Creato a | Memorizza la data e l'ora di creazione del prodotto. |
Aggiornato a | Memorizza la data e l'ora in cui il prodotto viene aggiornato. |
Contenuto | La colonna utilizzata per memorizzare i dettagli aggiuntivi del prodotto. |
Di seguito è mostrata la tabella dei prodotti con i vincoli appropriati.
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`)
);
Meta prodotto
La Product Meta Table può essere utilizzata per memorizzare informazioni aggiuntive sui prodotti, incluso l'URL del banner del prodotto, ecc. Di seguito è indicata la descrizione di tutte le colonne della Product Meta Table.
ID | L'ID univoco per identificare il meta del prodotto. |
ID prodotto | L'ID prodotto per identificare il prodotto principale. |
Chiave | La chiave che identifica il meta. |
Contenuto | La colonna utilizzata per memorizzare i metadati del prodotto. |
La tabella Meta del prodotto con i vincoli appropriati è quella mostrata di seguito.
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;
Tabella delle categorie e Tabella delle categorie dei prodotti
In questa sezione, progetteremo la Tabella delle categorie e Tabella delle categorie di prodotti per memorizzare le categorie di prodotti e le relative mappature. Di seguito è riportata la descrizione di tutte le colonne della Tabella delle Categorie.
ID | L'ID univoco per identificare la categoria. |
ID genitore | L'ID genitore per identificare la categoria genitore. |
Titolo | Il titolo della categoria. |
Metatitolo | Il meta titolo da utilizzare per il titolo del browser e SEO. |
Slug | La categoria slug per formare l'URL. |
Contenuto | La colonna utilizzata per memorizzare i dettagli della categoria. |
La tabella delle categorie con i vincoli appropriati è quella mostrata di seguito.
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;
Di seguito è riportata la descrizione di tutte le colonne della Tabella delle categorie di prodotti.
ID prodotto | L'ID prodotto per identificare il prodotto. |
ID categoria | L'ID categoria per identificare la categoria. |
La tabella delle categorie di prodotti con i vincoli appropriati è quella mostrata di seguito.
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);
Tabella del marchio
In questa sezione, progetteremo la Tabella del marchio per memorizzare i dati del marchio. Di seguito è riportata la descrizione di tutte le colonne della Brand Table.
ID | L'ID univoco per identificare il marchio. |
Titolo | Il titolo del marchio da visualizzare nell'inventario. |
Riepilogo | Il riepilogo cita i punti salienti. |
Creato a | Memorizza la data e l'ora di creazione del prodotto. |
Aggiornato a | Memorizza la data e l'ora in cui il prodotto viene aggiornato. |
Contenuto | La colonna utilizzata per memorizzare i dettagli aggiuntivi del marchio. |
Di seguito è mostrata la tabella dei marchi con i vincoli appropriati.
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`)
);
Tabella degli ordini
Questa sezione fornisce la tabella per gestire gli ordini di magazzino. L'ordine può essere associato al Fornitore o al Cliente. Di seguito è riportata la descrizione di tutte le colonne della Tabella degli Ordini.
ID | L'ID univoco per identificare l'ordine. |
ID utente | L'ID utente per identificare il Fornitore o il Cliente associato all'ordine. |
Tipo | Il tipo di ordine per distinguere tra Ordine di acquisto o Ordine cliente. |
Stato | Lo stato dell'ordine può essere Nuovo, Checkout, Pagato, Non riuscito, Spedito, Consegnato, Reso e Completato. |
Sub Totale | Il prezzo totale degli articoli dell'ordine. |
Sconto articolo | Lo sconto totale degli articoli dell'ordine. |
Tasse | La tassa sugli articoli dell'ordine. |
Spedizione | Le spese di spedizione degli Articoli dell'ordine. |
Totale | Il prezzo totale dell'Ordine comprensivo di tasse e spedizione. Escluso lo sconto articoli. |
Promozione | Il codice promozionale dell'Ordine. |
Sconto | Lo sconto totale dell'Ordine in base al codice promozionale o allo sconto del negozio. |
Totale generale | Il totale generale dell'ordine a carico dell'acquirente. |
Creato a | Memorizza la data e l'ora in cui viene creato l'ordine. |
Aggiornato a | Memorizza la data e l'ora in cui l'ordine viene aggiornato. |
Contenuto | La colonna utilizzata per memorizzare i dettagli aggiuntivi dell'ordine. |
La tabella degli ordini con i vincoli appropriati è quella mostrata di seguito.
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);
Tabella degli indirizzi
Questa sezione fornisce la tabella per gestire l'indirizzo dell'utente o dell'ordine. L'indirizzo utente può essere utilizzato per memorizzare l'indirizzo associato all'utente. L'indirizzo dell'ordine può essere utilizzato per memorizzare l'indirizzo di consegna per gli ordini di consegna a domicilio. Di seguito è riportata la descrizione di tutte le colonne della Tabella Indirizzi.
ID | L'ID univoco per identificare l'indirizzo. |
ID utente | L'ID utente per identificare l'utente associato all'indirizzo. |
ID ordine | L'ID ordine per identificare l'ordine associato all'indirizzo. |
Nome | Il nome dell'utente. |
Secondo nome | Il secondo nome dell'utente. |
Cognome | Il cognome dell'utente. |
Cellulare | Il numero di cellulare dell'utente. |
L'e-mail dell'utente. | |
Riga 1 | La prima riga per memorizzare l'indirizzo. |
Riga 2 | La seconda riga per memorizzare l'indirizzo. |
Città | La città dell'indirizzo. |
Provincia | La provincia dell'indirizzo. |
Paese | Il paese dell'indirizzo. |
Creato a | Memorizza la data e l'ora in cui viene creato l'ordine. |
Aggiornato a | Memorizza la data e l'ora in cui l'ordine viene aggiornato. |
La tabella degli indirizzi con i vincoli appropriati è quella mostrata di seguito.
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;
Tabella degli oggetti
In questa sezione, progetteremo l'Articolo Tabella per memorizzare i dettagli dell'articolo. L'Articolo rappresenta gli articoli stoccati nell'inventario e acquistati dai fornitori. Di seguito è riportata la descrizione di tutte le colonne della Tabella Articoli.
ID | L'ID univoco per identificare l'elemento. |
ID prodotto | L'ID prodotto per identificare il prodotto associato all'articolo di inventario. |
ID marca | L'ID del marchio per identificare il marchio associato all'articolo di inventario. |
ID fornitore | L'ID fornitore per identificare il fornitore associato all'articolo di magazzino. |
ID ordine | L'ID ordine per identificare l'ordine associato all'articolo di inventario. |
Creato da | L'ID utente per identificare l'utente che ha aggiunto l'articolo di inventario. |
Aggiornato da | L'ID utente per identificare l'utente che ha aggiornato l'articolo di inventario. |
Unità di scorta | L'ID per identificare l'articolo in stock. |
Prezzo massimo al dettaglio | Il prezzo stampato del prodotto associato all'articolo. |
Sconto | Lo sconto è dato dal fornitore. |
Prezzo | Il prezzo a cui è stato acquistato il prodotto. |
Quantità | La quantità totale ricevuta nell'inventario. |
Venduto | La quantità totale venduta ai clienti. |
Disponibile | La quantità disponibile sullo stock. |
Difettoso | Il totale degli articoli difettosi ricevuti nell'inventario o restituiti dai clienti. |
Creato a | Memorizza la data e l'ora in cui viene creato l'ordine. |
Aggiornato a | Memorizza la data e l'ora in cui l'ordine viene aggiornato. |
La tabella degli articoli con i vincoli appropriati è quella mostrata di seguito.
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;
Ordinare la tabella degli articoli
In questa sezione viene fornita la tabella per gestire gli articoli dell'ordine acquistati dai clienti. Di seguito è riportata la descrizione di tutte le colonne della Tabella degli articoli dell'ordine.
ID | L'ID univoco per identificare l'articolo ordinato. |
ID prodotto | L'ID prodotto per identificare il prodotto associato all'articolo ordinato. |
ID oggetto | L'ID articolo per identificare l'articolo associato all'articolo ordinato. |
ID ordine | L'ID ordine per identificare l'ordine associato all'articolo ordinato. |
SKU | La SKU del prodotto al momento dell'acquisto. |
Prezzo | Il prezzo del prodotto al momento dell'acquisto. |
Sconto | Lo sconto del prodotto al momento dell'acquisto. |
Quantità | La quantità del prodotto selezionato dall'utente. |
Creato a | Memorizza la data e l'ora in cui viene creato l'articolo ordinato. |
Aggiornato a | Memorizza la data e l'ora in cui l'articolo ordinato viene aggiornato. |
Contenuto | La colonna utilizzata per memorizzare i dettagli aggiuntivi dell'articolo ordinato. |
La tabella degli articoli dell'ordine con i vincoli appropriati è quella mostrata di seguito.
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;
Tabella delle transazioni
Abbiamo anche bisogno di una tabella delle transazioni per tenere traccia dei pagamenti degli ordini effettuati dall'acquirente e per la contabilità. Possiamo anche utilizzare la stessa tabella per registrare il rimborso parziale o totale dell'ordine. Di seguito è riportata la descrizione di tutte le colonne della Tabella delle Transazioni.
ID | L'ID univoco per identificare la transazione. |
ID utente | L'ID utente per identificare l'utente associato alla transazione. |
ID ordine | L'ID ordine per identificare l'ordine associato alla transazione. |
Codice | L'ID pagamento fornito dal gateway di pagamento. |
Tipo | Il tipo di transazione dell'ordine può essere di credito o di debito. |
Modalità | La modalità di transazione dell'ordine può essere Offline, Contrassegno, Assegno, Bozza, Bonifico e Online. |
Stato | Lo stato della transazione dell'ordine può essere Nuovo, Annullato, Non riuscito, In attesa, Rifiutato, Rifiutato e Riuscito. |
Creato a | Memorizza la data e l'ora in cui viene creata la transazione dell'ordine. |
Aggiornato a | Memorizza la data e l'ora in cui viene aggiornata la transazione dell'ordine. |
Contenuto | La colonna utilizzata per memorizzare i dettagli aggiuntivi della transazione. |
La tabella delle transazioni con i vincoli appropriati è quella mostrata di seguito.
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;
Riepilogo
In questo tutorial, abbiamo discusso la progettazione del database di un sistema di gestione dell'inventario per archiviare gli utenti e gestire l'inventario dei prodotti. Ha inoltre fornito la progettazione del database per gestire gli ordini di acquisto e gli ordini dei clienti.
Puoi inviare i tuoi commenti per partecipare alla discussione. Potresti anche essere interessato a progettare il database delle applicazioni Blog e Poll &Survey. Lo schema completo del database è disponibile anche su GitHub.