淺談用戶中心-資料庫設計
- 簡介
- 模型
- 表結構
- 后續擴展
簡介
隨著我們用戶資訊越來越龐大,微服務架構的流行,單體應用無法支撐強大的用戶群,慢慢衍生了用戶中心的概念,這里只是簡單的講解用戶相關的資料庫設計模型,主要講解用戶選單和資源權限設定有關的E-R設計和表結構,同時后續會簡介基本技術設計方案實作登錄和會話校驗以及用戶資訊的基本操作,
模型
這里只做簡單資料模型設計,畢竟不是真正的專案,

表結構
DROP TABLE IF EXISTS `mybatis`.`tb_user`;
create table `mybatis`.`tb_user`(
id int(11) auto_increment comment '主鍵id',
user_id varchar(32) not null comment '用戶id',
user_name VARCHAR(200) not null comment '用戶名',
user_en_name VARCHAR(200) comment '用戶名英文名',
user_password varchar(32) comment '用戶密碼',
user_phone int(11) comment '電話號碼',
user_sex TINYINT(1) not null comment '性別,0-男 1-女',
user_age SMALLINT(3) comment '年齡',
user_address varchar(400) comment '家庭住址',
user_marry_state TINYINT(1) comment '是否已婚,0-未婚,1-已婚',
user_state TINYINT(1) default 0 comment '用戶狀態,0-資訊不完整,1-正常狀態,2-已注銷',
user_job_type tinyint(2) comment '用戶職業,1-事業單位,2-程式員,具體參考職業表',
user_id_card varchar(22) comment '證件號',
user_email varchar(30) comment '用戶郵箱',
user_birthday varchar(8) comment '用戶生日',
create_time BIGINT(32) comment '創建時間',
update_time BIGINT(32) comment '最后更新時間',
primary key(id),
UNIQUE INDEX tb_user_ux(user_id)
)COMMENT='用戶表';
DROP TABLE IF EXISTS `mybatis`.`tb_role`;
create table `mybatis`.`tb_role`(
id int(11) auto_increment comment '主鍵id',
role_id SMALLINT(3) not null comment '角色id',
role_name varchar(200) not null comment '角色名稱',
role_state TINYINT(1) default 0 not null comment '狀態,0-不啟用,1-啟用',
create_time BIGINT(32) comment '創建時間',
PRIMARY key(id),
UNIQUE index tb_role_ux(role_id)
)COMMENT='角色表';
DROP TABLE IF EXISTS `mybatis`.`tb_menu`;
create table `mybatis`.`tb_menu`(
id int(11) auto_increment comment '主鍵id',
menu_id SMALLINT(3) not null comment '選單id',
menu_parent_id SMALLINT(3) comment '父選單id',
menu_name varchar(200) not null comment '角色名稱',
menu_url varchar(150) not null comment '選單路徑',
menu_state TINYINT(1) default 0 not null comment '選單狀態,0-不啟用,1-啟用',
create_time BIGINT(32) comment '創建時間',
update_time BIGINT(32) comment '最后更新時間',
PRIMARY key(id),
UNIQUE index tb_menu_ux(menu_id)
)COMMENT='選單表';
DROP TABLE IF EXISTS `mybatis`.`tb_resource`;
create table `mybatis`.`tb_resource`(
id int(11) auto_increment comment '主鍵id',
resource_code varchar(150) not null comment '資源code',
resource_url varchar(150) not null comment '資源路徑',
resource_description varchar(200) comment '資源描述',
resource_state TINYINT(1) default 0 not null comment '狀態,0-不啟用,1-啟用',
create_time BIGINT(32) comment '創建時間',
update_time BIGINT(32) comment '最后更新時間',
PRIMARY key(id),
UNIQUE index tb_resource_ux(resource_code)
)COMMENT='資源表';
DROP TABLE IF EXISTS `mybatis`.`user_role`;
create table `mybatis`.`user_role`(
id int(11) auto_increment comment '主鍵id',
user_id int(11) not null comment '用戶id',
role_id int(11) not null comment '角色id',
PRIMARY key(id),
UNIQUE index user_role_ux(user_id,role_id)
)COMMENT='用戶角色關聯表';
DROP TABLE IF EXISTS `mybatis`.`role_menu`;
create table `mybatis`.`role_menu`(
id int(11) auto_increment comment '主鍵id',
role_id int(11) not null comment '角色id',
menu_id int(11) not null comment '選單id',
PRIMARY key(id),
UNIQUE index role_menu_ux(role_id,menu_id)
)COMMENT='角色選單關聯表';
DROP TABLE IF EXISTS `mybatis`.`menu_resource`;
create table `mybatis`.`menu_resource`(
id int(11) auto_increment comment '主鍵id',
menu_id int(11) not null comment '選單id',
resource_id int(11) not null comment '資源id',
PRIMARY key(id),
UNIQUE index menu_resource_ux(menu_id,resource_id)
)COMMENT='選單資源關聯表,一般不用';
DROP TABLE IF EXISTS `mybatis`.`role_resource`;
create table `mybatis`.`role_resource`(
id int(11) auto_increment comment '主鍵id',
role_id int(11) not null comment '選單id',
resource_id int(11) not null comment '資源id',
PRIMARY key(id),
UNIQUE index role_resource_ux(role_id,resource_id)
)COMMENT='角色資源,技術人員配置';
DROP TABLE IF EXISTS `mybatis`.`logon`;
create table `mybatis`.`logon`(
token VARCHAR(32) comment '主鍵id',
user_id int(11) comment '用戶表的id',
logon_time BIGINT(21) comment '登錄時間',
resource_data varchar(4000) comment '會話資料',
PRIMARY key(token),
index logon_idx(user_id)
)COMMENT='登錄會話表';
后續擴展
后續章節完善功能模塊!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/252111.html
標籤:其他
