Mysql基础:设计一个项目数据库,三大范式

设计项目数据库的步骤:(eg:个人博客)

1.收集信息,分析需求

    。用户表(用户登陆注销,用户的个人信息,写博客,创建分类)

    。分类表(文章分类,谁创建的)

    。文章表(文章的信息)

    。评论表

    。友链表(友链信息)

    。粉丝(关注)表

    。自定义表(系统信息,某个关键的字。或者一些主字段)  key:value

标识实体(把需求落到每个字段)

标识实体之间的关系

    。写博客:user-->blog

、   。创建分类:user-->category

    。关注:user-->user

    。友链:links

    。评论:user->user>blog

-- =========user表 ========
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '用户唯一id',
  `username` varchar(60) NOT NULL COMMENT '用户名',
  `password` varchar(60) NOT NULL COMMENT '用户密码',
  `sex` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  `sign` varchar(200) DEFAULT NULL COMMENT '签名',
  `open_id` varchar(1000) NOT NULL COMMENT '微信id',
  `avatar` varchar(1000) NOT NULL COMMENT '头像链接地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- =========分类r表 ========
CREATE TABLE `category` (
  `id` int(10) NOT NULL COMMENT '分类iid',
  `category_name` varchar(30) NOT NULL COMMENT '分类标题',
  `create_user_id` int(10) NOT NULL COMMENT '创建用户的id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--  =========文章表 ========
CREATE TABLE `blog` (
  `id` int(10) NOT NULL COMMENT '文章的唯一标识',
  `title` varchar(100) NOT NULL COMMENT '文章标题',
  `author_id` int(10) NOT NULL COMMENT '编写文章的用户',
  `category_id` int(10) NOT NULL COMMENT '文章的分类id',
  `content` text NOT NULL COMMENT '文章内容',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
  `love` int(10) DEFAULT NULL COMMENT '喜欢',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--  =========评论表 ========
CREATE TABLE `comment` (
  `id` int(10) NOT NULL COMMENT '评论id',
  `blog_id` int(10) NOT NULL COMMENT '所属文章',
  `user_id` int(10) NOT NULL COMMENT '评论人',
  `content` varchar(2000) NOT NULL COMMENT '评论的内容',
  `create_time` datetime NOT NULL COMMENT '评论时间',
  `user_id_parent` int(10) NOT NULL COMMENT '回复的人的id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--  =========友链表 ========
CREATE TABLE `links` (
  `id` int(10) NOT NULL COMMENT '友链id',
  `links` varchar(60) NOT NULL COMMENT '网站名称',
  `href` varchar(2000) NOT NULL COMMENT '网站链接',
  `sort` int(10) NOT NULL COMMENT '排序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- =========user_follow表 ========
DROP TABLE IF EXISTS `user_follow`;
CREATE TABLE `user_follow` (
  `id` int(10) NOT NULL COMMENT '唯一标识',
  `user_id` int(10) NOT NULL COMMENT '被关注人的id',
  `follow_id` int(10) NOT NULL COMMENT '关注人的id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 **ant.design.pro

**数据库经典例子:BBS(论坛)  CRM(客户管理系统)

 

三大范式

第一范式(1NF)

  原子性:保证每一列不可再分

第二范式(2NF)

  前提:满足第一范式

  每张表只能描述一件事

第三范式(3NF)

  前提:满足第一范式和第二范式

  第三范式需要确保数据表中的每一列数据都和主键直接相关,而不是间接相关

  

 

(1NF)

posted @ 2020-09-26 14:49  凸然猿  阅读(247)  评论(0编辑  收藏  举报