基础的表设计
设计一下用户生命周期管理,一个普通用户,固定在一个小组内,小组固定在一个部门内,部门固定在一个公司内。
用户还区分为普通真实用户、系统虚拟用户,首先给出这部分的 mysql 表设计,包括数据库建表语句等
[sql]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47create database sso;
use sso;
-- 组织架构管理系统数据库表结构
-- 公司表
CREATE TABLE company (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '公司ID',
name VARCHAR(100) NOT NULL COMMENT '公司名称',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公司信息表';
-- 部门表
CREATE TABLE department (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID',
company_id BIGINT NOT NULL COMMENT '所属公司ID',
name VARCHAR(100) NOT NULL COMMENT '部门名称',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门信息表';
-- 小组表
CREATE TABLE team (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '小组ID',
department_id BIGINT NOT NULL COMMENT '所属部门ID',
name VARCHAR(100) NOT NULL COMMENT '小组名称',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小组信息表';
-- 用户表
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
team_id BIGINT NOT NULL COMMENT '所属小组ID',
username VARCHAR(50) UNIQUE NOT NULL COMMENT '用户名',
password VARCHAR(100) NOT NULL COMMENT '密码',
user_type TINYINT DEFAULT 0 COMMENT '用户类型(0-真实用户 1-虚拟用户)',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
-- 创建索引
CREATE INDEX idx_company_name ON company(name);
CREATE INDEX idx_department_company ON department(company_id);
CREATE INDEX idx_team_department ON team(department_id);
CREATE INDEX idx_user_team ON user(team_id);