MySQL数据库设计表_表设计
详细准确回答,使用小标题和单元表格
1、命名规范
数据库表名、字段名、索引名等需要命名规范,可读性高,一般要求用英文,禁止使用拼音和英文缩写,主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名为idx_字段名。
2、选择合适的字段类型
数字类型从tinyint、smallint、int、bigint依次选择,小数类型如金额,则选择decimal,避免使用float和double,字符串长度几乎相等时,使用char定长字符串类型,varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储的值太大,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应,同一表中,所有varchar字段的长度加起来,不能大于65535,如果有此需求,请使用TEXT/LONGTEXT类型。
3、主键设计要合理
主键设计的话,最好不要与业务逻辑有所关联,有些业务上的字段,比如身份证,虽然是唯一的,一些开发者喜欢用它来做主键,但是不是很建议哈,主键最好是毫无意义的一串独立不重复的数字,比如UUID,又或者Auto_increment自增的主键,或者是雪花算法生成的主键等等。
4、选择合适的字段长度
varchar和char类型表示字符长度,其他类型表示字节长度,设计表时需充分考虑字段长度,如用户名字段(长度5~20个字符),建议设置为username varchar(32),字段长度一般设置为2的幂(即2的n次方)。
5、优先考虑逻辑删除,而不是物理删除
物理删除会释放存储空间,但恢复数据困难且使自增主键不再连续,逻辑删除通过添加is_deleted字段标记数据已删除,推荐逻辑删除,因为它更适合状态变更,不会破坏数据的完整性。
6、每个表都需要添加这几个通用字段
表必备字段包括:id(主键)、create_time(创建时间)、modifed_time(修改时间),非必须字段有version(用于乐观锁)、remark(备注)、modified_by(修改人)、creator(创建人)。
7、一张表的字段不宜过多
建表时,一张表的字段不宜过多,一般尽量不要超过20个字段,如果一张表的字段过多,表中保存的数据可能就会很大,查询效率就会很低,一张表不要设计太多字段哈,如果业务需求,实在需要很多字段,可以把一张大的表,拆成多张小的表,它们的主键相同即可,当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表 (主要是为了性能考虑)。
8、尽可能使用not null定义字段
如果没有特殊的理由,一般都建议将字段定义为 NOT NULL,为什么呢?NOT NULL可以防止出现空指针问题,NULL值存储也需要额外的空间的,它也会导致比较运算更为复杂,使优化器难以优化SQL,NULL值有可能会导致索引失效,如果将字段默认设置成一个空字符串或常量值并没有什么不同,且都不会影响到应用逻辑,那就可以将这个字段设置为NOT NULL。
9、设计表时,评估哪些字段需要加索引
评估你的表数据量,如果你的表数据量只有一百几十行,就没有必要加索引,否则设计表的时候,如果有查询条件的字段,一般就需要建立索引,但是索引也不能滥用:索引也不要建得太多,一般单表索引个数不要超过5个,因为创建过多的索引,会降低写得速度,区分度不高的字段,不能加索引,如性别等,索引创建完后,还是要注意避免索引失效的情况,如使用mysql的内置函数,会导致索引失效的,索引过多的话,可以通过联合索引的方式优化,然后的话,索引还有一些规则,如覆盖索引,最左匹配原则等等,假设你新建一张用户表,如下:
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1250421.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复