概述
如何设计一张数据库表
1、前言
如何设计一张数据库表,或者说设计一张数据库表需要注意些什么,这是我最近在思考的问题,刚开始,我简单的罗列了一下注意事项:
- 设置合理的主键;
- 根据字段更改的频率程度考虑是否设置索引;
- 根据该张数据库表是否与其它的数据库表有联系,考虑添加外键。
一时间,我发现我只能想到这些:主键、索引、外键,竟觉得有些空洞,于是我便开始查阅资料…
2、经验法则
-
命名规范(表名、字段名、索引名 要具有规范性、易读性)
-
选择合适的字段类型(占用尽量少的空间,字段长度一般设置为 2^n )
- 整数(tinyint、smallint、int、bigint)
- 小数(尽量使用 decimal,少用 float 或 double)
- 时间(datetime)
- 字符串(char、varchar、text、longtext)
-
合理的主键(尽量与业务逻辑无关)
-
优先考虑逻辑删除,而不是物理删除
-
添加通用字段
- id:主键(必须)
- gmt_create:创建时间(必须)
- gmt_modified:修改时间(必须)
- version:版本号,用于乐观锁(非必须)
- remark:数据记录备注(非必须)
- creator:创建人(非必须)
- modified_by:修改人(非必须)
-
单表字段数量不宜过多(一般不超过 20 个)
-
尽量使用 not null 定义字段
-
合理添加索引(单表索引数量一般不超过 5 个)
-
不需要严格遵守 3NF(数据库三范式),字段合理冗余
- 第一范式:对属性的原子性,要求属性具有原子性,不可再分解;
- 第二范式:对记录的唯一性,要求记录有唯一标识,即实体的唯一性,不存在部分依赖;
- 第三范式:对字段的冗余性,要求任何字段不能由其它字段派生出来,即字段无冗余,不存在传递依赖。
-
避免使用 MySQL 保留字(select、insert…)
-
尽量不使用外键关联(一般通过业务逻辑保证关联)
-
尽量使用 InnoDB 存储引擎
-
选择合适的字符集(utf8、utf8mb4、GBK、latin1)
-
字段尽量添加注释
最后
以上就是害怕钢笔为你收集整理的如何设计一张数据库表的全部内容,希望文章能够帮你解决如何设计一张数据库表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复