通用设计
通用字段
频繁操作的表都需要 created_time 和 modified_time 这两个字段.
国际化
如果是有跨国的业务, 需要考虑时间, 以 gmt 格式存储最合适.
表名要有扩展性
表名尽可能是业务上的抽象,最好不要用具体业务来直接命名。比如现在正在写的业务用到一张表来存队列状态,第一个想法是命名 xx业务_index_recom 。但是如果又有新业务需要存队列状态了,那势必要建一张新表了。但是如果这张表取名 queue_index_recom, 表内加一个 task_type 的字段加以区分,就可以重用这张表了。
常见的问题是, 没有对表进行一定的抽象, 来1个需求建一张表, 这样增大了后期维护的难度.
表关系
外键
语法
foreign key(key_name) references AnotherTableName(key_name)
外键使用场景
如果数据量可控可预期比较合适,但是如果数据量不可控,为了性能一般不使用mysql外键。画示意图时,表明它们的关系即可。
举例
create table jack_study.spring_study_user(id int auto_increment,nickname varchar(45),password varchar(45),first_name varchar(45),last_name varchar(45),primary key (id));create table jack_study.blog(id int auto_increment,title varchar(100),content varchar(255),user_id int(11),pub_date date,primary key (id),foreign key(user_id) references jack_study.spring_study_user(id));
常见类型表结构
账户表
账户表需要账户名/密码/账户状态/权限 等字段, 密码需要加密后存储.
