一尘不染

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

sql

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

我有一张表格Charges,其中Client将存储与每个表格对应的不同费用的数量。假设此表具有以下列-

Client_Id     Charge_1     Charge_2     Charge_3     Charge_4

现在,管理员可以new Charges为客户端申请更多。在这种情况下,新费用将以形式添加到Charges表格中column。这需要在应用程序运行时而不是数据库设计时处理。这是我的想法。

但是,它看起来不适合我。

有什么更好的主意来解决这个问题吗?请给我建议。

提前致谢。我是这个数据库设计的新手。


阅读 116

收藏
2021-05-23

共1个答案

一尘不染

制作一个组合表,即ClientCharges

您可以保留原始的“费用表”和“客户”表,并在“客户费用”表中保留以下列:

ClientChargeId,ClientId,ChargeId

在您的收费表中,您可以继续添加(您需要许多收费),然后在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字段上添加外键约束。

2021-05-23