sql >> Database >  >> RDS >> Mysql

Gids voor het ontwerpen van database voor voorraadbeheersysteem in MySQL

Deze zelfstudie biedt de volledige stappen voor het ontwerpen van een databaseschema van het voorraadbeheersysteem om de leveranciers, verkopers, artikelen, artikelvoorraad, inkooporders en klantorders te beheren.

Opmerkingen :Gewoonlijk maken bedrijven in de detailhandel en productie gebruik van voorraadsystemen. Onder wijdverbreide gebruiksscenario's in andere industrieën kan dit databaseschema bijvoorbeeld worden gebruikt voor ziekenhuisinventarisbeheer om de efficiëntie van de toeleveringsketens in de gezondheidszorg te vergroten en medicijnverspilling te verminderen.

Het entiteitsrelatiediagram of visueel databaseontwerp wordt hieronder weergegeven.

Voorraadbeheerdatabase

U kunt ook de populaire tutorials bezoeken, waaronder MySQL 8 installeren op Ubuntu 20.04 LTS, MySQL 8 installeren op Windows, MySQL Workbench installeren op Ubuntu, MySQL 8 installeren met Workbench op Windows 10, RBAC Database in MySql, Blogdatabase in MySql, quizdatabase in MySQL, enquête- en enquêtedatabase in MySQL, online winkelwagendatabase in MySQL en leer elementaire SQL-query's in MySQL.

Voorraaddatabase

De allereerste stap is het maken van de Inventory Database. Het kan worden gemaakt met behulp van de onderstaande query.

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

Ik heb de tekenset utf8mb4 . gebruikt om een ​​breed scala aan karakters te ondersteunen.

Gebruikerstabel

In deze sectie zullen we de Gebruikerstabel . ontwerpen om gebruikersinformatie op te slaan. Gebruikers kunnen hun eigen profielen beheren. Ook kunnen de gebruikers de applicatie gebruiken volgens de rollen die aan hen zijn toegewezen. Je kunt ook de tutorial RBAC Database in MySql raadplegen om een ​​compleet RBAC-systeem te implementeren voor het beheren van rollen en machtigingen. Hieronder staat de beschrijving van alle kolommen van de gebruikerstabel.

Id Het unieke ID om de gebruiker te identificeren.
Rol-ID De rol van de gebruiker. Dit kan een beheerder, leverancier, verkoper en klant zijn.
Voornaam De voornaam van de gebruiker.
Middelste naam De middelste naam van de gebruiker.
Achternaam De achternaam van de gebruiker.
Mobiel Het mobiele nummer van de gebruiker. Het kan worden gebruikt voor aanmeldings- en registratiedoeleinden.
E-mail Het e-mailadres van de gebruiker. Het kan worden gebruikt voor aanmeldings- en registratiedoeleinden.
Wachtwoordhash De wachtwoord-hash gegenereerd door het juiste algoritme. We moeten vermijden om gewone of versleutelde wachtwoorden op te slaan.
Geregistreerd bij Deze kolom kan worden gebruikt om de levensduur van de gebruiker met de applicatie te berekenen.
Laatste aanmelding Het kan worden gebruikt om de laatste login van de gebruiker te identificeren.
Inleiding Een korte introductie van de gebruiker.
Profiel Gebruikersgegevens.

De gebruikerstabel met de juiste beperkingen wordt hieronder weergegeven.

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

Producttabel

In deze sectie zullen we de Producttabel . ontwerpen om de productgegevens op te slaan. Hieronder vindt u de beschrijving van alle kolommen van de producttabel.

Id De unieke id om het product te identificeren.
Titel De producttitel die in de inventaris moet worden weergegeven.
Samenvatting De samenvatting om de belangrijkste hoogtepunten te noemen.
Type Het type om onderscheid te maken tussen de verschillende producttypes.
Gemaakt op Het slaat de datum en tijd op waarop het product is gemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop het product is bijgewerkt.
Inhoud De kolom die wordt gebruikt om de aanvullende details van het product op te slaan.

De producttabel met de juiste beperkingen wordt hieronder weergegeven.

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

Productmeta

De productmetatabel kan worden gebruikt om aanvullende informatie over producten op te slaan, waaronder de productbanner-URL enz. Hieronder vindt u de beschrijving van alle kolommen van de productmetatabel.

Id De unieke id om de productmeta te identificeren.
Product-ID De product-ID om het bovenliggende product te identificeren.
Sleutel De sleutel die de meta identificeert.
Inhoud De kolom die wordt gebruikt om de metadata van het product op te slaan.

De productmetatabel met de juiste beperkingen is zoals hieronder weergegeven.

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;

Categorietabel en productcategorietabel

In deze sectie zullen we de Categorietabel . ontwerpen en Productcategorietabel om de productcategorieën en hun toewijzingen op te slaan. Hieronder vindt u de beschrijving van alle kolommen van de categorietabel.

