可扩展性表设计方案

1 使用预留字段

在表设计初期,可以预留一些命名通用的备用字段,例如field1、field2、field3。当业务需要增加新字段时,就直接使用这些预留字段,无需修改表结构。

例如用户表预留5个扩展字段,新需求需要记录用户注册渠道,可以直接使用field1存放,不影响旧数据和业务。

  • 优点:适用于需求变化较小、对表结构影响较小的场景。可以将部分非关键数据放在预留字段,实现轻量级扩展。
  • 缺点:备用字段数量的选择,备用字段在备用时的格式设置,这些选择都是在设置备用字段时需要考量的因素,且备用字段的设置不一定能很好的满足后期的扩展需要。

2 使用JSON字段

JSON支持内嵌文档格式,可在一个字段存储更多结构化信息。当需要新增属性时,直接在JSON字段加入新属性即可,不影响旧数据。

  • 优点:适用于需要存储结构化扩展信息的场景。可在JSON中嵌套存储对象或数组,扩展灵活。
  • 缺点:以JSON格式进行存储,数据特征不明显,数据库层面对数据格式的限制缺失,对数据存储的规范不能很好做出制定。

3 使用单表继承

在需要扩展时创建新表继承父表,同时加入特有字段。在查询时通过多表合并实现表的可扩展性。

MySql在设计实现继承关系时,在每个子表中设计一个指向父表的外键,使子表和父表之间产生一种“is-a”的关系。

  • 优点:适用于同主题的类似数据类型,需要区分但相关度很高的不同业务表。通过继承关系可以有效的减少冗余度。

4 构建属性表

设置主表和属性表,在属性表中通过主表类型+属性名作为联合主键,通过key字段和value字段存储主表之中的扩展信息,扩展新属性通过增加属性表记录即可实现扩展,不影响主表的使用。

  • 优点:适用于主体部分和扩展属性松耦合的场景。通过主表存储强耦合主体,属性表存储可扩展信息,解耦扩展属性的影响。

5 直接构建新表

直接构建新表,旧表数据通过脚本或触发器的方式写入新表中。在升级过程中,旧功能可通过触发器写入新表,新功能直接写入新表的方式完成平滑升级。

  • 优点:适用于对旧表影响太大、需要全新表结构的场景。通过触发器等继承旧数据,实现平滑衔接。

6 适当冗余

在数据库表设计时,根据需求场景和经验进行适当的冗余性设置,满足日后的扩展字段构建需要。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北溪入江流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值