如何设计一张数据库表
创始人
2024-03-15 07:18:39
0

如何设计一张数据库表


1、前言

​  如何设计一张数据库表,或者说设计一张数据库表需要注意些什么,这是我最近在思考的问题,刚开始,我简单的罗列了一下注意事项:

  1. 设置合理的主键;
  2. 根据字段更改的频率程度考虑是否设置索引;
  3. 根据该张数据库表是否与其它的数据库表有联系,考虑添加外键。

​  一时间,我发现我只能想到这些:主键、索引、外键,竟觉得有些空洞,于是我便开始查阅资料…



2、经验法则

  1. 命名规范(表名、字段名、索引名 要具有规范性、易读性)

  2. 选择合适的字段类型(占用尽量少的空间,字段长度一般设置为 2^n )

    • 整数(tinyint、smallint、int、bigint)
    • 小数(尽量使用 decimal,少用 float 或 double)
    • 时间(datetime)
    • 字符串(char、varchar、text、longtext)
  3. 合理的主键(尽量与业务逻辑无关)

  4. 优先考虑逻辑删除,而不是物理删除

  5. 添加通用字段

    • id:主键(必须)
    • gmt_create:创建时间(必须)
    • gmt_modified:修改时间(必须)
    • version:版本号,用于乐观锁(非必须)
    • remark:数据记录备注(非必须)
    • creator:创建人(非必须)
    • modified_by:修改人(非必须)
  6. 单表字段数量不宜过多(一般不超过 20 个)

  7. 尽量使用 not null 定义字段

  8. 合理添加索引(单表索引数量一般不超过 5 个)

  9. 不需要严格遵守 3NF(数据库三范式),字段合理冗余

    • 第一范式:对属性的原子性,要求属性具有原子性,不可再分解;
    • 第二范式:对记录的唯一性,要求记录有唯一标识,即实体的唯一性,不存在部分依赖;
    • 第三范式:对字段的冗余性,要求任何字段不能由其它字段派生出来,即字段无冗余,不存在传递依赖。
  10. 避免使用 MySQL 保留字(select、insert…)

  11. 尽量不使用外键关联(一般通过业务逻辑保证关联)

  12. 尽量使用 InnoDB 存储引擎

  13. 选择合适的字符集(utf8、utf8mb4、GBK、latin1)

  14. 字段尽量添加注释

相关内容

热门资讯

原创 红... 当今国际局势愈发复杂,俄乌战场的战火依旧纷飞,近期红军城的激烈攻防战中,一则异常动向引发国际关注——...
多里安·芬尼-史密斯助阵火箭圣... 圣诞节总是NBA赛程中备受瞩目的日子,而今年的圣诞大战,休斯顿火箭队和洛杉矶湖人队的对决无疑成为了焦...
卧室门一关,湿被子一堵!七旬夫... 深夜熟睡中 刺鼻的浓烟突然涌入卧室 客厅已是一片火海 这样的绝境下 两位七旬老人居然可以冷静应对 成...
原创 新... 中期选举临近,共和党选票落后一大步,留给特朗普的时间已经不多了。谁料,对华关税井沦为“选举筹码”,那...
广州市委常委、常务副市长、黄埔... 12月26日,南方+客户端发布消息称,近日,广东省委决定:陈杰同志任江门市委委员、常委、书记;陈岸明...
施工栈桥未设安全围挡致汽车坠河... 极目新闻记者 邓波 据新华社报道,12月13日下午,位于广东江门鹤山市的南新高速西江特大桥施工栈桥发...
犇星新材闯关北交所!期内毛利率... 12月25日,湖北犇星新材料股份有限公司(简称“犇星新材”)在北交所披露招股书。 资料显示,犇星新材...
毕节首部营商环境法规即将实施 ... 12月25日,毕节市政府新闻办举行新闻发布会,对《毕节市优化营商环境条例》进行宣传解读。该《条例》是...
情侣海外旅行时当地“结婚”,婚... 一趟浪漫之旅,一纸境外婚书,让情侣二人归国后成为“已婚”人士。境外婚姻登记在国内“有效”吗?现双方产...
原创 没... 新账旧账一起算,高市早苗万万没有想到,经济受创的日本,如今又可能面临支付数亿元的账单。日韩之间的历史...