网站设计接单,wordpress死链删除,如何注册营业执照,python在线编程题库文章目录 以公司表模版为基础#xff0c;确定表名#xff0c;固定字段不要给字段或者表设置字符集用业务主键还是自增主键创建时间#xff0c;更新时间要不要使用数据库默认的时间 表弟能问出这个问题#xff0c;表哥是吃惊又欣慰。吃惊是年纪轻轻的小伙子竟然知道设计表的… 文章目录 以公司表模版为基础确定表名固定字段不要给字段或者表设置字符集用业务主键还是自增主键创建时间更新时间要不要使用数据库默认的时间 表弟能问出这个问题表哥是吃惊又欣慰。吃惊是年纪轻轻的小伙子竟然知道设计表的重要性还知道来问表哥欣慰的是表弟一直在思考一直在进步 先说说为什么设计表很重要抽象这两个字经常出现在招聘的JD里比如具备抽象能力实际开发中我们也会听到领导说要设计要抽象要不以后开发成本很高。而抽象后的映射到数据存储方面就是数据库表的设计因此从表的设计里就可以看出来一个程序员对于当前业务的理解深度如何抽象能力如何。接下来就来介绍设计一个表的思路
以公司表模版为基础确定表名固定字段
实际开发中不要自己随便定义表字段名称等可以先看看其他表是否有共同点或者问leader有没有建表规范。 比如下面就是一个模版模版中有几个注意点
表名字段名字段类型全小写其余大写每个字段都要有注释自增主键业务主键创建时间更新时间逻辑删除为固定字段每个表都有且字段名一致
CREATE TABLE xx_xx_xx (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 自增主键,xx_xx_xx_id bigint(20) NOT NULL COMMENT 业务主键,xxx_xxx varchar(32) NOT NULL COMMENT 业务字段注释,create_time datetime NOT NULL COMMENT 创建时间,update_time datetime NOT NULL COMMENT 更新时间,is_delete bigint(1) NOT NULL DEFAULT 0 COMMENT 逻辑删除标记0-未删除1-删除,PRIMARY KEY (id),INDEX(xxx_xxx)
) COMMENTxxx表;不要给字段或者表设置字符集
一般来说变更数据库的SQL都会像代码一样提交到一个地方进行管理。统一管理的好处是可以溯源迁移数据库时比较快假设公司数据库要用阿里云产品切换到腾讯云产品此时我们只要把同一管理的SQL执行一遍即可。
此时如果给每个字符集设置了字符集可能就会导致一个同样的建表SQL在阿里云执行成功在腾讯云执行失败如果表多会增加很多工作量。
偷偷告诉你不设置字符集默认都是UTF-8这是所有都支持的。
用业务主键还是自增主键
这个取决于表的业务表是否需要和其他表关联比如商品SPU表跟SKU表最好定义业务主键。如果不定义业务主键那么在sku表里关联spu时就没有什么业务含义。另外电商中常见的订单表订单号中一般会包含下单的时间这便于查看看到订单号就知道是什么时候的订单不需要查询数据库。
那么什么时候可以不用定义业务主键用自增主键。假设场景是记录用户每天第一次登录的时间此时这个记录表结构单一只与用户表有关联关系与其他表都没关系此时可以不定义业务主键。
总之我觉得大部分情况下还是考虑业务场景其实大部分公司的数据量都没有到要考虑性能的地步一个字段的写入并不会影响太多的性能。
创建时间更新时间要不要使用数据库默认的时间
这类时间是可以考虑使用的好处有以下几点
自动时间戳不需要在代码中写入时间减少出错可以当作默认时间保证正确
当然有一些特殊场景建议不要用默认时间函数
时间需要修改计算服务器涉及多个时区