Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przewodnik po projektowaniu bazy danych dla systemu zarządzania zapasami w MySQL

Ten samouczek zawiera wszystkie kroki, aby zaprojektować schemat bazy danych systemu zarządzania zapasami w celu zarządzania dostawcami, sprzedawcami, towarami, zapasami towarów, zamówieniami zakupu i zamówieniami klientów.

Notatki :Zazwyczaj firmy w handlu detalicznym i produkcji stosują systemy inwentaryzacji. Wśród powszechnych przypadków użycia w innych branżach ten schemat bazy danych można wykorzystać na przykład do zarządzania zapasami szpitalnymi w celu zwiększenia wydajności łańcuchów dostaw opieki zdrowotnej i zmniejszenia marnotrawstwa leków.

Diagram relacji encji lub wizualny projekt bazy danych pokazano poniżej.

Baza danych zarządzania zapasami

Możesz również odwiedzić popularne samouczki, w tym Jak zainstalować MySQL 8 na Ubuntu 20.04 LTS, Jak zainstalować MySQL 8 w systemie Windows, Jak zainstalować MySQL Workbench na Ubuntu, Jak zainstalować MySQL 8 z Workbench na Windows 10, Baza danych RBAC w MySql, Baza danych blogów w MySql, Baza danych quizów w MySQL, Baza ankiet i ankiet w MySQL, Baza danych koszyka zakupów online w MySQL oraz Nauka podstawowych zapytań SQL w MySQL.

Baza danych zapasów

Pierwszym krokiem jest utworzenie Bazy Inwentaryzacyjnej. Można go utworzyć za pomocą zapytania, jak pokazano poniżej.

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

Użyłem zestawu znaków utf8mb4 do obsługi szerokiej gamy znaków.

Tabela użytkowników

W tej sekcji zaprojektujemy Tabelę użytkowników do przechowywania informacji o użytkowniku. Użytkownicy mogą zarządzać własnymi profilami. Ponadto użytkownicy mogą korzystać z aplikacji zgodnie z przypisanymi im rolami. Możesz również zapoznać się z samouczkiem Baza danych RBAC w MySql, aby zaimplementować kompletny system RBAC do zarządzania rolami i uprawnieniami. Poniżej znajduje się opis wszystkich kolumn tabeli użytkowników.

Identyfikator Unikalny identyfikator do identyfikacji użytkownika.
Identyfikator roli Rola użytkownika. Może to być Administrator, Dostawca, Sprzedawca i Klient.
Imię Imię użytkownika.
Drugie imię Drugie imię użytkownika.
Nazwisko Nazwisko użytkownika.
Komórka Numer telefonu komórkowego użytkownika. Może być używany do celów logowania i rejestracji.
Poczta e-mail E-mail użytkownika. Może być używany do celów logowania i rejestracji.
Hash hasła Skrót hasła wygenerowany przez odpowiedni algorytm. Musimy unikać przechowywania zwykłych lub zaszyfrowanych haseł.
Zarejestrowano w Ta kolumna może być użyta do obliczenia życia użytkownika z aplikacją.
Ostatnie logowanie Może być używany do identyfikacji ostatniego logowania użytkownika.
Wprowadzenie Krótkie wprowadzenie Użytkownika.
Profil Szczegóły użytkownika.

Tabela użytkownika z odpowiednimi ograniczeniami jest pokazana poniżej.

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

Tabela produktów

W tej sekcji zaprojektujemy Tabelę produktów do przechowywania danych produktu. Poniżej znajduje się opis wszystkich kolumn tabeli produktów.

Identyfikator Unikalny identyfikator do identyfikacji produktu.
Tytuł Tytuł produktu, który ma być wyświetlany w ekwipunku.
Podsumowanie Podsumowanie zawierające najważniejsze informacje.
Wpisz Typ do rozróżniania różnych typów produktów.
Utworzono w Przechowuje datę i godzinę utworzenia produktu.
Aktualizacja o Przechowuje datę i godzinę aktualizacji produktu.
Treść Kolumna używana do przechowywania dodatkowych szczegółów produktu.

Tabela produktów z odpowiednimi ograniczeniami jest pokazana poniżej.

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 produktu

Metatabela produktu może być używana do przechowywania dodatkowych informacji o produktach, w tym adresu URL banera produktu itp. Poniżej znajduje się opis wszystkich kolumn Metatabeli produktu.

Identyfikator Unikalny identyfikator do identyfikacji meta produktu.
Identyfikator produktu Identyfikator produktu do identyfikacji produktu nadrzędnego.
Klucz Klucz identyfikujący meta.
Treść Kolumna używana do przechowywania metadanych produktu.

Metatabela produktu z odpowiednimi ograniczeniami jest pokazana poniżej.

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;

Tabela kategorii i tabela kategorii produktów

W tej sekcji zaprojektujemy Tabelę kategorii i Tabela kategorii produktów do przechowywania kategorii produktów i ich mapowań. Poniżej znajduje się opis wszystkich kolumn tabeli kategorii.

