Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में कर्मचारी प्रबंधन प्रणाली के लिए डेटाबेस डिजाइन करने के लिए गाइड

यह ट्यूटोरियल उपयोगकर्ताओं, भूमिकाओं, अनुमतियों, संगठनों और कर्मचारियों को प्रबंधित करने के लिए कर्मचारी प्रबंधन प्रणाली के डेटाबेस स्कीमा को डिज़ाइन करने के लिए पूर्ण चरण प्रदान करता है।

इकाई संबंध आरेख या विज़ुअल डेटाबेस डिज़ाइन नीचे दिखाया गया है।

कर्मचारी प्रबंधन डेटाबेस

आप उबंटू 20.04 एलटीएस पर MySQL 8 कैसे स्थापित करें, विंडोज पर MySQL 8 कैसे स्थापित करें, उबंटू पर MySQL कार्यक्षेत्र कैसे स्थापित करें, विंडोज 10 पर कार्यक्षेत्र के साथ MySQL 8 कैसे स्थापित करें, MySQL में RBAC डेटाबेस सहित लोकप्रिय ट्यूटोरियल पर भी जा सकते हैं। MySql में ब्लॉग डेटाबेस, MySQL में क्विज़ डेटाबेस, MySQL में पोल ​​और सर्वे डेटाबेस, MySQL में ऑनलाइन शॉपिंग कार्ट डेटाबेस, MySQL में इन्वेंटरी डेटाबेस, और MySQL में बेसिक SQL क्वेरीज़ सीखें।

नोट :आप अपनी आवश्यकताओं के आधार पर अनुकूलित समाधान प्राप्त करने के लिए कर्मचारी प्रबंधन प्रणाली के कस्टम डेटाबेस स्कीमा का भी अनुसरण कर सकते हैं।

संगठन डेटाबेस

सबसे पहला कदम संगठन डेटाबेस बनाना है। इसे नीचे दिखाए गए अनुसार क्वेरी का उपयोग करके बनाया जा सकता है।

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

मैंने वर्ण सेट का उपयोग किया है utf8mb4 पात्रों की एक विस्तृत श्रृंखला का समर्थन करने के लिए।

भूमिका तालिका

इस खंड में, हम भूमिका तालिका . डिजाइन करेंगे सिस्टम और संगठन भूमिकाओं को संग्रहीत करने के लिए। कॉलम प्रकार का उपयोग यह पहचानने के लिए किया जा सकता है कि भूमिका एप्लिकेशन उपयोगकर्ताओं या संगठन कर्मचारियों के लिए है या नहीं। रोल टेबल के सभी कॉलमों का विवरण नीचे दिया गया है।

Id भूमिका की पहचान करने के लिए अद्वितीय आईडी।
शीर्षक भूमिका शीर्षक।
स्लग भूमिका खोजने के लिए अद्वितीय स्लग।
विवरण भूमिका का उल्लेख करने के लिए विवरण।
टाइप करें सिस्टम और संगठन भूमिकाओं के बीच अंतर करने के लिए भूमिका प्रकार।
सक्रिय यह जाँचने के लिए फ़्लैग कि क्या भूमिका वर्तमान में सक्रिय है।
पर बनाया गया यह उस दिनांक और समय को संग्रहीत करता है जब भूमिका बनाई जाती है।
पर अपडेट किया गया यह उस दिनांक और समय को संग्रहीत करता है जब भूमिका अद्यतन की जाती है।
सामग्री भूमिका के बारे में संपूर्ण विवरण।

उपयुक्त बाधाओं के साथ रोल टेबल नीचे दिखाया गया है।

CREATE TABLE `organization`.`role` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
`description` TINYTEXT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC) );

अनुमति तालिका

इस खंड में, हम अनुमति तालिका . डिजाइन करेंगे सिस्टम और संगठन अनुमतियों को संग्रहीत करने के लिए। कॉलम प्रकार का उपयोग यह पहचानने के लिए किया जा सकता है कि अनुमति एप्लिकेशन उपयोगकर्ताओं या संगठन कर्मचारियों के लिए है या नहीं। अनुमति तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।

