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

5 sql sql-server database-design sql-server-2008

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

我有一张桌子Charges,其中Client将存储与每个对应的不同费用的数量.假设该表有以下栏目 -

Client_Id     Charge_1     Charge_2     Charge_3     Charge_4
Run Code Online (Sandbox Code Playgroud)

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

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

有没有更好的办法来处理这个问题?请建议我.

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

Dar*_*ren 7

制作一个复合表,即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)
Run Code Online (Sandbox Code Playgroud)
  • 客户1具有费用1,2,3和4
  • 客户2有费用1
  • 客户3的收费标准为1和2
  • 客户4收取费用3和4

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


Eri*_*sch 5

听起来你真正想要的是1对多的表关系.

你要做的是创建一个包含两列Client_id和charge的表,然后为每次充电添加一个新行.

我不清楚你打算如何使用它.这些"收费"是个别交易吗?或者他们收取与客户相关的收费类型?无论如何,修改这样的数据模型是不好的形式.

当你有这些类型的重复字段时,只需将它们作为自己的表.