यह ट्यूटोरियल उपयोगकर्ताओं के कैलेंडर ईवेंट को प्रबंधित करने और रिमाइंडर को स्टोर करने के लिए कैलेंडर इवेंट और रिमाइंडर सिस्टम के डेटाबेस स्कीमा को डिज़ाइन करने के लिए पूर्ण चरण प्रदान करता है। इसे और बढ़ाया जा सकता है और सिस्टम उपयोगकर्ता के अलावा अन्य संस्थाओं की घटनाओं और अनुस्मारक को प्रबंधित करने के लिए उपयोग किया जा सकता है।
इकाई संबंध आरेख या विज़ुअल डेटाबेस डिज़ाइन नीचे दिखाया गया है।
कैलेंडर इवेंट और रिमाइंडर डेटाबेस डिज़ाइन
आप उबंटू 20.04 एलटीएस पर MySQL 8 कैसे स्थापित करें, विंडोज पर MySQL 8 कैसे स्थापित करें, उबंटू पर MySQL कार्यक्षेत्र कैसे स्थापित करें, विंडोज 10 पर कार्यक्षेत्र के साथ MySQL 8 कैसे स्थापित करें, MySQL में RBAC डेटाबेस सहित लोकप्रिय ट्यूटोरियल पर जा सकते हैं। MySql में ब्लॉग डेटाबेस, MySQL में क्विज़ डेटाबेस, MySQL में पोल और सर्वे डेटाबेस, MySQL में ऑनलाइन शॉपिंग कार्ट डेटाबेस, और MySQL में बेसिक SQL क्वेरीज़ सीखें।
कैलेंडर डेटाबेस
कैलेंडर डेटाबेस बनाने के लिए सबसे पहला कदम है। इसे नीचे दिखाए गए अनुसार क्वेरी का उपयोग करके बनाया जा सकता है।
CREATE SCHEMA `calendar` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
मैंने वर्ण सेट का उपयोग किया है utf8mb4 पात्रों की एक विस्तृत श्रृंखला का समर्थन करने के लिए।
उपयोगकर्ता तालिका
इस अनुभाग में, हम उपयोगकर्ता तालिका . डिज़ाइन करेंगे उपयोगकर्ता जानकारी संग्रहीत करने के लिए। उपयोगकर्ता अपने स्वयं के ईवेंट और रिमाइंडर प्रबंधित कर सकते हैं। उपयोगकर्ता तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | उपयोगकर्ता की पहचान करने के लिए अद्वितीय आईडी। |
प्रथम नाम | उपयोगकर्ता का पहला नाम। |
मध्य नाम | उपयोगकर्ता का मध्य नाम। |
उपनाम | उपयोगकर्ता का अंतिम नाम। |
मोबाइल | उपयोगकर्ता का मोबाइल नंबर। इसका उपयोग लॉगिन और पंजीकरण उद्देश्यों के लिए किया जा सकता है। |
ईमेल | उपयोगकर्ता का ईमेल। इसका उपयोग लॉगिन और पंजीकरण उद्देश्यों के लिए किया जा सकता है। |
पासवर्ड हैश | उपयुक्त एल्गोरिथम द्वारा उत्पन्न पासवर्ड हैश। हमें सादे या एन्क्रिप्टेड पासवर्ड संग्रहीत करने से बचना चाहिए। |
पर पंजीकृत | इस कॉलम का उपयोग एप्लिकेशन के साथ उपयोगकर्ता के जीवन की गणना करने के लिए किया जा सकता है। |
अंतिम लॉगिन | इसका उपयोग उपयोगकर्ता के अंतिम लॉगिन की पहचान करने के लिए किया जा सकता है। |
पहचान | उपयोगकर्ता का संक्षिप्त परिचय। |
प्रोफाइल | उपयोगकर्ता विवरण। |
उपयुक्त बाधाओं के साथ उपयोगकर्ता तालिका नीचे दिखाई गई है।
CREATE TABLE `calendar`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`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 | ईवेंट की पहचान करने के लिए अद्वितीय आईडी। |
उपयोगकर्ता आईडी | संबंधित उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी। |
स्रोत आईडी | संबंधित इकाई की पहचान करने के लिए स्रोत आईडी। |
स्रोत प्रकार | अन्य संस्थाओं के बीच संबंधित इकाई को अलग करने के लिए स्रोत प्रकार। |
शीर्षक | इवेंट का शीर्षक। |
विवरण | ईवेंट की मुख्य विशेषताओं को संग्रहीत करने के लिए ईवेंट विवरण। |
टाइप करें | विभिन्न प्रकार के ईवेंट के बीच अंतर करने का प्रकार. |
URL | यूआरएल उपयोगकर्ता को घटना से जुड़े एक विशिष्ट लिंक पर रीडायरेक्ट करने के लिए। |
सक्रिय | यह पहचानने के लिए फ़्लैग करें कि क्या ईवेंट सक्रिय है और कैलेंडर पर प्रदर्शित होने के योग्य है। |
सिस्टम | यह पहचानने के लिए फ़्लैग करें कि एप्लिकेशन द्वारा ईवेंट जनरेट किया गया है या नहीं। एप्लिकेशन ईवेंट हमेशा कैलेंडर पर प्रदर्शित होने के योग्य होंगे। |
रिमाइंडर की संख्या | इवेंट के लिए ट्रिगर किए जा सकने वाले रिमाइंडर की अधिकतम संख्या। |
रिमाइंडर अंतराल | रिमाइंडर अंतराल। |
रिमाइंडर यूनिट | रिमाइंडर इकाई मिनटों, घंटों या दिनों में रिमाइंडर अंतराल की पहचान करने के लिए। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर ईवेंट बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब ईवेंट अपडेट किया जाता है। |
पर शेड्यूल किया गया | यह कैलेंडर पर दिनांक और समय संग्रहीत करता है। |
पर ट्रिगर किया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर ईवेंट ट्रिगर किया गया था। |
सामग्री | इवेंट सामग्री को संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम। |
यह सक्रिय . कॉलम का उपयोग करता है यह पहचानने के लिए कि क्या उपयोगकर्ता द्वारा जेनरेट की गई घटना को कैलेंडर पर प्रदर्शित किया जा सकता है। सिस्टम ध्वज का उपयोग एप्लिकेशन-जनित घटनाओं को चिह्नित करने के लिए किया जा सकता है। एप्लिकेशन-जनरेटेड इवेंट हमेशा कैलेंडर पर प्रदर्शित किए जा सकते हैं। कॉलम स्रोत आईडी और स्रोत प्रकार घटना से जुड़े अन्य तालिकाओं या संस्थाओं की पहचान करने के लिए इस्तेमाल किया जा सकता है। कॉलम पर ट्रिगर किया गया उस तिथि और समय को संग्रहीत करता है जिस पर घटना को अंतिम बार ट्रिगर किया गया था। इवेंट टेबल उपयुक्त बाधाओं के साथ नीचे दिखाया गया है।
CREATE TABLE `calendar`.`event` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`sourceId` BIGINT,
`sourceType` VARCHAR(50) NULL DEFAULT NULL,
`title` VARCHAR(1024) NOT NULL,
`descritpion` VARCHAR(2048) NULL DEFAULT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`url` VARCHAR(1024) NULL DEFAULT NULL,
`active` TINYINT(1) NOT NULL DEFAULT 0,
`system` TINYINT(1) NOT NULL DEFAULT 0,
`reminderCount` SMALLINT(6) NOT NULL DEFAULT 0,
`reminderInterval` SMALLINT(6) NOT NULL DEFAULT 0,
`reminderUnit` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`scheduledAt` DATETIME NULL DEFAULT NULL,
`triggeredAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_event_user` (`userId` ASC),
CONSTRAINT `fk_event_user`
FOREIGN KEY (`userId`)
REFERENCES `calendar`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
इवेंट टेम्प्लेट टेबल
इस खंड में, हम ईवेंट टेम्प्लेट टेबल . डिजाइन करेंगे घटना सामग्री उत्पन्न करने के लिए उपयोग किया जाता है। घटना सामग्री उत्पन्न करने के लिए टेम्पलेट को पार्स करने के लिए एप्लिकेशन उपयुक्त टेम्पलेट सिस्टम का उपयोग कर सकता है। इवेंट टेम्प्लेट टेबल के सभी कॉलम का विवरण नीचे दिया गया है।
Id | ईवेंट टेम्प्लेट की पहचान करने के लिए अद्वितीय आईडी। |
शीर्षक | टेम्पलेट शीर्षक। |
विवरण | टेम्पलेट विवरण। |
टाइप करें | टेम्पलेट्स को वर्गीकृत करने का प्रकार। |
स्रोत प्रकार | स्रोत प्रकार के अनुसार टेम्प्लेट को वर्गीकृत करने के लिए स्रोत प्रकार। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर टेम्पलेट बनाया गया था। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जब टेम्पलेट को अपडेट किया गया था। |
सामग्री | टेम्पलेट सामग्री को संग्रहीत करने के लिए उपयोग किया जाने वाला कॉलम। |
इवेंट टेम्प्लेट टेबल उपयुक्त बाधाओं के साथ नीचे दिखाया गया है।
CREATE TABLE `calendar`.`event_template` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`description` VARCHAR(2048) NULL DEFAULT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`sourceType` VARCHAR(50) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`) );
अनुस्मारक तालिका
हमें सक्रिय या सिस्टम ईवेंट द्वारा ट्रिगर किए गए रिमाइंडर को संग्रहीत करने के लिए एक तालिका की भी आवश्यकता होती है। यह खंड रिमाइंडर्स को प्रबंधित करने के लिए आवश्यक तालिका और कॉलम प्रदान करता है। अनुस्मारक तालिका के सभी स्तंभों का विवरण नीचे दिया गया है।
Id | अनुस्मारक की पहचान करने के लिए अद्वितीय आईडी। |
ईवेंट आईडी | इवेंट आईडी रिमाइंडर से जुड़े इवेंट की पहचान करने के लिए। |
उपयोगकर्ता आईडी | अनुस्मारक से जुड़े उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी। |
पढ़ें | रिमाइंडर को पढ़ा/अपठित के रूप में चिह्नित करने के लिए ध्वज। |
कचरा | रिमाइंडर को ट्रैश के रूप में चिह्नित करने के लिए ध्वज। |
पर बनाया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर अनुस्मारक बनाया जाता है। |
पर अपडेट किया गया | यह उस दिनांक और समय को संग्रहीत करता है जिस पर रिमाइंडर अपडेट किया जाता है। |
सामग्री | अनुस्मारक संदेश। |
उपयुक्त बाधाओं के साथ अनुस्मारक तालिका नीचे दी गई है।
CREATE TABLE `calendar`.`reminder` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`eventId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`read` TINYINT(1) NOT NULL DEFAULT 1,
`trash` TINYINT(1) NOT NULL DEFAULT 1,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_reminder_event` (`eventId` ASC),
CONSTRAINT `fk_reminder_event`
FOREIGN KEY (`eventId`)
REFERENCES `calendar`.`event` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `calendar`.`reminder`
ADD INDEX `idx_reminder_user` (`userId` ASC);
ALTER TABLE `calendar`.`reminder`
ADD CONSTRAINT `fk_reminder_user`
FOREIGN KEY (`userId`)
REFERENCES `calendar`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
एन्हांसमेंट
हम समान डेटाबेस स्कीमा का उपयोग करके समूह ईवेंट का प्रबंधन भी कर सकते हैं। यह समूह ध्वज को ईवेंट तालिका में जोड़कर किया जा सकता है और समूह ईवेंट के प्रतिभागियों को प्रबंधित करने के लिए एक नई तालिका की आवश्यकता होती है।
सारांश
इस ट्यूटोरियल में, हमने उपयोगकर्ता ईवेंट और रिमाइंडर को स्टोर करने के लिए कैलेंडर सिस्टम के डेटाबेस डिज़ाइन पर चर्चा की है। यह सिस्टम या एप्लिकेशन द्वारा ट्रिगर किए गए उपयोगकर्ता ईवेंट को प्रबंधित करने के लिए डेटाबेस डिज़ाइन भी प्रदान करता है।
आप चर्चा में शामिल होने के लिए अपनी टिप्पणियाँ प्रस्तुत कर सकते हैं। आप ब्लॉग और पोल और सर्वेक्षण अनुप्रयोगों के डेटाबेस को डिजाइन करने में भी रुचि ले सकते हैं। संपूर्ण डेटाबेस स्कीमा GitHub पर भी उपलब्ध है।