数据库建表,几个表的字段几乎相同,有一些细微的差别该怎么建?

场景是这样的:
出库单分为配送出库、退货单、报损单,他们都是出库单,不同的地方在于,配送出库有其他销售金额,
而单据明细表中退货单和报损单有退货缘由和报损原因。
配送出库单:id 入库机构 单据状态 订单金额 销售金额 模零金额 其他金额
物资明细:id 物资id 出库部门id 单价 金额

    退货单:id   入库机构  单据状态 退货金额
    物资明细:id  物资id  出库部门id 单价 金额 退货原因


    这种情况下怎么建表,除了一张一张的建之外的方式
包含所有字段,去重,建成一张表即可,由单据状态决定订单的生命周期, 为了扩展可以建几个预留字段

可以不同类型建表,然后将表于表直接链接后使用

一种最大冗余建表:把所有的字段放一个表
一种是最小公共字段建表:公共字段建一个表,其他的分别建表

可以给表增加一些可扩展字段,比如str1 str2 num1 num2...,不同的数据可以放在这些字段里(用途各有不同)
或者使用 主键-字段名-值 的方式,

出库单分为配送出库、退货单、报损单,他们都是出库单,这种情况需要加一个 TYPE 字段区分就好了;
明细表增加 HEAD_ID ,[HEAD_TYPE ]通过 HEAD_TYPE判断订单类型 ,HEAD_TYPE 为冗余字段,如果不设计,需要关联 出库单 取 TYPE 判断订单类型

最大化字段建表,并添加拓展字段。

可以用实体类注解生成数据库,建好一个实体类复制粘贴改一部分,运行后数据库就自动建好了