Identyfikator Unikalny identyfikator do identyfikacji kategorii.
Identyfikator rodzica Identyfikator nadrzędny do identyfikacji kategorii nadrzędnej.
Tytuł Tytuł kategorii.
Metatytuł Metatytuł używany do tytułu przeglądarki i SEO.
Ślimak Narzędzie kategorii do utworzenia adresu URL.
Treść Kolumna używana do przechowywania szczegółów kategorii.

Tabela kategorii z odpowiednimi ograniczeniami jest pokazana poniżej.

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;

Poniżej znajduje się opis wszystkich kolumn tabeli kategorii produktów.

Identyfikator produktu Identyfikator produktu do identyfikacji produktu.
Identyfikator kategorii Identyfikator kategorii do identyfikacji kategorii.

Tabela kategorii produktów z odpowiednimi ograniczeniami jest pokazana poniżej.

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

Tabela marki

W tej sekcji zaprojektujemy Tabelę marki do przechowywania danych marki. Poniżej wymieniono opis wszystkich kolumn tabeli marek.

Identyfikator Unikalny identyfikator do identyfikacji marki.
Tytuł Tytuł marki, który ma być wyświetlany w ekwipunku.
Podsumowanie Podsumowanie wymienia najważniejsze informacje.
Utworzono w Przechowuje datę i godzinę utworzenia produktu.
Aktualizacja o Przechowuje datę i godzinę aktualizacji produktu.
Treść Kolumna służąca do przechowywania dodatkowych szczegółów marki.

Tabela marek z odpowiednimi ograniczeniami jest pokazana poniżej.

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

Tabela zamówień

Ta sekcja zawiera tabelę do zarządzania zamówieniami magazynowymi. Zamówienie może być powiązane z Dostawcą lub Odbiorcą. Poniżej znajduje się opis wszystkich kolumn tabeli zamówień.

Identyfikator Unikalny identyfikator do identyfikacji zamówienia.
Identyfikator użytkownika Identyfikator użytkownika do identyfikacji Dostawcy lub Klienta powiązanego z zamówieniem.
Wpisz Typ zamówienia do rozróżnienia między Zamówieniem zakupu a Zamówieniem klienta.
Stan Status zamówienia może być:Nowe, Do kasy, Zapłacone, Nieudane, Wysłane, Dostarczone, Zwrócone i Ukończone.
Suma częściowa Całkowita cena pozycji zamówienia.
Zniżka na przedmiot Całkowity rabat na pozycje zamówienia.
Podatek Podatek od pozycji zamówienia.
Wysyłka Opłaty za wysyłkę pozycji zamówienia.
Łącznie Całkowita cena Zamówienia wraz z podatkiem i kosztami wysyłki. Nie obejmuje zniżek na przedmioty.
Promocja Kod promocyjny Zamówienia.
Rabat Całkowity rabat Zamówienia na podstawie kodu promocyjnego lub rabatu w sklepie.
Całkowita suma Całkowita suma zamówienia do zapłaty przez kupującego.
Utworzono w Przechowuje datę i godzinę utworzenia zamówienia.
Aktualizacja o Przechowuje datę i godzinę aktualizacji zamówienia.
Treść Kolumna używana do przechowywania dodatkowych szczegółów zamówienia.

Tabela kolejności z odpowiednimi ograniczeniami jest pokazana poniżej.

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

Tabela adresowa

Ta sekcja zawiera tabelę do zarządzania adresem użytkownika lub zamówienia. Adres użytkownika może służyć do przechowywania adresu powiązanego z użytkownikiem. Adres zamówienia może służyć do przechowywania adresu dostawy dla zamówień z dostawą do domu. Poniżej znajduje się opis wszystkich kolumn tabeli adresów.

Identyfikator Unikalny identyfikator do identyfikacji adresu.
Identyfikator użytkownika Identyfikator użytkownika do identyfikacji użytkownika powiązanego z adresem.
Identyfikator zamówienia Identyfikator zamówienia identyfikujący zamówienie powiązane z adresem.
Imię Imię użytkownika.
Drugie imię Drugie imię użytkownika.
Nazwisko Nazwisko użytkownika.
Komórka Numer telefonu komórkowego użytkownika.
Poczta e-mail E-mail użytkownika.
Wiersz 1 Pierwszy wiersz do przechowywania adresu.
Wiersz 2 Druga linia do przechowywania adresu.
Miasto Miasto adresu.
Prowincja Prowincja adresu.
Kraj Kraj adresu.
Utworzono w Przechowuje datę i godzinę utworzenia zamówienia.
Aktualizacja o Przechowuje datę i godzinę aktualizacji zamówienia.

Tabela adresów z odpowiednimi ograniczeniami jest pokazana poniżej.

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;

Tabela przedmiotów

W tej sekcji zaprojektujemy Element Stół aby zapisać szczegóły przedmiotu. Pozycja reprezentuje pozycje znajdujące się w magazynie i zakupione od dostawców. Poniżej znajduje się opis wszystkich kolumn tabeli pozycji.

