我目前正在处理一个项目。现在出现的问题是,我必须处理数据库表中的动态列。
我有一张表Charges
,其中将存储与每个Client
对应的不同费用金额。假设此表包含以下列 -
Client_Id Charge_1 Charge_2 Charge_3 Charge_4
现在,管理员可以为客户端应用更多new Charges
。在这种情况下,新费用将作为Charges
添加到column
表格中。这需要在应用程序运行时处理,而不是在数据库设计时。这是我的想法。
但是,它看起来不适合我。
有没有更好的办法处理这个问题?请建议我。
提前致谢。我是这个数据库设计的新手。
答案 0 :(得分: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)
然后在ClientId和ChargeId字段上添加外键约束。
答案 1 :(得分:5)
听起来你真正想要的是1对多的表关系。
您要做的是创建一个包含两列Client_id和charge的表,然后为每次充电添加一个新行。
我不清楚你打算如何使用它。这些“收费”是个别交易吗?或者他们收取与客户相关的收费类型?无论如何,修改这样的数据模型是不好的形式。
当你有这些重复的字段时,只需将它们作为自己的表。