如何设计一张表?

1、一张表必须有哪些字段?这些字段的作用是什么?必须加上create_time创建时间且添加上索引,modify_time修改时间,remark备注,这三个字段放在最后。如果是后台系统,还需要添加上operator操作人和operate_time 操作时间。

2、字段是否全面?没有该字段会有什么问题?比如订单表,如果没有区分该订单来自app还是web,那么你就无法统计订单来自app和web的情况。

3、字段冗余问题。该冗余的就要冗余,什么是该冗余呢?就是查询性能要求高而数据改动小的那些表,尽可能避免多表连接查询,冗余都是为了解决数据库的性能限制。优点是方便数据的查询统计,因此尽可能减少冗表的冗余字段的更新和删除操作,一个字段冗余得越多,那么该字段修改或删除的代价越大。缺点是,数据一致性维护成本高,需要维护冗余字段的一致性,如果有很多很多张表都携有冗余字段,不仅会使数据库性能降低还会带来数据不一致等一系列问题。如果参照三范式,那我们在设计数据库的时候就必须致力于消灭冗余字段,毕竟如果我们需要更新某条记录,而这条记录又恰好包含了冗余字段,那么我就必须更新所有携有冗余字段的表。如果冗余冗余字段只出现在很少的表中那么这不算什么大问题。以空间换时间的目的

4、字段值不要有null值,建议建表时要default 一个默认值。即加上not null约束,同时给一个default默认值。

5、每个表必须有一个是否启动的字段,该字段用来标识一条记录是否可用/是否作废,但是不想删除该记录。