5

私は現在、プロジェクトに取り組んでいます。ここで問題が発生します。データベース テーブルの動的列を処理する必要があります。

私は、Chargesそれぞれに対応する異なる料金の量Clientが格納されるテーブルを持っています。このテーブルに次の列があるとします-

Client_Id     Charge_1     Charge_2     Charge_3     Charge_4

これで、管理者はnew Chargesクライアントにさらに適用できます。その場合、新しい料金がChargesとしてテーブルに追加されますcolumn。これは、データベースの設計時ではなく、アプリケーションの実行時に処理する必要があります。これが私の考えです。

でも、私には似合いそうにありません。

この問題を処理するためのより良いアイデアはありますか?? 私に提案してください。

前もって感謝します。そして、私はこのデータベース設計に不慣れです。

4

2 に答える 2

7

複合テーブルを作成します。つまり、ClientCharges

元の Charges テーブルと Client テーブルを保持でき、Client Charges テーブルには次の列があります。

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 フィールドに外部キー制約を追加します。

于 2012-04-30T21:49:40.297 に答える
5

あなたが本当に望んでいるのは、1対多のテーブル関係であるように思えます。

Client_id と charge の 2 つの列を含むテーブルを作成し、各課金に対して新しい行を追加します。

これをどのように使用するつもりなのか、私には明らかではありません。これらの「料金」は個別の取引ですか?それとも、クライアントに関連付けられた料金タイプですか? いずれにしても、このようにデータ モデルを変更するのは良くありません。

このような繰り返しフィールドがある場合は、それらを独自のテーブルにします。

于 2012-04-30T22:09:26.993 に答える