1.我们给每个表都加上ID
、CODE
、创建日期
、最后修改日期
、备注
、数据状态
公共字段,方便后续操作
规则:以SYS_USER表为例,加上如下字段USER_ID
,USER_CODE
,GMT_CREATE
,GMT_MODIFIED
,MEMO
,DATA_STATE
系统表(一般是必须的)
每个系统会存在状态属性信息和常量配置信息,所以我们给加上2张表
-
属性状态字典表
用于配置属性状态,如下拉框中的中文描述,类似于给一些数字或字母加上中文描
系统表
每个系统会存在状态属性信息和常量配置信息,所以我们给加上2张表
-
属性状态字典表
用于配置属性状态,如下拉框中的中文描述,类似于给一些数字或字母加上中文描述
CREATE TABLE `SYS_DD` ( `DD_ID` int(11) NOT NULL AUTO_INCREMENT, `DD_TABLE` varchar(30) DEFAULT NULL COMMENT '对应的TABLE', `DD_COLUMN` varchar(30) DEFAULT NULL COMMENT 'TABLE中COLUMN', `DD_CODE` varchar(30) DEFAULT NULL COMMENT '代码', `DD_VALUE` varchar(250) DEFAULT NULL COMMENT '代码对应的显示的值', `DD_REMARK` varchar(250) DEFAULT NULL COMMENT '说明', `DD_ORDER` int(11) DEFAULT NULL COMMENT '排序', `GMT_CREATE` datetime DEFAULT NULL COMMENT '创建时间', `GMT_MODIFIED` datetime DEFAULT NULL COMMENT '修改时间', `MEMO` varchar(250) DEFAULT NULL COMMENT '备注', `DATA_STATE` int(11) DEFAULT NULL COMMENT '状态', PRIMARY KEY (`DD_ID`), UNIQUE KEY `UDX_SYS_DD_CODE` (`DD_TABLE`,`DD_COLUMN`,`DD_CODE`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据字典';
理由分析:
a.一般我们要把一些字典表里面的下拉框最好保存到数据库当中,避免下次要更改文字的时候,我们要到前端页面去修改,我们只需要在数据库当中修改即可。
b.我这样设计数据库还有一个好处就是在里面添加了DD_TABLE` varchar(30)(表名),和表明对应的字段(DD_COLUMN),这样可以做到灵活配置,当一个表中需要有多个下拉框的时候这种配置就非常好。
c.我还在字典表里对应DD_CODE-->DD_VALUE这样我们给前端接口既可以给code,又可以给对应的中文字,做到灵活
d.在这里特别说一点,就是我为什么设计数据库表的时候把类型设计为utf8mb4,主要是考虑到emege表情,大家有兴趣可以百度一下utf8mb4和utf-8的区别
为什么要序列化:
我们要把数据从一个地方存储到另外的一个地方去的时候,必然是希望数据是按照某种方式来搬运,在java中我们某个类实现序列化的时候,通常是按照JDK序列化方式来进行的,至于为什么要采用这种方式,大家可以去百度。所以我们在用redis来缓存,我们必然是把user这个对象进行序列化,不相信,你可以找任何一个来看一下。