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

MySQL में न्यूज़लेटर के लिए डेटाबेस डिज़ाइन करने के लिए मार्गदर्शिका

यह ट्यूटोरियल उपयोगकर्ताओं, न्यूज़लेटर्स, ग्राहकों और मेलिंग सूचियों को प्रबंधित करने के लिए न्यूज़लेटर सिस्टम के डेटाबेस स्कीमा को डिज़ाइन करने के लिए पूर्ण चरण प्रदान करता है। इसे आगे बढ़ाया जा सकता है और न्यूज़लेटर सेवाएं प्रदान करने के लिए ईमेल-आधारित मार्केटिंग प्लेटफॉर्म विकसित करने के लिए उपयोग किया जा सकता है। ऑनलाइन न्यूज़लेटर्स को प्रबंधित करने या न्यूज़लेटर्स और पत्रिकाओं की हार्ड कॉपी वितरित करने के लिए एक ही डेटाबेस आर्किटेक्चर या स्कीमा का उपयोग संदर्भ के रूप में किया जा सकता है। इसका उपयोग डिजिटल मार्केटिंग एजेंसियों द्वारा अपने लीड और मार्केटिंग अभियानों को प्रबंधित करने के लिए भी किया जा सकता है।

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

न्यूज़लेटर डेटाबेस डिज़ाइन

नोट :रोल-बेस्ड एक्सेस कंट्रोल (RBAC) टेबल्स को जोड़कर डेटाबेस को और बढ़ाया जा सकता है। MySql में RBAC डेटाबेस का पालन करके सुरक्षा को संभाला जा सकता है। साथ ही, इसमें ग्राहक बिलिंग के लिए आवश्यक तालिकाएँ शामिल नहीं हैं। आदेशों को प्रबंधित करने के लिए आवश्यक तालिकाओं को प्राप्त करने के लिए आप MySQL में ऑनलाइन शॉपिंग कार्ट डेटाबेस का उल्लेख कर सकते हैं।

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

न्यूज़लेटर डेटाबेस

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

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

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

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

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

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

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

CREATE TABLE `newsletter`.`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,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`passwordHash` VARCHAR(32) NOT NULL,
`admin` TINYINT(1) NOT NULL DEFAULT 0,
`customer` TINYINT(1) NOT NULL DEFAULT 0,
`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_mobile` (`mobile` ASC),
UNIQUE INDEX `uq_email` (`email` ASC) );

न्यूज़लेटर टेबल

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

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

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

CREATE TABLE `newsletter`.`newsletter` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`title` VARCHAR(75) NOT NULL,
`descritpion` VARCHAR(2048) NULL DEFAULT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`multiple` TINYINT(1) NOT NULL DEFAULT 0,
`global` TINYINT(1) NOT NULL DEFAULT 0,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`publishedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_newsletter_user` (`userId` ASC),
CONSTRAINT `fk_newsletter_user`
FOREIGN KEY (`userId`)
REFERENCES `newsletter`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

न्यूज़लेटर मेटा

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

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

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

CREATE TABLE `newsletter`.`newsletter_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`type` VARCHAR(50) NOT NULL,
`key` VARCHAR(160) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_newsletter` (`newsletterId` ASC),
UNIQUE INDEX `uq_pnewsletter_meta` (`newsletterId` ASC, `key` ASC),
CONSTRAINT `fk_meta_newsletter`
FOREIGN KEY (`newsletterId`)
REFERENCES `newsletter`.`newsletter` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

संस्करण तालिका

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

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

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

CREATE TABLE `newsletter`.`edition` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`title` VARCHAR(100) NOT NULL,
`description` VARCHAR(2048) NULL DEFAULT NULL,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`publishedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_edition_newsletter` (`newsletterId` ASC),
CONSTRAINT `fk_edition_newsletter`
FOREIGN KEY (`newsletterId`)
REFERENCES `newsletter`.`newsletter` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

सदस्य तालिका

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

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

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

CREATE TABLE `newsletter`.`subscriber` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`customerId` BIGINT DEFAULT NULL,
`firstName` VARCHAR(100) NOT NULL,
`middleName` VARCHAR(100) NULL DEFAULT NULL,
`lastName` VARCHAR(100) NULL DEFAULT NULL,
`email` VARCHAR(100) NOT NULL,
`mobile` VARCHAR(50) NULL DEFAULT NULL,
`phone` VARCHAR(50) NULL DEFAULT NULL,
`active` TINYINT(1) NOT NULL DEFAULT 1,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_subscriber_customer` (`customerId` ASC),
CONSTRAINT `fk_subscriber_customer`
FOREIGN KEY (`customerId`)
REFERENCES `newsletter`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `newsletter`.`subscriber` ADD UNIQUE `uq_sub_cust_email`(`customerId`, `email`);