Id Het unieke ID om de categorie te identificeren.
Ouder-ID Het bovenliggende ID om de bovenliggende categorie te identificeren.
Titel De categorietitel.
Metatitel De metatitel die moet worden gebruikt voor browsertitel en SEO.
Naaktslak De categorie-slug om de URL te vormen.
Inhoud De kolom die wordt gebruikt om de categoriedetails op te slaan.

De categorietabel met de juiste beperkingen is zoals hieronder weergegeven.

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;

Hieronder vindt u de beschrijving van alle kolommen van de productcategorietabel.

Product-ID De product-ID om het product te identificeren.
Categorie-ID De categorie-ID om de categorie te identificeren.

De tabel met productcategorieën met de juiste beperkingen is zoals hieronder weergegeven.

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

Merktabel

In deze sectie zullen we de Merktabel . ontwerpen om de merkgegevens op te slaan. Hieronder staat de beschrijving van alle kolommen van de Merktabel.

Id De unieke id om het merk te identificeren.
Titel De merktitel die in de inventaris moet worden weergegeven.
Samenvatting De samenvatting vermeldt de belangrijkste hoogtepunten.
Gemaakt op Het slaat de datum en tijd op waarop het product is gemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop het product is bijgewerkt.
Inhoud De kolom die wordt gebruikt om de aanvullende details van het merk op te slaan.

De merkentabel met de juiste beperkingen wordt hieronder weergegeven.

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

Tafel bestellen

Deze sectie bevat de tabel voor het beheren van de voorraadorders. De bestelling kan zowel aan de Leverancier als aan de Klant worden gekoppeld. Hieronder staat de beschrijving van alle kolommen van de Besteltabel.

Id Het unieke ID om de bestelling te identificeren.
Gebruikers-ID Het gebruikers-ID om de leverancier of klant te identificeren die aan de bestelling is gekoppeld.
Type Het ordertype om onderscheid te maken tussen inkooporder of klantorder.
Status De status van de bestelling kan Nieuw, Afrekenen, Betaald, Mislukt, Verzonden, Bezorgd, Geretourneerd en Voltooid zijn.
Subtotaal De totale prijs van de Bestelitems.
Artikelkorting De totale korting van de Bestelitems.
Belasting De belasting op de bestelitems.
Verzending De verzendkosten van de Bestelitems.
Totaal De totale prijs van de Bestelling inclusief btw en verzendkosten. Het is exclusief de artikelenkorting.
Promo De promotiecode van de Bestelling.
Korting De totale korting van de Bestelling op basis van de promotiecode of winkelkorting.
Totaal totaal Het totaal van de bestelling die door de koper moet worden betaald.
Gemaakt op Het slaat de datum en tijd op waarop de bestelling is gemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop de bestelling is bijgewerkt.
Inhoud De kolom die wordt gebruikt om de aanvullende details van de bestelling op te slaan.

De besteltabel met de juiste beperkingen is zoals hieronder weergegeven.

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

Adrestabel

Deze sectie bevat de tabel om het adres van de gebruiker of de bestelling te beheren. Het gebruikersadres kan worden gebruikt om het aan de gebruiker gekoppelde adres op te slaan. Het besteladres kan worden gebruikt om het afleveradres voor de thuisbezorging bestellingen op te slaan. Hieronder staat de beschrijving van alle kolommen van de adrestabel.

Id De unieke id om het adres te identificeren.
Gebruikers-ID Het gebruikers-ID om de gebruiker te identificeren die aan het adres is gekoppeld.
Bestel-ID De bestellings-ID om de bestelling te identificeren die aan het adres is gekoppeld.
Voornaam De voornaam van de gebruiker.
Middelste naam De middelste naam van de gebruiker.
Achternaam De achternaam van de gebruiker.
Mobiel Het mobiele nummer van de gebruiker.
E-mail Het e-mailadres van de gebruiker.
Lijn 1 De eerste regel om het adres op te slaan.
Lijn 2 De tweede regel om het adres op te slaan.
Stad De plaats van het adres.
Provincie De provincie van het adres.
Land Het land van het adres.
Gemaakt op Het slaat de datum en tijd op waarop de bestelling is gemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop de bestelling is bijgewerkt.

De adrestabel met de juiste beperkingen is zoals hieronder weergegeven.

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;

Itemtabel

In deze sectie zullen we het Item . ontwerpen Tabel om de itemdetails op te slaan. Het artikel vertegenwoordigt de artikelen die in de voorraad zijn opgeslagen en zijn gekocht bij de leveranciers. Hieronder staat de beschrijving van alle kolommen van de itemtabel.

