应用程序添加新列时的数据库设计问题

5

我目前正在处理一个项目。现在出现的问题是,我必须处理数据库表中的动态列。

我有一个名为Charges的表,其中将存储与每个Client对应的不同费用的金额。假设此表具有以下列-

Client_Id     Charge_1     Charge_2     Charge_3     Charge_4

现在,管理员可以为客户申请更多的新费用。在这种情况下,新的收费将作为添加到收费表中。而且这需要在应用程序运行时处理,而不是在数据库设计时处理。这是我的想法。
但是,对我来说看起来并不合适。
有没有更好的处理此问题的想法?请给我建议。
提前感谢您,并且我对这个数据库设计还很陌生。
2个回答

7

创建一个组合表,即ClientCharges

您可以保留原始的Charges表和Client表,在ClientCharges表中添加以下列:

ClientChargeId,ClientId,ChargeId

在Charges表中,您可以继续添加(根据需要添加多个Charges),然后在ClientCharges表中引用ChargeId。

CREATE TABLE ClientCharges
(
    ClientChargeId          INT IDENTITY(1,1)
    , ClientId              INT 
    , ChargeId              INT
)


INSERT INTO ClientCharges
(ClientId, ChargeId)
VALUES
(1, 1),
(1,2),
(1,3),
(1,4),
(2,1),
(3,1),
(3,2),
(4,3),
(4,4)
  • 客户1拥有收费1、2、3和4
  • 客户2只有收费1
  • 客户3拥有收费1和2
  • 客户4拥有收费3和4

然后在ClientId和ChargeId字段上添加外键约束。


5
似乎您真正需要的是1对多的表关系。您需要创建一个包含两列(Client_id和charge)的表,然后为每个费用添加一行。不清楚您打算如何使用它。这些“费用”是单独的交易吗?还是与客户相关的费用类型?无论如何,修改数据模型都是不好的做法。当您有这些重复字段时,只需将它们单独作为一个表即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接