पता तालिका

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

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

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

CREATE TABLE `newsletter`.`address` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NULL DEFAULT NULL,
`subscriberId` 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,
`areaCode` 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 `newsletter`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `newsletter`.`address`
ADD INDEX `idx_address_subscriber` (`subscriberId` ASC);
ALTER TABLE `newsletter`.`address`
ADD CONSTRAINT `fk_address_subscriber`
FOREIGN KEY (`subscriberId`)
REFERENCES `newsletter`.`subscriber` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

मेलिंग सूची तालिका

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

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

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

CREATE TABLE `newsletter`.`mailing_list` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`subscriberId` BIGINT NOT NULL,
`active` TINYINT(1) NOT NULL DEFAULT 1,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_mlist_newsletter` (`newsletterId` ASC),
CONSTRAINT `fk_mlist_newsletter`
FOREIGN KEY (`newsletterId`)
REFERENCES `newsletter`.`newsletter` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `newsletter`.`mailing_list`
ADD INDEX `idx_mlist_subscriber` (`subscriberId` ASC);
ALTER TABLE `newsletter`.`mailing_list`
ADD CONSTRAINT `fk_mlist_subscriber`
FOREIGN KEY (`subscriberId`)
REFERENCES `newsletter`.`subscriber` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

न्यूज़लेटर ट्रिगर टेबल

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

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

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

CREATE TABLE `newsletter`.`newsletter_trigger` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`editionId` BIGINT NULL DEFAULT NULL,
`subscriberId` BIGINT NOT NULL,
`sent` TINYINT(1) NOT NULL DEFAULT 1,
`delivered` TINYINT(1) NOT NULL DEFAULT 1,
`mode` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`sentAt` DATETIME NULL DEFAULT NULL,
`deliveredAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_trigger_newsletter` (`newsletterId` ASC),
CONSTRAINT `fk_trigger_newsletter`
FOREIGN KEY (`newsletterId`)
REFERENCES `newsletter`.`newsletter` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `newsletter`.`newsletter_trigger`
ADD INDEX `idx_trigger_edition` (`editionId` ASC);
ALTER TABLE `newsletter`.`newsletter_trigger`
ADD CONSTRAINT `fk_trigger_edition`
FOREIGN KEY (`editionId`)
REFERENCES `newsletter`.`edition` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `newsletter`.`newsletter_trigger`
ADD INDEX `idx_trigger_subscriber` (`subscriberId` ASC);
ALTER TABLE `newsletter`.`newsletter_trigger`
ADD CONSTRAINT `fk_trigger_subscriber`
FOREIGN KEY (`subscriberId`)
REFERENCES `newsletter`.`subscriber` (`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. Azure क्लाउड पर MySQL होस्ट करने का सबसे अच्छा तरीका

  2. उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग करके:हाँ) के लिए एक्सेस अस्वीकृत एक्सेस को कैसे हल करें जब MySQL डेटाबेस कनेक्ट करें

  3. Mysql में एक डेटाबेस टेबल से दूसरी डेटाबेस टेबल में डेटा कैसे डालें?

  4. MySQL में सामान्य तालिका अभिव्यक्ति

  5. MySQL में विभाजन से अधिक रैंक कैसे करें