作者:陈业贵 华为云享专家 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