Mysql数据库设计总结

来源:互联网 发布:电脑wifi网络连接不上 编辑:程序博客网 时间:2024/05/16 14:12

一、数据建模
1、概念模型
概念模型需要抽象出重点字段,关键是体现实体间的关系,比如继承,联系、对应关系

2、逻辑模型
对概念模型进行具体化,关键是表与表的关联,以及具体的内容,比如定义字段名、数据类型等,及表与表的关系

3、物理模型
基于逻辑模型生成不同DB的数据结构,可生成脚本直接运行,比如DB对应数据类型

二、库、表、字段
1、库名尽量使用简写,保证简短
2、表名尽量不用简写,保证直观
3、字名尽量不用简写,保证直观

注意点
1,提前定义好元数据,避免相同字段在不同表存在不同的名称
2,数据长度、非空根据项目(产品)需要定义,如果项目(产品)没有严格的性能要求,可放宽长度、不用非空约束
3,任何对象尽量一次性定义好,避免多次改动影响开发人员进度。

三、关键点
1、主键生成策略
(1) 尽量不使用UUID作为主键,既占用空间,也无法使用mysql自带的表分区,不利于读写和拓展
(2) 如果多点写入,所有表主键生成策略必须代码生成(虽然可以改变自增步长来区别,但无法拓展写)
(3) 一对一的表可以使用时间戳+随机数等方法生成20位以内的整形,例如用户表的用户ID,一对多的表可以使用自增,例如用户关注表
(4) 数据字典表,公共表,可以使用固定长度的字母+自增,例如char(6),st0001,或者固定长度的自增补零,例如int(5),00001
2、NULL
NULL确实会对索引有影响,在MyISAM中甚至还可能导致固定大小的索引(例如只有一个整数列的索引)变成可变大小的索引。把NULL变为NOT NULL带来的性能提升不大,所以调优时没有必要把这里视为“主要矛盾”。当然能避免尽量避免。


四、DB操作和管理

1、任何DDL、DML语句都需要经过统一的审查和执行,不能由开发人员单独执行
2、提供给开发人员和连接DB的用户名一定是非root的,并且一般只有CURD,避免开发人员拥有DDL权限
3、任何DB的操作需要广播相关人员,提示其及时更新

0 0
原创粉丝点击