Id अनुमति की पहचान करने के लिए अद्वितीय आईडी।
शीर्षक अनुमति शीर्षक।
स्लग अनुमति खोजने के लिए अद्वितीय स्लग।
विवरण अनुमति का उल्लेख करने के लिए विवरण।
टाइप करें सिस्टम और संगठन अनुमतियों के बीच अंतर करने के लिए अनुमति प्रकार।
सक्रिय यह जाँचने के लिए फ़्लैग कि अनुमति वर्तमान में सक्रिय है या नहीं।
पर बनाया गया यह उस दिनांक और समय को संग्रहीत करता है जिस पर अनुमति बनाई गई है।
पर अपडेट किया गया यह उस दिनांक और समय को संग्रहीत करता है जिस पर अनुमति अपडेट की जाती है।
सामग्री अनुमति के बारे में पूरी जानकारी।

उपयुक्त बाधाओं के साथ अनुमति तालिका नीचे दी गई है।

CREATE TABLE `organization`.`permission` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
`description` TINYTEXT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC) );

भूमिका अनुमति तालिका

भूमिका अनुमति तालिका भूमिकाओं के लिए अनुमतियों के मानचित्रण को संग्रहीत करने के लिए उपयोग किया जा सकता है। भूमिका अनुमति तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।

भूमिका क्रमांक भूमिका की पहचान करने के लिए भूमिका आईडी।
अनुमति आईडी अनुमति की पहचान करने के लिए अनुमति आईडी।
पर बनाया गया यह उस दिनांक और समय को संग्रहीत करता है जिस पर मानचित्रण बनाया जाता है।
पर अपडेट किया गया यह उस दिनांक और समय को संग्रहीत करता है जिस पर मानचित्रण अद्यतन किया जाता है।

उपयुक्त बाधाओं के साथ भूमिका अनुमति तालिका नीचे दी गई है।

