数据库设计

数据库表设计

设计思路

a.进行需求分析,梳理业务流程,识别业务实体,明确数据库表的功能和目标。
b.确定各个实体的属性,建立各实体之间的关系,包括一对一,一对多,多对多等等。
c.尽量遵循数据库三范式(列不可分割,属性完全依赖主键,属性之间不相互依赖)进行具体的设计。适当时候可以反范式设计,比如通过个别冗余的字段来减少联表查询,以空间换时间。

设计准则

1.命名规范

数据库表名、字段名、索引名需要命名规范,一般来说,采用和业务相关的小写英文,中间用下划线分割,让别人一看就知道想表达什么意思,可读性高。

2.选择合适的字段类型

a.尽可能选择存储空间小的字段,比如整数类型,从tinyint,smallint,int,bigint从小到大选择。
b.涉及到金额价格的字段,用decimal。
c.字符串如果是定长的,使用char。
d.如果存储的字符串很大,考虑使用text,单独使用一张表存储。或者使用其他存储手段。

3.添加一些通用的字段

a.一般来说创建人,创建时间,修改人,修改时间这些字段是每个表必备的。
b.设置逻辑删除的字段,尽量考虑逻辑删除而非物理删除,方便回滚数据恢复。

4.主键要与业务无关,一般使用自增的字段

5.禁止使用外键,外键存在性能低,并发死锁的问题。外键的概念应该在代码层面解决

6.索引的设置

a.评估表数据量,如果一张表数据量只有几十一百行,就没必要设置索引。
b.频繁作为查询,排序,与其他表关联的字段应该设置索引。
c.区分度不高的字段尽量不要加索引。
d.频繁更新的字段不要加索引。
e.设置索引的字段要not null,实在要为空,设置默认值
f.设置组合索引的时,遵循最左匹配原则,使用最频繁的字段越靠前面。如果能利用到覆盖索引最好。组合索引的列不能太多,一般不超过4个。

你可能感兴趣的:(数据库mysql)