数据库设计规范
2016-04-19 11:49
267 查看
基本原则
避免表关联操作(join) (推荐在应用服务层,通过业务代码来完成)业务开发避免使用procedure,function,trigger (推荐在应用服务层,通过业务代码来完成)
发版过程中产生的备份表、临时表应及时清除。例如:NewCaseFolder0213、NewCaseFolder.Chart_Timeline_temp_20140508
不在数据库做运算,运算移至业务层处理。例如:各种mysql函数调用 md5() / Order by Rand()
单表字段数少而精,上限控制在20个左右。
拒绝3B,大SQL( Big SQL ),大事务( Big Transaction ),大批量( Big Batch )
永远不在程序端对数据库显式加锁
数据库编码默认是 utf8mb4,以支持表情符号
使用InnoDB存储引擎
所有表都需要添加注释
不在数据库中存储图 、 文件等大数据
库名、表名、字段名禁止使用英文缩写、拼音缩写,须见名知意 (推荐使用英文单词全名)
命名规范
表名
正式表以 t_ 开头全小写字母,单词之间用下划线分隔。比如:user_name
表名不允许出现数字,例如:EPocket2
正式的业务表表名不允许使用copy、temp、new等有歧义的名称,例如:NewCaseFolder.Chart_Timeline_Temp,EPocket2.CalculatorNew
业务日志表以_log结尾,业务日志是记录业务操作的历史,只有数据追加(insert),没有update操作和delete操作。
字段名
全小写字母,单词之间用下划线分隔。比如:user_name时间列明确区分 date 和 time,比如:EPocket2.Drug 的 PubDate 列格式是datetime,应该命名为pub_time
描述尽量详细,不能含糊,因为含糊会导致不同的字段意义,却有相同的名称。容易导致误解。例如:
xsl_visit.Solution_Resources 患教库和 xsl_visit.TimerJob 定时任务的列表中,有同一列 contentTypeID,但意义不同。应该分别命名为 resources_type_id 和 job_type_id。
描述要能够精确对应字段含义,禁止为了省事儿而借用其它列,导致列名与字段含义不对应的情况。例如:
EPocket2.GuideNew 的列 PubDate 是物理指南的发布时间,EPocket2.Drug 的列 PubDate 是药品上线时间
其它名称
索引命名以 idx_ 开头,单词间用下划线分割,idx之后跟索引列的列名。例如在userid上建立索引,命名为:idx_userid唯一索引命名以 unique_idx_ 开头,单词间用下划线分割,idx之后跟索引列的列名。
视图以 v_ 开头
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树