このチュートリアルでは、ユーザー通知を管理するための通知システムのデータベーススキーマを設計するための完全な手順を提供します。さらに拡張して、システムユーザー以外の他のエンティティの通知を管理するために使用できます。
実体関連図または視覚的なデータベース設計を以下に示します。
通知管理データベース
また、Ubuntu 20.04LTSにMySQL8をインストールする方法、WindowsにMySQL 8をインストールする方法、UbuntuにMySQL Workbenchをインストールする方法、Windows10にWorkbenchを使用してMySQL8をインストールする方法、MySqlのRBACデータベースなどの人気のあるチュートリアルにアクセスすることもできます。 MySqlのブログデータベース、MySQLのクイズデータベース、MySQLのPoll&Surveyデータベース、MySQLのオンラインショッピングカートデータベース、MySQLの基本的なSQLクエリを学ぶ。
通知データベース
最初のステップは、通知データベースを作成することです。以下に示すクエリを使用して作成できます。
CREATE SCHEMA `notification` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
文字セットutf8mb4を使用しました 幅広いキャラクターをサポートします。
ユーザーテーブル
このセクションでは、ユーザーテーブルを設計します ユーザー情報を保存します。ユーザーは自分の通知を管理できます。以下は、ユーザーテーブルのすべての列の説明です。
ユーザーを識別するための一意のID。 |
ユーザーの名。 |
ユーザーのミドルネーム。 |
ユーザーの名前。 |
ユーザーの携帯電話番号。ログインと登録の目的で使用できます。 |
ユーザーのメールアドレス。ログインと登録の目的で使用できます。 |
適切なアルゴリズムによって生成されたパスワードハッシュ。プレーンなパスワードや暗号化されたパスワードの保存は避けなければなりません。 |
この列は、アプリケーションを使用しているユーザーの寿命を計算するために使用できます。 |
ユーザーの最後のログインを識別するために使用できます。 |
ユーザーの簡単な紹介。 |
ユーザーの詳細。 |
適切な制約のあるユーザーテーブルを以下に示します。
CREATE TABLE `notification`.`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 `notification`.`notification_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) NOT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`) );
通知テーブル
このセクションでは、通知テーブルを設計します アプリケーションによってトリガーされた通知を保存します。通知は、特定のタイプおよびソースタイプのテンプレートを使用してトリガーできます。通知のタイプとソースタイプは、通知コンテンツの生成に使用されるテンプレートのタイプと同じになります。以下は、通知テーブルのすべての列の説明です。
通知を識別するための一意のID。 |
通知に関連付けられているユーザーを識別するためのユーザーID。 |
通知に関連付けられているエンティティを識別するためのソースID。 |
通知に関連付けられているエンティティを識別するためのソースタイプ。テンプレートのソースタイプと同じになります。 |
通知を分類するタイプ。テンプレートタイプと同じになります。 |
通知を既読/未読としてマークするフラグ。 |
通知をゴミ箱としてマークするフラグ。 |
通知が作成された日時が保存されます。 |
通知が更新された日時が保存されます。 |
対応するテンプレートを使用して生成された通知コンテンツ。 |
適切な制約のある通知テーブルは次のとおりです。
CREATE TABLE `notification`.`notification` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`sourceId` BIGINT NOT NULL,
`sourceType` VARCHAR(50) NOT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`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_notification_user` (`userId` ASC),
CONSTRAINT `fk_notification_user`
FOREIGN KEY (`userId`)
REFERENCES `notification`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
概要
このチュートリアルでは、ユーザーを保存して通知を管理するための通知システムのデータベース設計について説明しました。また、通知を生成するために必要な通知テンプレートテーブルも含まれています。
コメントを送信して、ディスカッションに参加できます。 BlogおよびPoll&Surveyアプリケーションのデータベースの設計にも興味があるかもしれません。完全なデータベーススキーマはGitHubでも入手できます。