यह ट्यूटोरियल आपूर्तिकर्ताओं, सेल्सपर्सन, आइटम, आइटम स्टॉक, खरीद ऑर्डर और ग्राहक ऑर्डर को प्रबंधित करने के लिए इन्वेंटरी मैनेजमेंट सिस्टम के डेटाबेस स्कीमा को डिज़ाइन करने के लिए पूर्ण चरण प्रदान करता है।
नोट :आमतौर पर, खुदरा और विनिर्माण क्षेत्र के व्यवसाय इन्वेंट्री सिस्टम का उपयोग करते हैं। अन्य उद्योगों में व्यापक उपयोग के मामलों में, इस डेटाबेस स्कीमा का उपयोग, उदाहरण के लिए, अस्पताल सूची प्रबंधन के लिए स्वास्थ्य देखभाल आपूर्ति श्रृंखला की दक्षता बढ़ाने और दवा अपशिष्ट को कम करने के लिए किया जा सकता है।
इकाई संबंध आरेख या विज़ुअल डेटाबेस डिज़ाइन नीचे दिखाया गया है।
इन्वेंटरी प्रबंधन डेटाबेस
आप उबंटू 20.04 एलटीएस पर MySQL 8 कैसे स्थापित करें, विंडोज पर MySQL 8 कैसे स्थापित करें, उबंटू पर MySQL कार्यक्षेत्र कैसे स्थापित करें, विंडोज 10 पर कार्यक्षेत्र के साथ MySQL 8 कैसे स्थापित करें, MySQL में RBAC डेटाबेस सहित लोकप्रिय ट्यूटोरियल पर जा सकते हैं। MySql में ब्लॉग डेटाबेस, MySQL में क्विज़ डेटाबेस, MySQL में पोल और सर्वे डेटाबेस, MySQL में ऑनलाइन शॉपिंग कार्ट डेटाबेस, और MySQL में बेसिक SQL क्वेरीज़ सीखें।
इन्वेंट्री डेटाबेस
इन्वेंटरी डेटाबेस बनाने के लिए सबसे पहला कदम है। इसे नीचे दिखाए गए अनुसार क्वेरी का उपयोग करके बनाया जा सकता है।
CREATE SCHEMA `inventory` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
मैंने वर्ण सेट का उपयोग किया है utf8mb4 पात्रों की एक विस्तृत श्रृंखला का समर्थन करने के लिए।
उपयोगकर्ता तालिका
इस अनुभाग में, हम उपयोगकर्ता तालिका . डिज़ाइन करेंगे उपयोगकर्ता जानकारी संग्रहीत करने के लिए। उपयोगकर्ता अपने स्वयं के प्रोफाइल का प्रबंधन कर सकते हैं। साथ ही, उपयोगकर्ता उन्हें सौंपी गई भूमिकाओं के अनुसार एप्लिकेशन का उपयोग कर सकते हैं। आप भूमिकाओं और अनुमतियों के प्रबंधन के लिए एक पूर्ण RBAC प्रणाली को लागू करने के लिए MySql में ट्यूटोरियल RBAC डेटाबेस का भी उल्लेख कर सकते हैं। उपयोगकर्ता तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | उपयोगकर्ता की पहचान करने के लिए अद्वितीय आईडी। |
भूमिका क्रमांक | उपयोगकर्ता की भूमिका। यह व्यवस्थापक, आपूर्तिकर्ता, विक्रेता और ग्राहक हो सकता है। |
प्रथम नाम | उपयोगकर्ता का पहला नाम। |
मध्य नाम | उपयोगकर्ता का मध्य नाम। |
उपनाम | उपयोगकर्ता का अंतिम नाम। |
मोबाइल | उपयोगकर्ता का मोबाइल नंबर। इसका उपयोग लॉगिन और पंजीकरण उद्देश्यों के लिए किया जा सकता है। |
ईमेल | उपयोगकर्ता का ईमेल। इसका उपयोग लॉगिन और पंजीकरण उद्देश्यों के लिए किया जा सकता है। |
पासवर्ड हैश | उपयुक्त एल्गोरिथम द्वारा उत्पन्न पासवर्ड हैश। हमें सादे या एन्क्रिप्टेड पासवर्ड संग्रहीत करने से बचना चाहिए। |
पर पंजीकृत | इस कॉलम का उपयोग एप्लिकेशन के साथ उपयोगकर्ता के जीवन की गणना करने के लिए किया जा सकता है। |
अंतिम लॉगिन | इसका उपयोग उपयोगकर्ता के अंतिम लॉगिन की पहचान करने के लिए किया जा सकता है। |
पहचान | उपयोगकर्ता का संक्षिप्त परिचय। |
प्रोफाइल | उपयोगकर्ता विवरण। |
उपयुक्त बाधाओं के साथ उपयोगकर्ता तालिका नीचे दिखाई गई है।
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) );
उत्पाद तालिका
इस अनुभाग में, हम उत्पाद तालिका . डिज़ाइन करेंगे उत्पाद डेटा संग्रहीत करने के लिए। उत्पाद तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | उत्पाद की पहचान करने के लिए अद्वितीय आईडी। |
शीर्षक | इन्वेंटरी पर प्रदर्शित होने वाला उत्पाद शीर्षक। |
सारांश | मुख्य हाइलाइट्स का उल्लेख करने के लिए सारांश। |
टाइप करें | विभिन्न उत्पाद प्रकारों के बीच अंतर करने का प्रकार। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर उत्पाद बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब उत्पाद अपडेट किया जाता है। |
सामग्री | उत्पाद के अतिरिक्त विवरण संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम। |
उपयुक्त बाधाओं वाली उत्पाद तालिका नीचे दिखाई गई है।
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`)
);
उत्पाद मेटा
उत्पाद मेटा तालिका का उपयोग उत्पाद बैनर URL आदि सहित उत्पादों के बारे में अतिरिक्त जानकारी संग्रहीत करने के लिए किया जा सकता है। नीचे उत्पाद मेटा तालिका के सभी स्तंभों का विवरण दिया गया है।
Id | उत्पाद मेटा की पहचान करने के लिए अद्वितीय आईडी। |
उत्पाद आईडी | मूल उत्पाद की पहचान करने के लिए उत्पाद आईडी. |
कुंजी | मेटा की पहचान करने वाली कुंजी। |
सामग्री | उत्पाद मेटाडेटा संग्रहीत करने के लिए उपयोग किया जाने वाला स्तंभ। |
उपयुक्त बाधाओं के साथ उत्पाद मेटा टेबल नीचे दिखाया गया है।
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;
श्रेणी तालिका और उत्पाद श्रेणी तालिका
इस खंड में, हम श्रेणी तालिका . डिजाइन करेंगे और उत्पाद श्रेणी तालिका उत्पाद श्रेणियों और उनके मानचित्रण को संग्रहीत करने के लिए। श्रेणी तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | श्रेणी की पहचान करने के लिए अद्वितीय आईडी। |
अभिभावक आईडी | पेरेंट श्रेणी की पहचान करने के लिए पैरेंट आईडी। |
शीर्षक | श्रेणी शीर्षक। |
मेटा शीर्षक | ब्राउज़र शीर्षक और SEO के लिए उपयोग किया जाने वाला मेटा शीर्षक। |
स्लग | यूआरएल बनाने के लिए कैटेगरी स्लग। |
सामग्री | श्रेणी विवरण संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम। |
उपयुक्त बाधाओं के साथ श्रेणी तालिका नीचे दी गई है।
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;
उत्पाद श्रेणी तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
उत्पाद आईडी | उत्पाद आईडी उत्पाद की पहचान करने के लिए। |
श्रेणी आईडी | श्रेणी की पहचान करने के लिए श्रेणी आईडी। |
उपयुक्त बाधाओं के साथ उत्पाद श्रेणी तालिका नीचे दी गई है।
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);
ब्रांड तालिका
इस खंड में, हम ब्रांड तालिका . डिजाइन करेंगे ब्रांड डेटा स्टोर करने के लिए। नीचे उल्लिखित ब्रांड तालिका के सभी स्तंभों का विवरण है।
Id | ब्रांड की पहचान करने के लिए अद्वितीय आईडी। |
शीर्षक | इन्वेंटरी पर प्रदर्शित किया जाने वाला ब्रांड शीर्षक। |
सारांश | सारांश में मुख्य हाइलाइट्स का उल्लेख है। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर उत्पाद बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब उत्पाद अपडेट किया जाता है। |
सामग्री | ब्रांड का अतिरिक्त विवरण संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम। |
उपयुक्त बाधाओं वाली ब्रांड तालिका नीचे दिखाई गई है।
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`)
);
आदेश तालिका तालिका
यह खंड इन्वेंट्री ऑर्डर को प्रबंधित करने के लिए तालिका प्रदान करता है। ऑर्डर को आपूर्तिकर्ता या ग्राहक के साथ जोड़ा जा सकता है। आदेश तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | आदेश की पहचान करने के लिए अद्वितीय आईडी। |
उपयोगकर्ता आईडी | आदेश से जुड़े आपूर्तिकर्ता या ग्राहक की पहचान करने के लिए उपयोगकर्ता आईडी। |
टाइप करें | खरीद आदेश या ग्राहक आदेश के बीच अंतर करने के लिए आदेश प्रकार। |
स्थिति | आदेश की स्थिति नई, चेकआउट, भुगतान, विफल, भेज दी गई, वितरित, लौटाई गई और पूर्ण हो सकती है। |
उप योग | आदेश आइटम की कुल कीमत। |
आइटम छूट | आदेश आइटम की कुल छूट। |
टैक्स | आदेश की वस्तुओं पर कर। |
शिपिंग | आदेश की वस्तुओं का शिपिंग शुल्क। |
कुल | कर और शिपिंग सहित ऑर्डर का कुल मूल्य। इसमें आइटम छूट शामिल नहीं है। |
प्रोमो | आदेश का प्रोमो कोड। |
छूट | प्रोमो कोड या स्टोर छूट के आधार पर ऑर्डर की कुल छूट। |
कुल योग | खरीदार द्वारा भुगतान किए जाने वाले आदेश का कुल योग। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ऑर्डर बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ऑर्डर अपडेट किया जाता है। |
सामग्री | आदेश के अतिरिक्त विवरण संग्रहीत करने के लिए प्रयुक्त कॉलम। |
उचित बाधाओं के साथ ऑर्डर टेबल नीचे दिखाया गया है।
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);
पता तालिका
यह खंड उपयोगकर्ता या आदेश के पते को प्रबंधित करने के लिए तालिका प्रदान करता है। उपयोगकर्ता के पते का उपयोग उपयोगकर्ता से जुड़े पते को संग्रहीत करने के लिए किया जा सकता है। होम डिलीवरी ऑर्डर के लिए डिलीवरी एड्रेस को स्टोर करने के लिए ऑर्डर एड्रेस का इस्तेमाल किया जा सकता है। पता तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | पते की पहचान करने के लिए अद्वितीय आईडी। |
उपयोगकर्ता आईडी | पते से जुड़े उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी। |
आदेश आईडी | आदेश आईडी पते से जुड़े आदेश की पहचान करने के लिए। |
प्रथम नाम | उपयोगकर्ता का पहला नाम। |
मध्य नाम | उपयोगकर्ता का मध्य नाम। |
उपनाम | उपयोगकर्ता का अंतिम नाम। |
मोबाइल | उपयोगकर्ता का मोबाइल नंबर। |
ईमेल | उपयोगकर्ता का ईमेल। |
पंक्ति 1 | पता स्टोर करने के लिए पहली पंक्ति। |
पंक्ति 2 | पता स्टोर करने के लिए दूसरी पंक्ति। |
शहर | पते का शहर। |
प्रांत | पते का प्रांत। |
देश | पते का देश। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ऑर्डर बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ऑर्डर अपडेट किया जाता है। |
उपयुक्त बाधाओं के साथ पता तालिका नीचे दी गई है।
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;
आइटम तालिका
इस खंड में, हम आइटम . डिजाइन करेंगे तालिका आइटम विवरण संग्रहीत करने के लिए। आइटम इन्वेंट्री में स्टॉक की गई और आपूर्तिकर्ताओं से खरीदी गई वस्तुओं का प्रतिनिधित्व करता है। नीचे उल्लिखित मद तालिका के सभी स्तंभों का विवरण है।
Id | आइटम की पहचान करने के लिए अद्वितीय आईडी। |
उत्पाद आईडी | इन्वेंट्री आइटम से जुड़े उत्पाद की पहचान करने के लिए उत्पाद आईडी। |
ब्रांड आईडी | इन्वेंट्री आइटम से जुड़े ब्रांड की पहचान करने के लिए ब्रांड आईडी। |
आपूर्तिकर्ता आईडी | इन्वेंट्री आइटम से जुड़े सप्लायर की पहचान करने के लिए सप्लायर आईडी. |
आदेश आईडी | इन्वेंट्री आइटम से जुड़े ऑर्डर की पहचान करने के लिए ऑर्डर आईडी। |
द्वारा निर्मित | इनवेंटरी आइटम जोड़ने वाले उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी। |
द्वारा अपडेट किया गया | इनवेंटरी आइटम को अपडेट करने वाले उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी। |
स्टॉक कीपिंग यूनिट | स्टॉक पर आइटम की पहचान करने के लिए आईडी। |
अधिकतम खुदरा मूल्य | वस्तु से संबद्ध उत्पाद का मुद्रित मूल्य। |
छूट | छूट आपूर्तिकर्ता द्वारा दी जाती है। |
कीमत | वह मूल्य जिस पर उत्पाद खरीदा गया था। |
मात्रा | सूची में प्राप्त कुल मात्रा। |
बेचा गया | ग्राहकों को बेची गई कुल मात्रा। |
उपलब्ध | वह मात्रा जो स्टॉक में उपलब्ध है। |
दोषपूर्ण | कुल दोषपूर्ण आइटम या तो इन्वेंट्री में प्राप्त हुए या ग्राहकों द्वारा लौटाए गए। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ऑर्डर बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ऑर्डर अपडेट किया जाता है। |
उपयुक्त बाधाओं के साथ मद तालिका नीचे दी गई है।
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;
आइटम टेबल ऑर्डर करें
यह खंड ग्राहकों द्वारा खरीदे गए ऑर्डर आइटम को प्रबंधित करने के लिए तालिका प्रदान करता है। ऑर्डर आइटम टेबल के सभी कॉलम का विवरण नीचे दिया गया है।
Id | आदेशित वस्तु की पहचान करने के लिए अद्वितीय आईडी। |
उत्पाद आईडी | आदेशित वस्तु से संबद्ध उत्पाद की पहचान करने के लिए उत्पाद आईडी। |
आइटम आईडी | आइटम आईडी ऑर्डर किए गए आइटम से जुड़े आइटम की पहचान करने के लिए। |
आदेश आईडी | आदेशित वस्तु से संबद्ध आदेश की पहचान करने के लिए आदेश आईडी। |
SKU | उत्पाद खरीदते समय उसका SKU. |
कीमत | उत्पाद खरीदते समय उसकी कीमत। |
छूट | उत्पाद खरीदते समय उस पर छूट। |
मात्रा | उपयोगकर्ता द्वारा चयनित उत्पाद की मात्रा। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर ऑर्डर किया गया आइटम बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर ऑर्डर किया गया आइटम अपडेट किया जाता है। |
सामग्री | आदेशित वस्तु के अतिरिक्त विवरण संग्रहीत करने के लिए प्रयुक्त कॉलम। |
उचित बाधाओं के साथ ऑर्डर आइटम तालिका नीचे दी गई है।
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;
लेन-देन तालिका
हमें खरीदार द्वारा किए गए ऑर्डर भुगतानों और बहीखाता पद्धति को ट्रैक करने के लिए एक लेनदेन तालिका की भी आवश्यकता है। हम ऑर्डर के आंशिक या पूर्ण धनवापसी को रिकॉर्ड करने के लिए भी उसी तालिका का उपयोग कर सकते हैं। लेन-देन तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | लेन-देन की पहचान करने के लिए अद्वितीय आईडी। |
उपयोगकर्ता आईडी | लेन-देन से जुड़े उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी। |
आदेश आईडी | लेनदेन से जुड़े आदेश की पहचान करने के लिए ऑर्डर आईडी। |
कोड | पेमेंट गेटवे द्वारा प्रदान की गई भुगतान आईडी। |
टाइप करें | आदेश लेनदेन का प्रकार क्रेडिट या डेबिट हो सकता है। |
मोड | आदेश लेनदेन का तरीका ऑफलाइन, कैश ऑन डिलीवरी, चेक, ड्राफ्ट, वायर्ड और ऑनलाइन हो सकता है। |
स्थिति | आदेश लेनदेन की स्थिति नई, रद्द, विफल, लंबित, अस्वीकृत, अस्वीकृत और सफल हो सकती है। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर ऑर्डर का लेन-देन किया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर ऑर्डर लेनदेन अद्यतन किया जाता है। |
सामग्री | लेनदेन के अतिरिक्त विवरण संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम। |
उपयुक्त बाधाओं के साथ लेन-देन तालिका नीचे दी गई है।
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;
सारांश
इस ट्यूटोरियल में, हमने उपयोगकर्ताओं को स्टोर करने और उत्पाद इन्वेंट्री को प्रबंधित करने के लिए एक इन्वेंटरी मैनेजमेंट सिस्टम के डेटाबेस डिज़ाइन पर चर्चा की है। इसने खरीद ऑर्डर और ग्राहक ऑर्डर प्रबंधित करने के लिए डेटाबेस डिज़ाइन भी प्रदान किया।
आप चर्चा में शामिल होने के लिए अपनी टिप्पणियाँ प्रस्तुत कर सकते हैं। आप ब्लॉग और पोल और सर्वेक्षण अनुप्रयोगों के डेटाबेस को डिजाइन करने में भी रुचि ले सकते हैं। संपूर्ण डेटाबेस स्कीमा GitHub पर भी उपलब्ध है।