爬虫之MySQL数据库使用规范

爬虫之MySQL数据库使用规范

一.定义规范

  • 1.库名、表名、字段名使用小写字母(最好是英文),用_做分割。
  • 2.库名、表名、字段名要有中文注释,方便理解。
  • 3.库名、表名、字段名见名知意,建议使用名词而不是动词。
  • 4.表必须要有主键,最好符合三范式建表。
  • 5.存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。
  • 6.临时表用tmp开头,线下表爬虫表用ods_crawl开头,比喻爬航班用ods_crawl_flight,爬阿里巴巴用ods_crawl_alibaba。
  • 7.整形定义中不添加长度,比如使用INT,而不是INT(4)。
  • 8.尽可能不使用TEXT、BLOB类型。
  • 9.建表三范式:
    1NF:一个table中的列是不可再分的(即列的原子性)
    2NF:一个table中的行是可以唯一标示的,(即table中的行是不可以有重复的)
    3NF:一个table中列不依赖以另一个table中的非主键的列!

二.存储规范

  • 1.VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择N。

  • 2.VARCHAR(N),N尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。

  • 3.表字符集选择UTF8,防止数据乱码。

  • 4.存储年月使用int类型。

  • 5.存储日期使用DATE类型。

  • 6.存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节。

三.遇到的问题

1.timestamp

  • 从MySQL5.7开始使用严格模式,当一张表的定义有多个timestamp字段时,第二个字段会默认为 ’0000-00-00 00:00:00‘格式,但是该模式下不允许使用这种格式的时间,因此会出现以下报错:

    Invalid default value for 'timestamp'
    
  • 解决办法: 输入MySQL命令:

    SET GLOBAL sql_mode = ''; 
    

本文地址:https://blog.csdn.net/qq_38967004/article/details/107141030

THE END
喜欢就支持一下吧
点赞12 分享