Mysql
 sql >> Database >  >> RDS >> Mysql

Guida alla progettazione di database per il sistema di gestione dell'inventario in MySQL

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