Този урок предоставя пълните стъпки за проектиране на схема на база данни на системата за бюлетини за управление на потребителите, бюлетините, абонатите и пощенските списъци. Той може да бъде допълнително подобрен и използван за разработване на маркетингова платформа, базирана на имейл, за предоставяне на услуги за бюлетин. Същата архитектура или схема на база данни може да се използва като справка за управление на онлайн бюлетини или за разпространение на хартиените копия на бюлетините и списанията. Може да се използва и от агенции за дигитален маркетинг за управление на техните потенциални клиенти и маркетингови кампании.
Диаграмата на взаимоотношенията на обектите или визуалният дизайн на базата данни е показан по-долу.
Проектиране на база данни за бюлетин
Бележки :Базата данни може да бъде допълнително подобрена чрез добавяне на таблици за контрол на достъпа, базиран на роли (RBAC). Сигурността може да се управлява, като следвате базата данни RBAC в MySql. Освен това не включва таблиците, необходими за таксуване на клиенти. Можете да се обърнете към базата данни на онлайн пазарските колички в MySQL, за да извлечете таблиците, необходими за управление на поръчките.
Можете също да посетите популярните уроци, включително Как да инсталирате MySQL 8 на Ubuntu 20.04 LTS, Как да инсталирате MySQL 8 на Windows, Как да инсталирате MySQL Workbench на Ubuntu, Как да инсталирате MySQL 8 с Workbench на Windows 10, RBAC база данни в MySql, База данни за блогове в MySql, База данни за тестове в MySQL, База данни за анкети и анкети в MySQL, База данни за онлайн пазарска кошница в MySQL и Научете основни SQL заявки в MySQL.
База данни с бюлетини
Първата стъпка е да създадете базата данни за бюлетин. Може да се създаде с помощта на заявката, както е показано по-долу.
СЪЗДАВАНЕ НА СХЕМА `бюлетин` ПО ПОДРАЗБИРАНЕ НАБОР НА СИМВОЛИ utf8mb4 СЪБОРЯВАНЕ utf8mb4_unicode_ci;
Използвал съм набора от знаци utf8mb4 за поддръжка на широк спектър от знаци.
Таблица с потребители
В този раздел ще проектираме Таблица на потребителите за съхраняване на потребителска информация. Същата таблица може да се използва за управление на различни типове потребители, включително администратори и клиенти. Може да се използва и за връзка с мениджърите на бюлетини. Потребителите могат да проследяват собствените си бюлетини и пощенски списъци. По-долу е посочено описанието на всички колони на потребителската таблица.
Id | Уникалният идентификатор за идентифициране на потребителя. |
Име | Първото име на потребителя. |
Биринно име | Биринното име на потребителя. |
Фамилия | Фамилията на потребителя. |
Мобилни | Мобилният номер на потребителя. Може да се използва за влизане и регистрация. |
Имейл | Имейлът на потребителя. Може да се използва за влизане и регистрация. |
Хеш на парола | Хешът на паролата, генериран от подходящия алгоритъм. Трябва да избягваме съхраняването на обикновени или криптирани пароли. |
Администратор | Флагът за идентифициране дали потребителят е администратор. Не е задължително, ако RBAC таблиците са създадени, като се следва дизайнът на базата данни RBAC. |
Клиент | Флагът за идентифициране дали регистрираният потребител може да управлява бюлетините и абонатите. Не е задължително, ако RBAC таблиците са създадени, като се следва дизайнът на базата данни RBAC. |
Регистриран в | Тази колона може да се използва за изчисляване на живота на потребителя с приложението. |
Последно влизане | Може да се използва за идентифициране на последното влизане на потребителя. |
Въведение | Краткото представяне на потребителя. |
Профил | Подробности за клиента. |
Потребителската таблица със съответните ограничения е показана по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `бюлетин`.`потребител` (
`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,
`имейл` 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,
ПЪРВИЧЕН КЛЮЧ (`id`) ,
УНИКАЛЕН ИНДЕКС „uq_mobile“ („мобилен“ ASC),
УНИКАЛЕН ИНДЕКС „uq_email“ („имейл“ ASC) );
Таблица с бюлетин
В този раздел ще проектираме Таблица за бюлетини за съхраняване на данните за бюлетина. По-долу е посочено описанието на всички колони на таблицата с бюлетина.
Id | Уникалният идентификатор за идентифициране на бюлетина. |
Потребителски идентификатор | Потребителският идентификатор за идентифициране на администратора или клиента. |
Заглавие | Заглавието на бюлетина за идентифициране на бюлетина. |
Описание | Описанието на бюлетина. |
Тип | Типът за разграничаване на различните типове бюлетин. |
Множество | Флагът за отбелязване дали бюлетинът ще бъде изпратен веднъж или няколко пъти. |
Глобално | Флагът за отбелязване дали бюлетинът ще бъде изпратен до всички абонати. |
Състояние | Може да се използва за идентифициране на състоянието. Възможният статус на бюлетина включва Нов, Готов, Публикуван. |
Създаден в | Той съхранява датата и часа, в които е създаден бюлетинът. |
Актуализирано в | Той съхранява датата и часа, в които бюлетина се актуализира. |
Публикувано в | Той съхранява датата и часа, в които е публикуван бюлетинът. |
Съдържание | Колоната, използвана за съхраняване на съдържанието на бюлетина, ако множественият флаг е зададен на false. |
Той използва множествената колона, за да определи дали бюлетинът е планиран да бъде изпратен само веднъж или няколко пъти. Съдържанието на бюлетина може да се съхранява в колоната за съдържание, в случай че е планирано да се изпрати само веднъж. В случай, че множественият флаг е зададен на true, таблицата на изданието трябва да се използва за съхраняване на съдържанието на всяко издание. Таблицата за бюлетин със съответните ограничения е както е показано по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `бюлетин`.`бюлетин` (
`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) НЕ NULL DEFAULT 0,
`global` TINYINT(1) NOT NULL DEFAULT 0,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME НЕ NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`publishedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
ОСНОВЕН КЛЮЧ (`id`),
INDEX `idx_newsletter_user` (`userId` ASC),
ОГРАНИЧЕНИЕ `fk_newsletter_user`
ВЪНШЕН КЛЮЧ (`userId`)
ПРЕПОРЪКИ `newsletter`.`user` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ НЯМА ДЕЙСТВИЕ);
Мета на бюлетин
Метатаблицата на бюлетина може да се използва за съхраняване на допълнителна информация за бюлетините, включително URL адреса на банера на бюлетина и др. По-долу е посочено описанието на всички колони на метатаблицата на бюлетина.
Id | Уникалният идентификатор за идентифициране на мета бюлетина. |
Идентификатор на бюлетина | Идентификаторът на бюлетина за идентифициране на родителския бюлетин. |
Тип | Типът за категоризиране на метаданните. |
Ключ | Ключът, идентифициращ мета. |
Съдържание | Колоната, използвана за съхраняване на метаданните на бюлетина. |
Мета таблицата на бюлетина със съответните ограничения е както е показано по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `newsletter`.`newsletter_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`type` VARCHAR(50) NOT NULL,
`ключ` VARCHAR(160) НЕ NULL,
`съдържание` ТЕКСТ NULL ПО ПОДРАЗБИРАНЕ NULL,
ПРАВИЛЕН КЛЮЧ (`id`),
ИНДЕКС `idx_meta_newsletter` (`newsletterId` ASC),
УНИКАЛЕН ИНДЕКС `uq_pnewsletter_meta` (`newsletterId` ASC, `key` ASC),
ОГРАНИЧЕНИЕ `fk_meta_newsletter`
ВЪНШЕН КЛЮЧ (`newsletterId`)
РЕФЕРЕНЦИИ` `.`бюлетин` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ НЯМА ДЕЙСТВИЕ)
ENGINE =InnoDB;
Таблица с изданието
В този раздел ще проектираме Таблица за издания за да съхранявате изданията на бюлетините, необходими за бюлетини с множество флагове, зададени на true. По-долу е споменато описанието на всички колони на таблицата с изданието.
Id | Уникалният идентификатор за идентифициране на изданието. |
Идентификатор на бюлетина | Идентификаторът на бюлетина за идентифициране на родителския бюлетин. |
Заглавие | Заглавието на изданието. |
Описание | Описанието на изданието. |
Състояние | Може да се използва за идентифициране на състоянието. Възможният статус на изданието включва Ново, Готово, Публикувано. |
Създаден в | Той съхранява датата и часа, в които е създадено изданието. |
Актуализирано в | Той съхранява датата и часа, в които изданието е актуализирано. |
Публикувано в | Той съхранява датата и часа, на които е публикувано изданието. |
Съдържание | Колоната, използвана за съхраняване на съдържанието на изданието. |
Таблицата на изданията със съответните ограничения е както е показано по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `бюлетин`.`издание` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`title` VARCHAR(100) NOT NULL,
`описание` VARCHAR(2048) NULL DEFAULT NULL,
`status` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME НЕ NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`publishedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
ОСНОВЕН КЛЮЧ (`id`),
INDEX `idx_edition_newsletter` (` newsletterId` ASC),
ОГРАНИЧЕНИЕ `fk_edition_newsletter`
ВЪНШЕН КЛЮЧ (`newsletterId`)
РЕФЕРЕНЦИИ `newsletter`.`newsletter` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ НЯМА ДЕЙСТВИЕ);
Таблица на абонатите
В този раздел ще проектираме Абоната Таблица за съхраняване на данните за абоната. Таблицата за абонати може да се използва за директно задействане на глобални бюлетини. По-долу е посочено описанието на всички колони на таблицата за абонати.
Id | Уникалният идентификатор за идентифициране на абоната. |
Идентификатор на клиента | Идентификацията на клиента за идентифициране на клиента. Това е незадължително поле и се изисква само ако приложението е предназначено да управлява клиентите и техните бюлетини. Клиентите могат да управляват собствените си абонати. |
Име | Първото име на абоната. |
Биринно име | Биринното име на абоната. |
Фамилия | Фамилията на абоната. |
Имейл | Имейлът на абоната. |
Мобилни | Мобилният номер на абоната. |
Телефон | Телефонният номер на абоната. |
Активно | Флаг за идентифициране дали абонатът е активен. |
Създаден в | Той съхранява датата и часа, в които абонатът е регистриран. |
Актуализирано в | Той съхранява датата и часа, в които абонатът е актуализиран. |
Таблицата на абонатите със съответните ограничения е както е показано по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `бюлетин`.`абонат` (
`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) НЕ NULL,
`мобилен телефон ` VARCHAR(50) NULL DEFAULT NULL,
`phone` VARCHAR(50) NULL DEFAULT NULL,
`активен` TINYINT(1) NOT NULL DEFAULT 1,
`createdAt` DATETIME НЕ NULL ,
`updatedAt` DATETIME NULL DEFAULT NULL,
ОСНОВЕН КЛЮЧ (`id`),
INDEX `idx_subscriber_customer` (`customerId` ASC),
ОГРАНИЧЕНИЕ `fk_subscriber_customer`
ВЪНШЕН КЛЮЧ (`customerId`)
РЕФЕРЕНЦИИ `бюлетин`.`user` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ БЕЗ ДЕЙСТВИЕ);
ALTER TABLE `бюлетин`.`абонат` ДОБАВЕТЕ УНИКАЛЕН `uq_sub_cust_email`(`customerId`, `email`);
Таблица с адреси
В този раздел ще проектираме адресната таблица за съхраняване на адреса на клиента и абоната. Адресът може да се използва за физическата доставка на бюлетина. По-долу е споменато описанието на всички колони на адресната таблица.
Id | Уникалният идентификатор за идентифициране на адреса. |
Потребителски идентификатор | Потребителският идентификатор за идентифициране на потребителя, свързан с адреса. |
Идентификатор на абонат | Идентификаторът на абоната за идентифициране на абоната, свързан с адреса. |
Име | Първото име, използвано за адреса. Тя може да бъде получена от съответния потребител или абонат. |
Биринно име | Билото, използвано за адреса. Тя може да бъде получена от съответния потребител или абонат. |
Фамилия | Фамилното име, използвано за адреса. Тя може да бъде получена от съответния потребител или абонат. |
Мобилни | Мобилният телефон, използван за адреса. Тя може да бъде получена от съответния потребител или абонат. |
Имейл | Имейл адресът, използван за адреса. Тя може да бъде получена от съответния потребител или абонат. |
Ред 1 | Първият ред за съхраняване на адреса. |
Ред 2 | Вторият ред за съхраняване на адрес. |
Град | Градът на адреса. |
Провинция | Провинцията на адреса. |
Държава | Държавата на адреса. |
Код на региона | Кодът на региона за идентифициране на района за доставка. |
Създаден в | Той съхранява датата и часа, в които е създаден адресът. |
Актуализирано в | Той съхранява датата и часа, в които адресът е актуализиран. |
Таблицата с адреси със съответните ограничения е както е показано по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `бюлетин`.`адрес` (
`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,
`имейл` VARCHAR(50) NULL,
`line1` VARCHAR(50) NULL ПО ПОДРАЗБИРАНЕ NULL,
`line2` VARCHAR(50) NULL ПО ПОДРАЗБИРАНЕ NULL,
`град` VARCHAR(50) NULL DEFAULT NULL,
`провинция` VARCHAR(50) NULL DEFAULT NULL,
`страна` VARCHAR(50) NULL DEFAULT NULL,
` areaCode` VARCHAR(50) NULL DEFAULT NULL,
`createdAt` DATETIME НЕ NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
ПРАВИЛЕН КЛЮЧ (`id`),
ИНДЕКС `idx_address_user` (`userId` ASC),
ОГРАНИЧЕНИЕ `fk_address_user`
ВЪНШЕН КЛЮЧ (`userId`)
РЕФЕРЕНЦИИ `newsletter`.`user` (`id`)
ПРИ ИЗТРИВАНЕ НЯМА ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ БЕЗ ДЕЙСТВИЕ);
ALTER TABLE `бюлетин`.`адрес`
ДОБАВЕТЕ ИНДЕКС `idx_address_subscriber` (`subscriberId` ASC);
ALTER TABLE `бюлетин`.`адрес`
ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ `fk_address_subscriber`
ВЪНШЕН КЛЮЧ (`subscriberId`)
ПРЕПОРЪЧКИ `бюлетин`.`абонат` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ВКЛ. АКТУАЛИЗАЦИЯ НЯМА ДЕЙСТВИЕ;
Таблица с пощенски списък
В този раздел ще проектираме Таблица с пощенски списък за да съхранявате пощенските списъци на конкретни бюлетини. Пощенският списък може да се използва за задействане на неглобални бюлетини. Таблицата за абонати може да се използва за задействане на глобални бюлетини. По-долу е споменато описанието на всички колони на таблицата с пощенски списък.
Id | Уникалният идентификатор за идентифициране на абонамента за бюлетин. |
Идентификатор на бюлетина | Идентификаторът на бюлетина за идентифициране на бюлетина, свързан с абонамента за бюлетин. |
Идентификатор на абонат | Идентификацията на абоната за идентифициране на абоната, свързан с абонамента за бюлетин. |
Активно | Флагът за идентифициране дали абонаментът за бюлетин е активен. |
Създаден в | Той съхранява датата и часа, в които е създаден абонаментът. |
Актуализирано в | Той съхранява датата и часа, в които абонаментът е актуализиран. |
Таблицата с пощенски списък със съответните ограничения е както е показано по-долу.
СЪЗДАВАЙТЕ ТАБЛИЦА `бюлетин`.`mailing_list` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`subscriberId` BIGINT NOT NULL,
`активен` TINYINT(1) NOT NULL DEFAULT 1,
`createdAt` DATETIME НЕ NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
ПРАВИЛЕН КЛЮЧ (`id`),
ИНДЕКС `idx_mlist_newsletter` (`newsletterId` ASC),
ОГРАНИЧЕНИЕ `fk_mlist_newsletter`
ВЪНШЕН КЛЮЧ (`newsletterId`)
РЕФЕРЕНЦИИ `бюлетин`.`бюлетин`
РЕФЕРЕНЦИИ `бюлетин`. br /> ПРИ ИЗТРИВАНЕ НЯМА ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ НЯМА ДЕЙСТВИЕ);
ПРОМЕНЯТ ТАБЛИЦА `бюлетин`.`mailing_list`
ДОБАВЯНЕ НА ИНДЕКС `idx_mlist_subscriber` (`subscriberId` ASC);
ALTER TABLE `бюлетин`.`mailing_list`
ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ `fk_mlist_subscriber`
ВЪНШЕН КЛЮЧ (`subscriberId`)
РЕФЕРЕНЦИИ `бюлетин`.`абонат` (`id`)
ПРИ ИЗТРИВАНЕ НЯМА ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ НЯМА ДЕЙСТВИЕ;
Таблица за задействане на бюлетин
Нуждаем се и от таблица за проследяване на доставката на бюлетин. Този раздел предоставя таблицата и колоните, необходими за проследяване на доставката на бюлетин до абоната. По-долу е посочено описанието на всички колони на таблицата за задействане на бюлетин.
Id | Уникалният идентификатор за идентифициране на задействането на бюлетина. |
Идентификатор на бюлетина | Идентификаторът на бюлетина за идентифициране на бюлетина, свързан със задействането. |
Идентификатор на изданието | Идентификаторът на изданието за идентифициране на изданието на бюлетина, свързано със задействането. |
Идентификатор на абонат | Идентификаторът на абоната за идентифициране на абоната, свързан със задействането. |
Изпратено | Флаг за проверка дали бюлетинът е изпратен до абоната. |
Доставено | Флагът за проверка дали бюлетина е доставен на абоната. |
Режим | Начинът на доставка на бюлетин може да бъде онлайн или офлайн. |
Създаден в | Той съхранява датата и часа, в които е създаден тригерът. |
Актуализирано в | Той съхранява датата и часа, в които тригерът се актуализира. |
Изпратено на | Той съхранява датата и часа, в които тригерът е бил обработен. |
Доставено в | Той съхранява датата и часа, в които е доставен бюлетина. |
Таблицата за задействане на бюлетин със съответните ограничения е както е показано по-долу.
СЪЗДАВАНЕ НА ТАБЛИЦА `бюлетин`.`бюлетин_тригер` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
`editionId` BIGINT NULL DEFAULT NULL,
`subscriberId` BIGINT NOT NULL,
`изпратено` TINYINT(1) NOT NULL DEFAULT 1,
`доставен` TINYINT(1) NOT NULL DEFAULT 1,
`mode` SMALLINT( 6) NOT NULL DEFAULT 0,
`createdAt` DATETIME НЕ NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`sentAt` DATETIME NULL DEFAULT NULL,
`deliveredAt` DATE NULL ПО ПОДРАЗБИРАНЕ NULL,
ПРАВИЛЕН КЛЮЧ (`id`),
INDEX `idx_trigger_newsletter` (`newsletterId` ASC),
ОГРАНИЧЕНИЕ `fk_trigger_newsletter`
ВЪНШЕН КЛЮЧ (`newsletterId`)
РЕФЕРЕНЦИИ `бюлетин`.`бюлетин` (`id`)
ПРИ ИЗТРИВАНЕ НЯМА ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ НЯМА ДЕЙСТВИЕ);
ПРОМЕНЯ ТАБЛИЦА `бюлетин`.` newsletter_trigger`
ДОБАВЯНЕ НА ИНДЕКС `idx_trigger_edition` (`editionId` ASC);
ALTER TABLE `newsletter`.`newsletter_trigger`
ДОБАВЯНЕ НА CONST RAINT `fk_trigger_edition`
ВЪНШЕН КЛЮЧ (`editionId`)
РЕФЕРЕНЦИИ `бюлетин`.`edition` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ БЕЗ ДЕЙСТВИЕ;
ALTER TABLE `newsletter`.`newsletter_trigger`
ДОБАВЯНЕ НА ИНДЕКС `idx_trigger_subscriber` (`subscriberId` ASC);
ALTER TABLE `бюлетин`.`newsletter_trigger`
ДОБАВЯНЕ ОГРАНИЧЕНИЕ `fk_trigger_subscriber`
ВЪНШЕН КЛЮЧ (`subscriberId`)
РЕФЕРЕНЦИИ `бюлетин`.`абонат` (`id`)
ПРИ ИЗТРИВАНЕ БЕЗ ДЕЙСТВИЕ
ПРИ АКТУАЛИЗИРАНЕ БЕЗ ДЕЙСТВИЕ;предварително>
Резюме
В този урок обсъдихме дизайна на база данни на система за бюлетини за съхраняване на потребителите и управление на бюлетините. Той също така предостави дизайна на базата данни за управление на абонатите и пощенските списъци.
Можете да изпратите вашите коментари, за да се присъедините към дискусията. Може да се интересувате и от проектирането на базата данни на приложенията за блогове и анкети и анкети. Пълната схема на базата данни е достъпна и на GitHub.