Id De unieke id om het item te identificeren.
Product-ID De product-ID om het product te identificeren dat aan het voorraadartikel is gekoppeld.
Merk-ID De merk-ID om het merk te identificeren dat aan het voorraadartikel is gekoppeld.
Leverancier-ID De leverancier-ID om de leverancier te identificeren die is gekoppeld aan het voorraadartikel.
Bestel-ID De bestellings-ID om de bestelling te identificeren die is gekoppeld aan het voorraadartikel.
Gemaakt door De gebruikers-ID om de gebruiker te identificeren die het inventarisitem heeft toegevoegd.
Bijgewerkt door De gebruikers-ID om de gebruiker te identificeren die het inventarisitem heeft bijgewerkt.
Voorraadbeheereenheid De id om het artikel op voorraad te identificeren.
Maximale verkoopprijs De afgedrukte prijs van het product dat aan het artikel is gekoppeld.
Korting De korting wordt gegeven door de leverancier.
Prijs De prijs waartegen het product is gekocht.
Hoeveelheid De totale hoeveelheid ontvangen in de inventaris.
Verkocht De totale hoeveelheid verkocht aan de klanten.
Beschikbaar De hoeveelheid die op voorraad is.
Defect Het totale aantal defecte artikelen dat is ontvangen in de inventaris of is geretourneerd door de klanten.
Gemaakt op Het slaat de datum en tijd op waarop de bestelling is gemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop de bestelling is bijgewerkt.

De itemtabel met de juiste beperkingen is zoals hieronder weergegeven.

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;

Bestelitemtabel

Dit gedeelte bevat de tabel voor het beheren van de bestelitems die door de klanten zijn gekocht. Hieronder vindt u de beschrijving van alle kolommen van de Order Item Table.

Id De unieke id om het bestelde artikel te identificeren.
Product-ID De product-ID om het product te identificeren dat aan het bestelde artikel is gekoppeld.
Artikel-ID De artikel-ID om het artikel te identificeren dat aan het bestelde artikel is gekoppeld.
Bestel-ID De bestellings-ID om de bestelling te identificeren die aan het bestelde artikel is gekoppeld.
SKU De SKU van het product bij aankoop.
Prijs De prijs van het product tijdens de aankoop.
Korting De korting van het product bij aankoop.
Hoeveelheid De hoeveelheid van het product geselecteerd door de gebruiker.
Gemaakt op Het slaat de datum en tijd op waarop het bestelde artikel is aangemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop het bestelde artikel is bijgewerkt.
Inhoud De kolom die wordt gebruikt om de aanvullende details van het bestelde artikel op te slaan.

De tabel met bestelitems met de juiste beperkingen is zoals hieronder weergegeven.

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;

Transactietabel

We hebben ook een transactietabel nodig om de orderbetalingen van de koper te volgen en voor de boekhouding. We kunnen dezelfde tabel ook gebruiken om de gedeeltelijke of volledige terugbetaling van de bestelling vast te leggen. Hieronder staat de beschrijving van alle kolommen van de Transactietabel.

Id Het unieke ID om de transactie te identificeren.
Gebruikers-ID Het gebruikers-ID om de gebruiker te identificeren die aan de transactie is gekoppeld.
Bestel-ID De bestellings-ID om de bestelling te identificeren die aan de transactie is gekoppeld.
Code De betalings-ID verstrekt door de betalingsgateway.
Type Het type ordertransactie kan Credit of Debet zijn.
Modus De modus van de ordertransactie kan Offline, Rembours, Cheque, Concept, Vast en Online zijn.
Status De status van de ordertransactie kan Nieuw, Geannuleerd, Mislukt, In behandeling, Afgewezen, Afgewezen en Geslaagd zijn.
Gemaakt op Het slaat de datum en tijd op waarop de ordertransactie is aangemaakt.
Bijgewerkt om Het slaat de datum en tijd op waarop de ordertransactie is bijgewerkt.
Inhoud De kolom die wordt gebruikt om de aanvullende details van de transactie op te slaan.

De transactietabel met de juiste beperkingen is zoals hieronder weergegeven.

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;

Samenvatting

In deze zelfstudie hebben we het databaseontwerp van een voorraadbeheersysteem besproken om de gebruikers op te slaan en de productvoorraad te beheren. Het leverde ook het databaseontwerp om de inkooporders en klantorders te beheren.

U kunt uw opmerkingen indienen om deel te nemen aan de discussie. Mogelijk bent u ook geïnteresseerd in het ontwerpen van de database van de Blog- en Poll &Survey-applicaties. Het volledige databaseschema is ook beschikbaar op GitHub.


  1. Hoe declareer en gebruik ik variabelen in PL/SQL zoals ik doe in T-SQL?

  2. SQLT en partitionering

  3. De beruchte java.sql.SQLException:geen geschikte driver gevonden

  4. Toegestane geheugengrootte van 8589934592 bytes uitgeput