最近要作數據庫大做業,在思考了好久以後,仍是設計一個簡單的我的博客數據庫,數據庫採用的時MySQL5.7。html
隨着互聯網的發展,愈來愈多的人擁有了本身的我的博客。可是大多數採用的是網上別人作好的博客模板,衆所周知,網上的模板並非單獨爲我的而定製,而是面向大多數人的,獨立設計一個博客,知足本身的需求。後端
用戶的相關信息以下:用戶ID、用戶IP、用戶名、用戶暱稱、用戶密碼、用戶郵箱、用戶頭像、註冊時間、用戶生日、用戶年齡、用戶手機號。bash
用戶註冊時需提供用戶名、用戶密碼、用戶郵箱或用戶手機號。網絡
用戶登陸時能夠採用用戶名或郵箱或手機號進行登陸。架構
用戶能夠發佈博文、發表評論、回覆,還能夠添加其餘用戶爲好友。數據庫設計
博文的相關信息以下:博文ID、發佈日期、發表用戶、博文標題、博文內容、點贊數、回覆數、遊覽量。網站
博文能夠被普通用戶發佈、修改、刪除和評論,但修改和刪除僅限於本身發表的動態。spa
博文發佈時須要設置分類、標籤。設計
評論的相關信息以下:評論ID、評論日期、點贊數、發表用戶、評論文章ID、評論內容、父評論ID。
評論能夠被用戶發表和刪除以及被其餘用戶回覆。
分類的相關信息以下:分類ID、分類名稱、分類別名、分類描述、父分類ID。
只有管理員能夠添加、刪除、修改分類。
分類的做用不只能夠將文章分類,還能夠做爲博客的菜單。
標籤的相關信息以下:標籤ID、標籤名稱、標籤別名、標籤描述。
用戶發表文章時能夠設置標籤,標籤不只能夠將文章分類,還能夠做爲博客的菜單。
CREATE TABLE `zj_users` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
`user_ip` varchar(20) NOT NULL COMMENT '用戶IP',
`user_name` varchar(20) NOT NULL COMMENT '用戶名',
`user_password` varchar(15) NOT NULL COMMENT '用戶密碼',
`user_email` varchar(30) NOT NULL COMMENT '用戶郵箱',
`user_profile_photo` varchar(255) NOT NULL COMMENT '用戶頭像',
`user_registration_time` datetime DEFAULT NULL COMMENT '註冊時間',
`user_birthday` date DEFAULT NULL COMMENT '用戶生日',
`user_age` tinyint(4) DEFAULT NULL COMMENT '用戶年齡',
`user_telephone_number` int(11) NOT NULL COMMENT '用戶手機號',
`user_nickname` varchar(20) NOT NULL COMMENT '用戶暱稱',
PRIMARY KEY (`user_id`),
KEY `user_name` (`user_name`),
KEY `user_nickname` (`user_nickname`),
KEY `user_email` (`user_email`),
KEY `user_telephone_number` (`user_telephone_number`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `zj_articles` (
`article_id` bigint(255) NOT NULL AUTO_INCREMENT COMMENT '博文ID',
`user_id` bigint(20) NOT NULL COMMENT '發表用戶ID',
`article_title` text NOT NULL COMMENT '博文標題',
`article_content` longtext NOT NULL COMMENT '博文內容',
`article_views` bigint(20) NOT NULL COMMENT '瀏覽量',
`article_comment_count` bigint(20) NOT NULL COMMENT '評論總數',
`article_date` datetime DEFAULT NULL COMMENT '發表時間',
`article_like_count` bigint(20) NOT NULL,
PRIMARY KEY (`article_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `zj_articles_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `zj_users` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `zj_comments` (
`comment_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '評論ID',
`user_id` bigint(20) NOT NULL COMMENT '發表用戶ID',
`article_id` bigint(20) NOT NULL COMMENT '評論博文ID',
`comment_like_count` bigint(20) NOT NULL COMMENT '點贊數',
`comment_date` datetime DEFAULT NULL COMMENT '評論日期',
`comment_content` text NOT NULL COMMENT '評論內容',
`parent_comment_id` bigint(20) NOT NULL COMMENT '父評論ID',
PRIMARY KEY (`comment_id`),
KEY `article_id` (`article_id`),
KEY `comment_date` (`comment_date`),
KEY `parent_comment_id` (`parent_comment_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE `zj_labels` (
`label_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '標籤ID',
`label_name` varchar(20) NOT NULL COMMENT '標籤名稱',
`label_alias` varchar(15) NOT NULL COMMENT '標籤別名',
`label_description` text NOT NULL COMMENT '標籤描述',
PRIMARY KEY (`label_id`),
KEY `label_name` (`label_name`),
KEY `label_alias` (`label_alias`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `zj_set_artitle_label` (
`article_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文章ID',
`label_id` bigint(20) NOT NULL,
PRIMARY KEY (`article_id`),
KEY `label_id` (`label_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `zj_set_artitle_sort` (
`article_id` bigint(20) NOT NULL COMMENT '文章ID',
`sort_id` bigint(20) NOT NULL COMMENT '分類ID',
PRIMARY KEY (`article_id`,`sort_id`),
KEY `sort_id` (`sort_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zj_sorts` (
`sort_id` bigint(20) NOT NULL COMMENT '分類ID',
`sort_name` varchar(50) NOT NULL COMMENT '分類名稱',
`sort_alias` varchar(15) NOT NULL COMMENT '分類別名',
`sort_description` text NOT NULL COMMENT '分類描述',
`parent_sort_id` bigint(20) NOT NULL COMMENT '父分類ID',
PRIMARY KEY (`sort_id`),
KEY `sort_name` (`sort_name`),
KEY `sort_alias` (`sort_alias`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zj_user_friends` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '標識ID',
`user_id` bigint(20) NOT NULL COMMENT '用戶ID',
`user_friends_id` bigint(20) NOT NULL COMMENT '好友ID',
`user_note` varchar(20) NOT NULL COMMENT '好友備註',
`user_status` varchar(20) NOT NULL COMMENT '好友狀態',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
複製代碼
某用戶的全部好友視圖:
CREATE VIEW Friends
AS
SELECT
zj_user_friends.user_id AS user_id,
zj_users.user_name AS user_name,
zj_user_friends.user_friends_id AS user_friends_id,
zj_user_friends.user_note AS user_note
FROM
(
zj_users
JOIN zj_user_friends
)
WHERE
(
zj_users.user_id = zj_user_friends.user_id
) ;
複製代碼
數據庫的設計不是很簡單,一個產品除了知足用戶需求,數據庫的架構是很是重要的,以前作的一個志願網站,雖然功能不是很好,基本需求能知足,可是數據庫徹底沒有設計,沒有處理,致使數據處理很糟糕。
如今這個數據爆炸的網絡時代,數據的處理及數據庫的設計顯得尤爲重要,數據庫設計師工做量也不亞於先後端工程師。