5

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

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

Client_Id     Charge_1     Charge_2     Charge_3     Charge_4

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

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

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

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

4

2 回答 2

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)
  • 客户 1 的费用为 1、2、3 和 4
  • 客户 2 有费用 1
  • 客户 3 有费用 1 和 2
  • 客户 4 有费用 3 和 4

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

于 2012-04-30T21:49:40.297 回答
5

听起来您真正想要的是一对多的表关系。

您要做的是创建一个包含两列 Client_id 和费用的表,然后为每个费用添加一个新行。

我不清楚你打算如何使用它。这些“收费”是个人交易吗?还是他们与客户相关的收费类型?无论如何,像这样修改数据模型是不好的形式。

当您拥有这些类型的重复字段时,只需将它们设为自己的表格即可。

于 2012-04-30T22:09:26.993 回答