本文源码:GitHub·点这里| | GitEE·点这里
引用>一、数据场景
1,表结构简介
任何工具类的东西都是为了解决某个场景下的问题,比如复述,缓存系统热点数据,ClickHouse解决海量数据的实时分析,MySQL关系型数据库存储结构化数据。数据的存储则需要设计对应的表结构,清楚的表结构,有助于快速开发业务,和理解系统。表结构的设计通常从下面几个方面考虑:业务场景,设计规范,表结构,字段属性,数据管理。
2,用户场景
例如存储用户基础信息数据,通常都会下面几个相关表结构:用户信息表,单点登录表,状态管理表,支付账户表等。
<李>用户信息表李>
存储用户三要素相关信息:姓,名手机号,身份证,登录密码,邮箱等。
<代码类=" sql语言">创建表“ms_user_center”( “id”int (11) NOT NULL AUTO_INCREMENT评论的用户身份证”, 的user_name varchar (20) NOT NULL评论的用户名”, real_name varchar(20)默认空评论的真实姓名”, pass_word varchar (32) NOT NULL评论“密码”, “电话”varchar (20) NOT NULL评论的手机号”, “电子邮件”varchar(32)默认空评论“邮箱”, head_url的varchar(100)默认空评论的用户头像URL”, card_id varchar(32)默认空评论的身份证号”, ‘user_sex int(1)违约' 1 '评论的用户性别:0 -女,1 -男”, “create_time”datetime默认空评论“创建时间”, update_time datetime默认空评论”更新时间”, “状态”int(1)违约' 1 '评论“是否可用,0 -不可用,1 -可用的, 主键(“id”) )引擎=InnoDB默认字符集=utf8评论='用户表的;代码><李>单点登录表李>
用意是在多个业务系统中,用户登录一次就可以访问所有相互信任的业务子系统,是聚合业务平台常用的解决方案。
<代码类=" sql语言">创建表“ms_user_sso”( user_id int (11) NOT NULL评论的用户身份证”, sso_id varchar (32) NOT NULL评论“单点信息编号ID”, sso_code varchar (32) NOT NULL评论“单点登录码,唯一核心标识”, log_ip varchar(32)默认空评论“登录IP地址”, “create_time”datetime默认空评论“创建时间”, update_time datetime默认空评论”更新时间”, “状态”int(1)违约' 1 '评论“是否可用,0 -不可用,1 -可用的, 主键(“user_id”) )引擎=InnoDB默认字符集=utf8评论='用户单点登录表”,代码><李>状态管理表李>
系统用户在使用时候可能出现多个状态,例如账户冻结,密码锁定等,把状态聚合到一起,可以更加方便的管理和验证。
<代码类=" sql语言">创建表“ms_user_status”( user_id int (11) NOT NULL评论的用户身份证”, ‘account_status int(1)违约' 1 '评论的账户状态:0 -冻结,1 -未冻结”, ' real_name_status ' int(1)默认“0”评论“实名认证状态:0 -未实名,1 -已实名”, ' pay_pass_status ' int(1)默认“0”评论“支付密码是否设置:0 -未设置,1 -设置的, ' wallet_pass_status ' int(1)默认“0”评论“钱包密码是否设置:0 -未设置,1 -设置的, ‘wallet_status int(1)违约' 1 '评论“钱包是否冻结:0 -冻结,1 -未冻结”, ' email_status ' int(1)默认“0”评论“邮箱状态:0 -未激活,1 -激活”, ‘message_status int(1)违约' 1 '评论“短信提醒开启:0 -未开启,1 -开启”, ‘letter_status int(1)违约' 1 '评论的站内信提醒开启:0 -未开启,1 -开启”, ' emailmsg_status ' int(1)默认“0”评论“邮件提醒开启:0 -未开启,1 -开启”, “create_time”datetime默认空评论“创建时间”, update_time datetime默认空评论”更新时间”, “状态”int(1)违约' 1 '评论“是否可用,0 -不可用,1 -可用的, 主键(“user_id”) )引擎=InnoDB默认字符集=utf8评论='用户状态表”,代码><李>支付账户表李>
用户交易的核心表,存储用户相关的账户资金信息。
<代码类=" sql语言">创建表“ms_user_wallet”( wallet_id int (11) NOT NULL AUTO_INCREMENT评论“钱包ID”, user_id int (11) NOT NULL评论的用户身份证”, wallet_pwd varchar(32)默认空评论“钱包密码”, total_account的小数(20,2)默认“0.00”评论“账户总额”, usable_money的小数(20,2)默认“0.00”评论“可用余额”, freeze_money的小数(20,2)默认“0.00”评论“冻结金额”, “freeze_time”datetime默认空评论“冻结时间”, “thaw_time”datetime默认空评论“解冻时间的, “create_time”datetime默认空评论“创建时间”, update_time datetime默认空评论”更新时间”, “状态”int(1)违约' 1 '评论“是否可用,0 -不可用,1 -可用的, 主键(“wallet_id”) )引擎=InnoDB默认字符集=utf8评论='用户钱包”,MySQL基础篇(02):从五个维度出发,审视表结构设计