Identyfikator Unikalny identyfikator do identyfikacji przedmiotu.
Identyfikator produktu Identyfikator produktu identyfikujący produkt powiązany z pozycją zapasów.
Identyfikator marki Identyfikator marki identyfikujący markę powiązaną z pozycją w asortymencie.
Identyfikator dostawcy Identyfikator dostawcy do identyfikacji dostawcy powiązanego z pozycją zapasów.
Identyfikator zamówienia Identyfikator zamówienia identyfikujący zamówienie powiązane z pozycją zapasów.
Utworzone przez Identyfikator użytkownika identyfikujący użytkownika, który dodał element ekwipunku.
Zaktualizowane przez Identyfikator użytkownika identyfikujący użytkownika, który zaktualizował pozycję asortymentu.
Jednostka magazynowa Identyfikator identyfikujący produkt w magazynie.
Maksymalna cena detaliczna Drukowana cena produktu powiązanego z pozycją.
Rabat Zniżka jest udzielana przez dostawcę.
Cena Cena, po której produkt został zakupiony.
Ilość Całkowita ilość otrzymana w magazynie.
Sprzedane Całkowita ilość sprzedana klientom.
Dostępne Ilość dostępna w magazynie.
Wadliwy Całkowita liczba wadliwych produktów otrzymanych w magazynie lub zwróconych przez klientów.
Utworzono w Przechowuje datę i godzinę utworzenia zamówienia.
Aktualizacja o Przechowuje datę i godzinę aktualizacji zamówienia.

Tabela elementów z odpowiednimi ograniczeniami jest pokazana poniżej.

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;

Tabela pozycji zamówienia

Ta sekcja zawiera tabelę do zarządzania pozycjami zamówienia zakupionymi przez klientów. Poniżej wymieniono opis wszystkich kolumn tabeli pozycji zamówienia.

Identyfikator Unikalny identyfikator do identyfikacji zamówionego produktu.
Identyfikator produktu Identyfikator produktu identyfikujący produkt powiązany z zamówioną pozycją.
Identyfikator elementu Identyfikator przedmiotu identyfikujący przedmiot powiązany z zamówionym przedmiotem.
Identyfikator zamówienia Identyfikator zamówienia identyfikujący zamówienie powiązane z zamówionym produktem.
SKU SKU produktu podczas jego zakupu.
Cena Cena produktu przy zakupie.
Rabat Rabat produktu podczas jego zakupu.
Ilość Ilość produktu wybrana przez użytkownika.
Utworzono w Przechowuje datę i godzinę utworzenia zamówionego elementu.
Aktualizacja o Przechowuje datę i godzinę aktualizacji zamówionego elementu.
Treść Kolumna używana do przechowywania dodatkowych szczegółów zamówionego przedmiotu.

Tabela pozycji zamówienia z odpowiednimi ograniczeniami jest pokazana poniżej.

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;

Tabela transakcji

Potrzebujemy również tabeli transakcji do śledzenia płatności za zamówienie dokonywanych przez kupującego oraz do prowadzenia ksiąg rachunkowych. Możemy również użyć tej samej tabeli do zarejestrowania częściowego lub pełnego zwrotu zamówienia. Poniżej wymieniono opis wszystkich kolumn tabeli transakcji.

Identyfikator Unikalny identyfikator do identyfikacji transakcji.
Identyfikator użytkownika Identyfikator użytkownika do identyfikacji użytkownika powiązanego z transakcją.
Identyfikator zamówienia Identyfikator zamówienia identyfikujący zamówienie związane z transakcją.
Kod Identyfikator płatności dostarczony przez bramkę płatności.
Wpisz Typem transakcji zamówienia może być kredyt lub debet.
Tryb Trybem realizacji zamówienia może być Offline, Płatność przy odbiorze, Czek, Draft, Przewodowy i Online.
Stan Statusem transakcji zamówienia może być Nowa, Anulowana, Nieudana, Oczekująca, Odrzucona, Odrzucona i Powodzenie.
Utworzono w Przechowuje datę i godzinę utworzenia transakcji zamówienia.
Aktualizacja o Przechowuje datę i godzinę aktualizacji transakcji zamówienia.
Treść Kolumna używana do przechowywania dodatkowych szczegółów transakcji.

Tabela transakcji z odpowiednimi ograniczeniami jest pokazana poniżej.

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;

Podsumowanie

W tym samouczku omówiliśmy projekt bazy danych systemu zarządzania zapasami do przechowywania użytkowników i zarządzania zapasami produktów. Zapewnił również projekt bazy danych do zarządzania zamówieniami zakupu i zamówieniami klientów.

Możesz przesłać swoje uwagi, aby dołączyć do dyskusji. Możesz być również zainteresowany zaprojektowaniem bazy danych aplikacji Blog oraz Poll &Survey. Pełny schemat bazy danych jest również dostępny na GitHub.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hybrydowe obciążenia bazy danych OLTP/Analytics w klastrze Galera przy użyciu asynchronicznych modułów podrzędnych

  2. Python SQL — jak korzystać z baz danych SQLite, MySQL i PostgreSQL w Pythonie

  3. Naucz się MySQL / MariaDB dla początkujących – część 1

  4. Zainstaluj wiele instancji MySQL na serwerze Linux — użyj osobnego pliku konfiguracyjnego MySQL

  5. Najlepsze alternatywy dla środowiska pracy MySQL