发布时间: 阅读量

关于数据库建表的规范

由于分工原因,数据库设计是由负责数据的同事设计的,看了以后真的血压飙升
WechatIMG539.png

  • 首先表连个主键都没有,执行explain查看执行计划都看不了!
  • 数据类型能用int类型的不用,都是varchar,日期都是varchar
  • 字段命名这个不想多说了

数据库表设计规范

  1. 表名、字段名、索引名、主键名等命名应具有可读性,建议使用英文单词或缩写,避免使用中文或拼音。
  2. 表名应该使用单数形式,例如“user”而不是“users”。
  3. 字段名和索引名不要使用MySQL保留关键字,例如“select”、“update”等。
  4. 主键名应该使用“表名_id”的形式,例如“user_id”。

数据类型规范

  1. 尽量使用较小的数据类型,例如使用TINYINT代替INT,可以减少存储空间和提高查询效率。
  2. 字符串类型应该指定长度,避免使用默认长度,例如VARCHAR(50)而不是VARCHAR。
  3. 将字段设置为NOT NULL,避免出现NULL值,可以提高查询效率并保证数据的完整性。
    4.小数类型如金额,则选择 decimal,禁止使用 float 和 double。
    5.如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
  4. varchar是可变长字符串,不预先分配存储空间,长度不要超过5000。
    7.如果存储的值太大,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应。
  5. 同一表中,所有varchar字段的长度加起来,不能大于65535. 如果有这样的需求,请使用TEXT/LONGTEXT 类型
    9.尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘空间,内存和cpu缓存。

10.可以使用的几种整数类型: TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64位存储空间。尽量使用满足需求的最小数据类型

字符和字符串类型

1.char长度固定,即每条数据占用等长字节空间,最大长度是255个字符,适合用在身份证号、手机号等定长字符串
2.varchar可变程度,可以设置最大长度;最大空间是65535个字节,适合用在长度可变的属性
3.text不设置长度,当不知道属性的最大长度时,适合用text按照查询速度: char>varchar>text

datetime利timestamp

1.不要使用字符串类型来存储日期时间数据 原因日期时间类型通常比字符串占用的存储空间小
2.日期时间类型在进行查找过滤时可以利用日期来进行比对
3.日期时间类型还有着丰富的处理函数,可以方便的对时间类型进行日期计算