博客
关于我
MYSQL数据库设计规范与原则
阅读量:370 次
发布时间:2019-03-04

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

MySQL 数据库设计规范

数据库命名规范

数据库命名应遵循以下规则:

  • 数据库命名:采用26个英文字母(区分大小写)和0-9的自然数组成,方便管理和维护。建议使用简洁明确的命名,避免使用过长的命名。

  • 数据库命名示例

    • user
    • stat
    • log
    • wifi_user
    • wifi_stat
    • wifi_log
  • 注意事项:在备份数据库时,可在前缀中添加0-9的自然数,例如:user_db_20151210


    数据库表命名规范

  • 表名命名:同样遵循26个英文字母和0-9的自然数组成,多个单词用下划线_分隔。

  • 表名示例

    • user_login
    • user_profile
    • user_detail
    • user_role
    • user_role_relation
    • user_role_right
    • user_role_right_relation
  • 注意事项:表前缀user_可用于将相同关系的表统一展示,例如user_loginuser_profile


    数据库表字段命名规范

  • 字段命名:同样遵循26个英文字母和0-9的自然数组成,多个单词用下划线_分隔。

  • 字段命名示例

    • user_id
    • user_name
    • pass_word
    • email
    • ticket
    • status
    • mobile
    • add_time
  • 注意事项

    • 每个表必须包含自增主键id,默认字段add_time为系统时间。
    • 表与表之间的相关字段名称应尽可能相同,便于数据关联和查询。

    数据库表字段类型规范

  • 类型选择:尽量减少字段数据存储空间。

    • 使用int类型替代varcharchar,除非字段长度固定。
    • IP地址最好使用int类型。
    • 固定长度字段(如邮编)建议使用char类型。
    • 避免使用tinyintsmallint等过长类型。
    • 每个字段建议设置默认值,避免NULL值。
  • 类型示例

    • user_idint类型,设置为自增主键。
    • user_namevarchar(255)类型。
    • emailvarchar(320)类型。

  • 数据库表索引规范

  • 索引命名:命名简洁明确,例如user_name_index

  • 索引创建

    • 每个表必须创建主键索引。
    • 合理创建其他索引,避免过多索引导致性能下降。
    • 复合索引需谨慎设计,避免过度复杂。
  • 索引注意事项

    • 字符字段必须创建前缀索引。
    • 索引不应用于列运算或复杂逻辑。
    • InnoDB中,主键推荐使用自增列,并建立聚簇索引。

  • 数据库范式规范

  • 第一范式(1NF)

    • 字段值具有原子性,不能再分。
    • 例如:姓和名不能分开列,如果区分姓和名,则需两个字段。
  • 第二范式(2NF)

    • 每个表必须有主键,确保记录唯一性。
    • 必须满足第一范式。
  • 第三范式(3NF)

    • 表中不能包含其他相关表中非关键字段的信息。
    • 必须满足第二范式。
  • 注意事项:在实际设计中,常常会降低范式标准以提高性能,例如在相册表中添加点击数字段。


    数据库设计原则

  • 核心原则

    • 避免在数据库中执行复杂逻辑,尽量将计算逻辑移至业务层。
    • 控制字段数量,建议在20个以内。
    • 平衡范式与冗余,优先考虑性能,适当牺牲范式。
    • 拒绝大SQL、事务和批量操作。
  • 字段类原则

    • 使用适当的数据类型,避免转换为字符类型。
    • 尽量将字符转换为数字。
    • 避免使用NULL字段,设置默认值。
    • 减少使用text类型,优先使用varchar
  • 索引类原则

    • 合理使用索引,改善查询性能。
    • 字符字段必须创建前缀索引。
    • 不在索引中执行列运算。
    • InnoDB推荐使用自增主键索引,主键不建议修改。

  • 数据库性能优化

  • SQL优化

    • 简化SQL语句,避免大SQL。
    • 使用UNION ALL替代UNION,减少资源消耗。
    • 避免使用SELECT *,优先明确字段。
    • 使用EXPLAIN工具分析查询性能。
  • 查询优化

    • 避免使用COUNT(*),改用COUNT(id)
    • 合理分页,避免使用过大的LIMIT值。
    • 优化JOIN操作,减少使用GROUP BY
  • 工具使用

    • 使用SHOW PROFILEmysqldumpslow等工具分析性能问题。
    • 定期检查SHOW SLOW LOG,找出高负载SQL。

  • 数据库设计总结

    数据库设计是系统开发的核心环节,需遵循范式规范和性能优化原则。通过合理设计表结构、字段类型和索引,确保数据库高效稳定运行。同时,需注意数据冗余与性能之间的平衡,以适应实际业务需求。

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

    你可能感兴趣的文章
    Objective-C实现四阶龙格库塔法(附完整源码)
    查看>>
    Objective-C实现回调实例(附完整源码)
    查看>>
    Objective-C实现图-弗洛伊德FloydWarshall算法(附完整源码)
    查看>>
    Objective-C实现图书借阅系统(附完整源码)
    查看>>
    Objective-C实现图像二维熵的图像信号丢失检测(附完整源码)
    查看>>
    Objective-C实现图像去雾算法(附完整源码)
    查看>>
    Objective-C实现图像灰度变换(附完整源码)
    查看>>
    Objective-C实现图像相似度平均值哈希算法(附完整源码)
    查看>>
    Objective-C实现图像移动(附完整源码)
    查看>>
    Objective-C实现图层混合算法(附完整源码)
    查看>>
    Objective-C实现图片dilation operation扩张操作算法(附完整源码)
    查看>>
    Objective-C实现图片erosion operation侵蚀操作算法(附完整源码)
    查看>>
    Objective-C实现图片的放大缩小(附完整源码)
    查看>>
    Objective-C实现图片腐蚀(附完整源码)
    查看>>
    Objective-C实现图片膨胀(附完整源码)
    查看>>
    Objective-C实现图的邻接矩阵(附完整源码)
    查看>>
    Objective-C实现圆球的表面积和体积(附完整源码)
    查看>>
    Objective-C实现在Regex的帮助下检查字谜算法(附完整源码)
    查看>>
    Objective-C实现均值滤波(附完整源码)
    查看>>
    Objective-C实现埃拉托斯特尼筛法算法(附完整源码)
    查看>>