Mysql设计规范

Mysql设计规范

数据库命名规范

  • 采取24个英文字母**(区分大小写)**和0-9的自然数(很少)和下划线_组成
  • 命名简洁明了(不能超过30字符)
  • 备份数据库可以加标识 如user_db_20200724

数据库表名命名规范

  • 采取24个英文字母**(区分大小写)**和0-9的自然数(很少)和下划线_组成
  • 命名简洁明了,多个单词以下划线隔开 user_login

数据库字段名命名规范

  • 采取24个英文字母**(不区分大小写)**和0-9的自然数(很少)和下划线_组成
  • 命名简洁明了,多个单词以下划线隔开 user_login
  • 每个表必须要自增主键,插入数据的记录时间add_time

数据库表字段类型规范

  • 用尽量少的存储空间来存储数据

  • 能用int就不用varchar、char,能用varchar(16)就不用varchar(256)

  • IP地址最好用int类型

  • 固定长度的类型最好用char 如邮编

  • 能用tinyint就不用smallint,int

  • 最好给每个字段一个默认值,最好不能为null(null字段很难查询优化、null字段的索引需要额外空间,null字段的复合索引无效)

  • 少用text,能用varchar就用varchar

数据库表索引规范

  • 命名简介明确,如:user_login表user_name字段的索引应为user_name_index为唯一索引

  • 为每个表建一个主键索引

  • 为每个表建立合理的索引

  • 建立复合索引需谨慎

    • 合理利用索引(改善查询,但降低修改效率,索引不是越多越好)

    • 字段字符必须建前缀索引

    • 不在索引做列运算

    • InnoDB主键推荐使用自增列(主键建立聚簇索引,主键不应该被修改,字符串不应该做主键)

    • 不用外键(由程序保证约束)

三大范式

范式:设计数据库时,需要遵循的一些规范.
各种规范呈递次规范,且后一级的范式都符合前一级的范式,越高的范式数据库冗余(重复度)越小.
要遵循后面的范式,必须也同时遵循前面的范式.
六种范式:

第一范式(1NF)

每一列都是不可分割的原子数据项

image-20200724150714315

这个图显示可以分割的列

image-20200724150801235

这个才符合第一范式

第一范式的问题:

  • 冗余特别多
  • 删除数据会导致附属信息也被删除(如学生毕业对应的系信息消失)
  • 如果只添加系这样的数据不合法
第二范式(2NF)

把表拆分,删去冗余数据。

原本:

image-20200724150801235

拆分后:

image-20200724153730826

第二范式解决了数据冗余的问题

第三范式(3NF)

在第二范式的基础上,消除了所有的传递依赖

解决了数据添加和删除不合法的问题.

image-20200724154238785

  • 三大范式解决了数据添加不合法的问题

巴斯-科德范式(BCNF)
第四范式(4NF)
第五范式(5NF):完美范式
一般只用前三种,常用,且冗余已很小.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值