• 可扩展性表设计方案


    1 使用预留字段

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

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

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

    2 使用JSON字段

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

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

    3 使用单表继承

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

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

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

    4 构建属性表

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

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

    5 直接构建新表

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

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

    6 适当冗余

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

  • 相关阅读:
    网络安全(黑客)自学
    BATJ和字节跳动这些大厂的内部面试解析,面试重难点超出你的想象
    【鸿蒙软件开发】文本显示(Text/Span)
    通过串口实现printf函数,中断实现串口数据接收
    ASP.NET MVC--路由
    Android - Application
    制作一个简单HTML个人网页网页(HTML+CSS)大话西游之大圣娶亲电影网页设计
    在adapter中调用数据库,全局获取Context
    QT 5.15 Android Windows 10开发环境搭建
    【Spring高级】第3讲 Bean的生命周期
  • 原文地址:https://blog.csdn.net/qq_42482078/article/details/132901679