数据库设计约定

来源:互联网 发布:淘宝上换购是什么意思 编辑:程序博客网 时间:2024/06/11 13:26

一、公共部分

1、存储引擎

默认Innodb,非特殊要求一律使用此引擎

2、字符集

Database Server 字符集统一默认UTF-8,table和column从server继承

二、表设计约定

1、主键

每张表必须包含物理自增主键,如主键字段不能满足业务需求,另建unique约束业务字段

2、外键

数据库表禁止主外键关联,需要在程序业务逻辑中维护。特殊情况如跟支付,财务模块相关,方可考虑主外键

3、表名,字段,索引命名规则

  • TABLE: 同一业务模块使用相同表前缀,如tb_pay_xxxx,字典表用dim_xxxx
  • Column: XXXX_XXXX,中间以下划线隔开

4、公共字段

  • 每张表包含2个公共字段,created_at,updated_at
  • is_delete作为标识记录逻辑删除,非必须字段,枚举类型(tinyint(4)),0有效,1删除,默认为0(有效),如数据量增长过大可通过归档,归档后在表中物理删除。
  • created_at,updated_at 字段作为DT增量拉取数据和数据回退等场景下使用,created_at 默认current_timestamp
  • updated_at 默认current_timestamp,on update current_timestamp

5、字段冗余

非严格遵守3NF,通过业务字段冗余来减少表关联

6、字段类型长度选择

  • 主键字段:bigint(20),int(11) 根据预估数据量选择,如果选择int(11)需要标注为unsigned
  • 字符串:尽可能使用定长char类型,如姓名,身份证号码,如需要变长varchar,尽可能根据实际情况限制长度,如description等
  • 枚举类型:统一tinyint(4),只占一个字节
  • 日期:date,datetime, timestamp,根据实际情况选择
  • 金额:使用decimel(xx,2)

7、字段不允许为空

不允许可为空字段,必须有默认值

时间字段默认值建议:

1)date类型,默认值非current_date()下,默认值为'1970-01-01'

2)datetime类型,默认值非current_timestamp()下,设置为'1970-01-01 08:00:01'

3)timestamp类型,默认值非current_timestamp()下,设置成'1970-01-01 08:00:01'

8、注释

建表包含表注释,尤其枚举类型需要说明每一种含义

9、大字段(text/blob)

原则上不允许这种字段,尽可能的拆分成小字段,如果特别需要,而又读写频繁,另外建一张表

三、索引约定

 1、命名

  • 主键:pk_columnName (或者让数据库自动命名);
  • 唯一键:uk_columnName;
  • 普通索引:ix_columnName;
  • 组合索引ix_column1_column2_column3; 如长度太长则截取部分,取义直观

 2、必须包含索引

公共字段created_at和updated_at必须建立索引

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 济南市人民医院 济南市邮编 济南市第三人民医院 济南市儿童医院 济南市中医医院 济南市教育资源公共服务平台 济南市社保查询入口 济南市立五院 济南市民族医院 济南市图书馆 济南市规划局 济南市技师学院 济南市市长 济南市高新区 济南市第二人民医院 济南市招商项目排行 济南市中医院 济南市连锁项目排名 济南市连锁店排行 济南市公共资源交易中心网 济南市公共资源交易中心 济南市高新区属于什么区 济南市第一人民医院 济南市规划局网站 济南市山东大厦 济南市人口 济南市区号 济南市副市长 济南市疾控中心 济南府 济南璀璨悦府 济南德林家政 济南景点大全一日游 济南周边一日游 济南游 2018济南近郊一日游自驾游景点 济南近郊一日游自驾游 济南宜家一日游攻略 济南野生动物园一日游 济南近郊游自驾哪里好 济南红叶谷一日游