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 `sns` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

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

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

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

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

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

CREATE TABLE `sns`.`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 दोस्ती की पहचान के लिए अद्वितीय आईडी।
स्रोत आईडी दोस्ती शुरू करने वाले उपयोगकर्ता की पहचान करने के लिए उपयोगकर्ता आईडी।
लक्ष्य आईडी दोस्त की यूजर आईडी।
टाइप करें दोस्तों को वर्गीकृत करने का प्रकार। यह स्कूल, कॉलेज या परिचित हो सकता है।
स्थिति स्थिति नई, अस्वीकृत या सक्रिय हो सकती है।
पर बनाया गया यह उस दिनांक और समय को संग्रहीत करता है जिस पर मित्र अनुरोध शुरू किया गया था।
पर अपडेट किया गया यह उस दिनांक और समय को संग्रहीत करता है जब मित्र अनुरोध अपडेट किया गया था।
नोट्स यह दोस्ती के लिए विशिष्ट नोट्स संग्रहीत करता है।

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

CREATE TABLE `sns`.`user_friend` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sourceId` BIGINT NOT NULL,
`targetId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`notes` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_friend_source` (`sourceId` ASC),
CONSTRAINT `fk_friend_source`
FOREIGN KEY (`sourceId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_friend`
ADD INDEX `idx_friend_target` (`targetId` ASC);
ALTER TABLE `sns`.`user_friend`
ADD CONSTRAINT `fk_friend_target`
FOREIGN KEY (`targetId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `sns`.`user_friend` ADD UNIQUE `uq_friend`(`sourceId`, `targetId`);

उपयोगकर्ता अनुयायी तालिका

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

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

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

CREATE TABLE `sns`.`user_follower` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sourceId` BIGINT NOT NULL,
`targetId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_ufollower_source` (`sourceId` ASC),
CONSTRAINT `fk_ufollower_source`
FOREIGN KEY (`sourceId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_follower`
ADD INDEX `idx_ufollower_target` (`targetId` ASC);
ALTER TABLE `sns`.`user_follower`
ADD CONSTRAINT `fk_ufollower_target`
FOREIGN KEY (`targetId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;


ALTER TABLE `sns`.`user_follower` ADD UNIQUE `uq_ufollower`(`sourceId`, `targetId`, `type`);

उपयोगकर्ता संदेश तालिका

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

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

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

CREATE TABLE `sns`.`user_message` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sourceId` BIGINT NOT NULL,
`targetId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_umessage_source` (`sourceId` ASC),
CONSTRAINT `fk_umessage_source`
FOREIGN KEY (`sourceId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_message`
ADD INDEX `idx_umessage_target` (`targetId` ASC);
ALTER TABLE `sns`.`user_message`
ADD CONSTRAINT `fk_umessage_target`
FOREIGN KEY (`targetId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

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

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

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

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

CREATE TABLE `sns`.`user_post` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`senderId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_upost_user` (`userId` ASC),
CONSTRAINT `fk_upost_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_post`
ADD INDEX `idx_upost_sender` (`senderId` ASC);
ALTER TABLE `sns`.`user_post`
ADD CONSTRAINT `fk_upost_sender`
FOREIGN KEY (`senderId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

समूह तालिका

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

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

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

CREATE TABLE `sns`.`group` (
`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_group_creator` (`createdBy` ASC),
CONSTRAINT `fk_group_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group`
ADD INDEX `idx_group_modifier` (`updatedBy` ASC);
ALTER TABLE `sns`.`group`
ADD CONSTRAINT `fk_group_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ग्रुप मेटा

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

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

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

CREATE TABLE `sns`.`group_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_group` (`groupId` ASC),
UNIQUE INDEX `uq_meta_group` (`groupId` ASC, `key` ASC),
CONSTRAINT `fk_meta_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

समूह सदस्य तालिका

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

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

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

CREATE TABLE `sns`.`group_member` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`notes` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_member_group` (`groupId` ASC),
CONSTRAINT `fk_member_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_member`
ADD INDEX `idx_member_user` (`userId` ASC);
ALTER TABLE `sns`.`group_member`
ADD CONSTRAINT `fk_member_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `sns`.`group_member` ADD UNIQUE `uq_friend`(`groupId`, `userId`);

ग्रुप फॉलोअर टेबल

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

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

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

CREATE TABLE `sns`.`group_follower` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_gfollower_group` (`groupId` ASC),
CONSTRAINT `fk_gfollower_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_follower`
ADD INDEX `idx_gfollower_user` (`userId` ASC);
ALTER TABLE `sns`.`group_follower`
ADD CONSTRAINT `fk_gfollower_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `sns`.`group_follower` ADD UNIQUE `uq_friend`(`groupId`, `userId`, `type`);

समूह संदेश तालिका

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

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

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

CREATE TABLE `sns`.`group_message` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_gmessage_group` (`groupId` ASC),
CONSTRAINT `fk_gmessage_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_message`
ADD INDEX `idx_gmessage_user` (`userId` ASC);
ALTER TABLE `sns`.`group_message`
ADD CONSTRAINT `fk_gmessage_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ग्रुप पोस्ट टेबल

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

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

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

CREATE TABLE `sns`.`group_post` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_gpost_group` (`groupId` ASC),
CONSTRAINT `fk_gpost_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_post`
ADD INDEX `idx_gpost_user` (`userId` ASC);
ALTER TABLE `sns`.`group_post`
ADD CONSTRAINT `fk_gpost_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`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 खंड में मदों की संख्या

  2. frm और ibd फ़ाइलों से तालिका संरचना को पुनर्स्थापित करें

  3. mysql में अगली ऑटो-इन्क्रीमेंट आईडी कैसे प्राप्त करें?

  4. अपने MySQL सर्वर के लिए InnoDB बफर पूल आकार की गणना करना

  5. MySQL में पिछले 7 दिनों के रिकॉर्ड कैसे प्राप्त करें