博客
关于我
mysql设计数据库和表的规范
阅读量:789 次
发布时间:2023-02-13

本文共 1270 字,大约阅读时间需要 4 分钟。

数据库设计指南

1. 存储引擎选择

在MySQL中,通常推荐使用InnoDB存储引擎,除非读写比率低于1%,否则可以考虑使用MyISAM存储引擎。其他存储引擎的使用需遵循DBA的建议。

2. 存储过程与函数

MySQL的存储过程和函数尚未完善,错误处理机制不够理想,因此不建议使用。

3. UUID和函数的使用

UUID()和USER()等函数在复制过程中存在风险,可能导致主备服务器数据不一致。如需使用UUID作为主键,建议由应用程序自行生成。

4. 外键约束

建议在程序层面实现外键关系,而不要在数据库层面使用外键约束。

5. 字符集设置

必须使用UTF8编码。


数据库对象设计规范

2. 数据库对象设计

2.1 表设计
  • 日期字段:设计时应包含两个日期字段crt_time(创建日期)和upd_time(修改日期),且这两个字段不能为空。在记录更新时,必须更新upd_time字段。
  • 主键:表必须有主键,建议使用自增字段类型(如INT或BIGINT)。
  • 联合字段:多表join的字段必须保持数据类型一致。
  • 表结构优化:尽量采用KV(Key-Value)结构,便于扩展和维护。
  • 表分拆:当字段数较多时,建议将表分为两张表,一张用于条件查询,另一张用于详细内容(以提升性能)。
  • 枚举型或布尔型字段:建议使用char(1)类型。
  • VARCHAR字段长度:同一表中,所有VARCHAR字段的长度总和不得超过65535。如果需要更长的字段,请使用TEXT或LONGTEXT类型。
  • 字段容余设计:在适当时可以预留字段容余空间,例如Value1、Value2、Value3等。
2.2 表命名
  • 表名命名:同一模块的表应使用相同前缀,表名应具有描述性。例如:CRM_SAL_FUND_ITEM。
  • 字段命名:字段命名应尽可能反映实际含义,使用英文单词或缩写。例如:公司ID的字段命名为corp_id,而非corporation_id。
2.3 索引设计
  • 索引命名:使用下划线分隔各单词部分,例如sample_mid_ind。
  • 多单词字段:对多单词组成的字段,取前几个单词的首字母,末单词完整拼写,例如sample_mid_ind。
2.4 约束设计
  • 主键约束:主键建议使用序列生成的无意义ID,类型为NUMBER类型,不建议使用组合主键。
  • 唯一性约束:唯一性效果可通过普通索引和约束实现,即先创建索引,再创建约束。
  • 约束删除:删除约束时,需加上keep index参数以确保不影响索引。
  • 主键不可修改:主键字段内容不可被修改。
  • 外键约束:外键约束一般不建议在数据库层面创建,应通过程序逻辑控制。如果必须使用外键,必须在外键列创建索引。
2.5 约束命名
  • 主键约束:以_pk结尾,例如user_pk。
  • 唯一性约束:以_uk结尾,例如user_uk。
  • 检查约束:以_ck结尾,例如user_ck。
  • 外键约束:以_fk结尾,例如user_fk,且外键名称应以_pri_开头,表示与主表的关系。例如:user_fk(外键)和pri_user_fk(主表的索引)。

转载地址:http://vldfk.baihongyu.com/

你可能感兴趣的文章
mysql基础教程三 —常见函数
查看>>
mysql基础教程二
查看>>
mysql基础教程四 --连接查询
查看>>
MySQL基础知识:创建MySQL数据库和表
查看>>
MySQL处理千万级数据分页查询的优化方案
查看>>
mysql备份
查看>>
mysql备份与恢复
查看>>
mysql备份工具xtrabackup
查看>>
mysql备份恢复出错_尝试备份/恢复mysql数据库时出错
查看>>
mysql复制内容到一张新表
查看>>
MySQL外键约束
查看>>
MySQL多表关联on和where速度对比实测谁更快
查看>>
MySQL多表左右连接查询
查看>>
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
查看>>
mysql如何做到存在就更新不存就插入_MySQL 索引及优化实战(二)
查看>>
mysql如何删除数据表,被关联的数据表如何删除呢
查看>>
MySQL如何实现ACID ?
查看>>
mysql如何记录数据库响应时间
查看>>
Mysql字段、索引操作
查看>>
mysql字段类型不一致导致的索引失效
查看>>