最近要作数据库大做业,在思考了好久以后,仍是设计一个简单的我的博客数据库,数据库采用的时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
) ;
复制代码
数据库的设计不是很简单,一个产品除了知足用户需求,数据库的架构是很是重要的,以前作的一个志愿网站,虽然功能不是很好,基本需求能知足,可是数据库彻底没有设计,没有处理,致使数据处理很糟糕。
如今这个数据爆炸的网络时代,数据的处理及数据库的设计显得尤为重要,数据库设计师工做量也不亚于先后端工程师。