電子書籍の厳選無料作品が豊富!

皆様こんにちは、失礼致します。

現在、ASP.NET+SQLServerで業務用帳票アプリの開発を行っています。
DBを使用した開発は初めてで、テーブルの設計手法について
経験者様のご指導を頂きたく、宜しくお願い致します。

まず、マスタテーブルは以下とします。

【顧客マスタテーブル】
・顧客マスタID
・顧客名
・顧客名(英語名)

帳票データ入力画面で、顧客マスタ検索ボタンから別画面を起動し、
そこで選択した顧客名を帳票データ入力画面に反映させます。

そして、帳票データ入力画面のデータをデータテーブルへ格納する
のですが、その際には顧客名そのものか、マスタIDのどちらを
格納するのが好ましいのでしょうか?

要件としては以下を満たす必要があります。

1.帳票データ入力画面で格納したデータは
  別の帳票データ入力画面でも使い回す。

2.帳票印刷時にのみ、顧客名を対応する顧客名(英語名)で
  出力する。

3.データテーブルに格納されたデータは後々参照して使い回す。

顧客名で格納しておけば使い回しは楽ですが、2.のケースで
顧客名から顧客名(英語名)をselectした場合に、顧客名は一意でも
顧客名(英語名)が一意ではなかった場合に問題が起きます。

マスタIDで格納しておけば、対応する顧客名(英語名)は検索
できますが、マスタを修正した場合には3.で過去データを
参照する時に修正後のマスタ情報が表示されてしまいます。

結論としましては、両方とも格納しておくのが好ましいのでは、
と考えておりますが、メンテナンス性の観点から、データテーブルの
カラム数はできるだけ少なくしたいとも考えております。

周囲に経験者がいなくて困っております。
ご指導頂けますと幸いです。


以上、宜しくお願い致します。

A 回答 (1件)

データテーブルへ格納するのは(一般的には)顧客IDでしょうね(一意ですよね)。



>顧客名から顧客名(英語名)をselectした場合に、顧客名は一意でも
>顧客名(英語名)が一意ではなかった場合に問題が起きます。

意味がよくわからないのですが

>マスタを修正した場合には3.で過去データを
>参照する時に修正後のマスタ情報が表示されてしまいます。

顧客マスタの履歴管理をおこなうのであれば、

・顧客ID(PK)
・適用開始年月日(PK)
・適用終了年月日
・顧客名
・顧客名(英語名)
    • good
    • 0
この回答へのお礼

dda167様、ご回答頂きましてありがとうございました。

マスタIDを格納するのが一般的なんですね。
マスタに適用開始、終了年月日フィールドを
加えて履歴管理を行うという手法までご教示
頂きまして、勉強になりました。

ありがとうございました。

お礼日時:2009/12/07 01:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報