CREATE TABLE `organization`.`role_permission` (
`roleId` BIGINT NOT NULL,
`permissionId` BIGINT NOT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL,
PRIMARY KEY (`roleId`, `permissionId`),
INDEX `idx_rp_role` (`roleId` ASC),
INDEX `idx_rp_permission` (`permissionId` ASC),
CONSTRAINT `fk_rp_role`
FOREIGN KEY (`roleId`)
REFERENCES `organization`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_rp_permission`
FOREIGN KEY (`permissionId`)
REFERENCES `organization`.`permission` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

उपयोगकर्ता तालिका

इस अनुभाग में, हम उपयोगकर्ता तालिका . डिज़ाइन करेंगे उपयोगकर्ता जानकारी संग्रहीत करने के लिए। उपयोगकर्ता अपने स्वयं के प्रोफाइल का प्रबंधन कर सकते हैं। साथ ही, उपयोगकर्ता उन्हें सौंपी गई सिस्टम भूमिकाओं के अनुसार एप्लिकेशन का उपयोग कर सकते हैं। उपयोगकर्ता तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।

Id उपयोगकर्ता की पहचान करने के लिए अद्वितीय आईडी।
भूमिका क्रमांक उपयोगकर्ता की भूमिका। यह व्यवस्थापक या उपयोगकर्ता हो सकता है।
प्रथम नाम उपयोगकर्ता का पहला नाम।
मध्य नाम उपयोगकर्ता का मध्य नाम।
उपनाम उपयोगकर्ता का अंतिम नाम।
मोबाइल उपयोगकर्ता का मोबाइल नंबर। इसका उपयोग लॉगिन और पंजीकरण उद्देश्यों के लिए किया जा सकता है।
ईमेल उपयोगकर्ता का ईमेल। इसका उपयोग लॉगिन और पंजीकरण उद्देश्यों के लिए किया जा सकता है।
पासवर्ड हैश उपयुक्त एल्गोरिथम द्वारा उत्पन्न पासवर्ड हैश। हमें सादे या एन्क्रिप्टेड पासवर्ड संग्रहीत करने से बचना चाहिए।
पर पंजीकृत इस कॉलम का उपयोग एप्लिकेशन के साथ उपयोगकर्ता के जीवन की गणना करने के लिए किया जा सकता है।
अंतिम लॉगिन इसका उपयोग उपयोगकर्ता के अंतिम लॉगिन की पहचान करने के लिए किया जा सकता है।
पहचान उपयोगकर्ता का संक्षिप्त परिचय।
प्रोफाइल उपयोगकर्ता विवरण।

उपयुक्त बाधाओं के साथ उपयोगकर्ता तालिका नीचे दिखाई गई है।

CREATE TABLE `organization`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`roleId` BIGINT 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),
INDEX `idx_user_role` (`roleId` ASC),
CONSTRAINT `fk_user_role`
FOREIGN KEY (`roleId`)
REFERENCES `organization`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

संगठन तालिका

इस खंड में, हम संगठन तालिका . डिजाइन करेंगे संगठन डेटा संग्रहीत करने के लिए। संगठन तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।

Id संगठन की पहचान के लिए अद्वितीय आईडी।
द्वारा निर्मित संगठन को पंजीकृत करने वाले उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी।
द्वारा अपडेट किया गया संगठन को अपडेट करने वाले उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी।
शीर्षक संगठन का शीर्षक।
मेटा शीर्षक ब्राउज़र शीर्षक और SEO उद्देश्यों के लिए उपयोग किया जाने वाला मेटा शीर्षक।
स्लग अद्वितीय URL बनाने के लिए स्लग।
सारांश मुख्य हाइलाइट्स का उल्लेख करने के लिए सारांश।
स्थिति संगठन की स्थिति नई, स्वीकृत, सक्रिय या अवरुद्ध हो सकती है।
पर बनाया गया यह उस दिनांक और समय को संग्रहीत करता है जब संगठन बनाया गया था।
पर अपडेट किया गया यह उस दिनांक और समय को संग्रहीत करता है जब संगठन को अद्यतन किया जाता है।
प्रोफाइल संगठन के प्रोफ़ाइल विवरण संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम।
सामग्री संगठन के अतिरिक्त विवरण संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम।

यह संगठन की स्थिति को ट्रैक करने के लिए कॉलम स्थिति का उपयोग करता है। स्थिति नई, स्वीकृत, सक्रिय या अवरुद्ध हो सकती है। उपयुक्त बाधाओं वाली संगठन तालिका नीचे दर्शाई गई है।

CREATE TABLE `organization`.`organization` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`title` VARCHAR(75) NOT NULL,
`metaTitle` VARCHAR(100) NULL,
`slug` VARCHAR(100) NOT NULL,
`summary` TINYTEXT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC),
INDEX `idx_organization_creator` (`createdBy` ASC),
CONSTRAINT `fk_organization_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `organization`.`organization`
ADD INDEX `idx_organization_modifier` (`updatedBy` ASC);
ALTER TABLE `organization`.`organization`
ADD CONSTRAINT `fk_organization_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

संगठन मेटा

संगठन मेटा टेबल का उपयोग संगठन बैनर यूआरएल आदि सहित संगठनों के बारे में अतिरिक्त जानकारी संग्रहीत करने के लिए किया जा सकता है। नीचे उल्लिखित संगठन मेटा टेबल के सभी कॉलम का विवरण है।

Id संगठन मेटा की पहचान करने के लिए अद्वितीय आईडी।
संगठन आईडी मूल संगठन की पहचान करने के लिए संगठन आईडी।
कुंजी मेटा की पहचान करने वाली कुंजी।
सामग्री संगठन के मेटाडेटा को संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम।

संगठन मेटा टेबल उपयुक्त बाधाओं के साथ नीचे दिखाया गया है।

CREATE TABLE `organization`.`organization_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`organizationId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_organization` (`organizationId` ASC),
UNIQUE INDEX `uq_meta_organization` (`organizationId` ASC, `key` ASC),
CONSTRAINT `fk_meta_organization`
FOREIGN KEY (`organizationId`)
REFERENCES `organization`.`organization` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

कर्मचारी तालिका

इस खंड में, हम कर्मचारी तालिका . डिजाइन करेंगे कर्मचारी डेटा संग्रहीत करने के लिए। कर्मचारी तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।

Id कर्मचारी की पहचान करने के लिए अद्वितीय आईडी।
उपयोगकर्ता आईडी उपयोगकर्ता आईडी कर्मचारी से जुड़े उपयोगकर्ता की पहचान करने के लिए।
भूमिका क्रमांक कर्मचारी को सौंपी गई संगठन-विशिष्ट भूमिका आईडी।
द्वारा निर्मित उपयोगकर्ता आईडी कर्मचारी को जोड़ने वाले उपयोगकर्ता की पहचान करने के लिए।
द्वारा अपडेट किया गया उपयोगकर्ता आईडी कर्मचारी को अद्यतन करने वाले उपयोगकर्ता की पहचान करने के लिए।
कोड संगठन द्वारा कर्मचारी की पहचान करने के लिए उपयोग किया जाने वाला कोड।
स्थिति कर्मचारी की स्थिति नई, स्वीकृत, सक्रिय, अवरुद्ध या समाप्त की जा सकती है।
पर बनाया गया यह उस दिनांक और समय को संग्रहीत करता है जिस पर कर्मचारी बनाया जाता है।
पर अपडेट किया गया यह उस दिनांक और समय को संग्रहीत करता है जब कर्मचारी को अपडेट किया जाता है।
शुरू होता है यह उस तारीख और समय को संग्रहीत करता है जिस पर रोजगार शुरू होता है।
इस पर समाप्त होता है यह उस तारीख और समय को संग्रहीत करता है जिस पर रोजगार समाप्त होता है।
नोट्स रोजगार के लिए विशिष्ट नोटों को संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम।

यह कर्मचारी की स्थिति को ट्रैक करने के लिए कॉलम स्थिति का उपयोग करता है। स्थिति नई, स्वीकृत, सक्रिय, अवरुद्ध या समाप्त की जा सकती है। उपयुक्त बाधाओं के साथ कर्मचारी तालिका नीचे दी गई है।

CREATE TABLE `organization`.`employee` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`organizationId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`roleId` BIGINT NOT NULL,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`code` VARCHAR(100) NOT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`startsAt` DATETIME NULL DEFAULT NULL,
`endsAt` DATETIME NULL DEFAULT NULL,
`notes` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_employee_user` (`userId` ASC),
CONSTRAINT `fk_employee_user`
FOREIGN KEY (`userId`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_organization` (`organizationId` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_organization`
FOREIGN KEY (`organizationId`)
REFERENCES `organization`.`organization` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_role` (`roleId` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_role`
FOREIGN KEY (`roleId`)
REFERENCES `organization`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_creator` (`createdBy` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_modifier` (`updatedBy` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

सारांश

इस ट्यूटोरियल में, हमने भूमिकाओं, अनुमतियों, उपयोगकर्ताओं, संगठनों को संग्रहीत करने और संगठन के कर्मचारियों को प्रबंधित करने के लिए एक कर्मचारी प्रबंधन प्रणाली के डेटाबेस डिज़ाइन पर चर्चा की है।

आप चर्चा में शामिल होने के लिए अपनी टिप्पणियाँ प्रस्तुत कर सकते हैं। आपको ब्लॉग, शॉपिंग कार्ट और पोल और सर्वेक्षण अनुप्रयोगों के डेटाबेस को डिजाइन करने में भी रुचि हो सकती है। संपूर्ण डेटाबेस स्कीमा 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. MySQL AUTO_INCREMENT रोलबैक नहीं करता है

  2. एक पंक्ति को कैसे लॉक करें

  3. MySQL की नई हीटवेव को समझना

  4. वास्तविक MySQL क्वेरी समय मापना

  5. PHP में दो बार के बीच समय अंतर प्राप्त करना