新零售mysql设计(部门 职位 员工 角色 用户)表

作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主


sql

部门表:

CREATE table t_dept(
id int unsigned PRIMARY key AUTO_INCREMENT COMMENT "主键",
    dname varchar(20) not null COMMENT "部门名称",
    UNIQUE unq_dname(dname)
) COMMENT="部门表";

解析部门表:

你看啊,一个部门是不是得有名字,而且部门名称是不是不能重复呢?所以得创建唯一性约束啊UNIQUE unq_dname(dname)

数据

在这里插入图片描述

职位表:

CREATE table t_job(
id int unsigned PRIMARY KEY AUTO_INCREMENT COMMENT "主键",
    job varchar(20) not null COMMENT "职位名称"
) COMMENT="职位表";

职位表解析

职位是不是能重复呢。对吧,所以这里不能用唯一性约束。职位是不是得有名字啊,对吧

数据

在这里插入图片描述

员工表

CREATE TABLE `t_emp`(
  `id` int UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
  `wid` varchar(20)  NOT NULL COMMENT '工号',
  `ename` varchar(20) NOT NULL COMMENT '姓名',
  `sex` char(1) NOT NULL COMMENT '性别',
  `married` tinyint NOT NULL COMMENT '婚否',
  `education` tinyint NOT NULL COMMENT '学历:1大专,2本科,3研究生,4博士,5其他',
  `tel` char(11) NOT NULL COMMENT '电话',
  `email` varchar(200)  COMMENT '邮箱',
  `address` varchar(200)  COMMENT '住址',
  `job_id` int UNSIGNED NOT NULL COMMENT '职务ID',
  `dept_id` int UNSIGNED NOT NULL COMMENT '部门ID',
  `mgr_id` int UNSIGNED  COMMENT '上司ID',
  `hiredate` date NOT NULL COMMENT '入职日期',
  `termdate` date COMMENT '离职日期',
  `status` tinyint UNSIGNED NOT NULL COMMENT '状态:1在职,2休假,3离职,4死亡',
 	INDEX idx_job_id(job_id),
    INDEX idx_dept_id(dept_id),
    INDEX idx_status(`status`),
    INDEX idx_mgr_id(mgr_id),
    INDEX idx_wid(wid),
    UNIQUE unq_wid(wid)
)COMMENT="员工表";

员工表(解析)

你看啊,你进入一个企业。是不是得有一个工号,代表你在这个企业中的身份。是不是员工表得有你的姓名。性别 是否婚否 学历是什么?电话 邮箱 住址 入职时间 离职时间这些字段是不是全部要有.还有你比如要休假什么的,是不是得显示你目前在这企业中的状态
你看啊。一个员工。你的职务是什么?你的部门是什么?上司是哪位?是不是都得有.
索引那块:(需要注意的地方):
工号是一定是唯一的。因为代表你的身份。像身份证一样.
为什么要创建索引呢?
比如:

INDEX idx_job_id(job_id),
INDEX idx_dept_id(dept_id),
INDEX idx_status(`status`),
INDEX idx_mgr_id(mgr_id),
INDEX idx_wid(wid),
UNIQUE unq_wid(wid)

凡是关联表一般都要创建索引,关联表的时候快一点啦.

数据

在这里插入图片描述

角色表

CREATE table t_role(
id int   unsigned PRIMARY key AUTO_INCREMENT COMMENT "主键",
role varchar(20) not null COMMENT "角色名称",
    UNIQUE unq_role(role)
) COMMENT="角色表";

角色表解析

切记,角色一定要有唯一性约束。代表一种角色。比如老师总经理实习生之类的。角色的名字是不是也得有.

数据

在这里插入图片描述

用户表

CREATE TABLE t_user(
id int unsigned PRIMARY key AUTO_INCREMENT COMMENT "主键",
    username varchar(200) not null COMMENT "用户名",
    `password` varchar(2000) not null COMMENT "密码(aes加密)",
    emp_id int unsigned not null COMMENT "员工id",
    role_id int unsigned not null COMMENT "角色id",
    `status` tinyint unsigned not null COMMENT "状态:1可用,2禁用",
    create_time timestamp not null default now() COMMENT "添加时间",
    last_update_time timestamp not null default now() COMMENT "最后修改时间",
    UNIQUE unq_username(username),
    INDEX idx_username(username),
    INDEX idx_emp_id(emp_id),
    INDEX idx_role_id(role_id),
    INDEX idx_status(`status`)
) COMMENT="用户表";

用户表解析:

你看啊。一个用户想要登录新零售系统的用户哈。是不是得有用户名+密码 目前的状态:可用还是不可用。
注意:
用户表:是不是得关联角色表role_id 代表这个用户所代表的角色。比如总经理。用户的id是不是也得有.代表关联的是哪一个员工,员工在员工表中.对吧。添加时间修改时间是不是也得有.

添加索引的目的在于搜索快一点.

数据

在这里插入图片描述

注意

什么时候为·null,什么时候为not null呢?这个得根据显示生活中的业务决定.
比如必填的是not null 不是必填的可以是null

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值