皆様こんにちは、失礼致します。
現在、ASP.NET+SQLServerで業務用帳票アプリの開発を行っています。
DBを使用した開発は初めてで、テーブルの設計手法について
経験者様のご指導を頂きたく、宜しくお願い致します。
まず、マスタテーブルは以下とします。
【顧客マスタテーブル】
・顧客マスタID
・顧客名
・顧客名(英語名)
帳票データ入力画面で、顧客マスタ検索ボタンから別画面を起動し、
そこで選択した顧客名を帳票データ入力画面に反映させます。
そして、帳票データ入力画面のデータをデータテーブルへ格納する
のですが、その際には顧客名そのものか、マスタIDのどちらを
格納するのが好ましいのでしょうか?
要件としては以下を満たす必要があります。
1.帳票データ入力画面で格納したデータは
別の帳票データ入力画面でも使い回す。
2.帳票印刷時にのみ、顧客名を対応する顧客名(英語名)で
出力する。
3.データテーブルに格納されたデータは後々参照して使い回す。
顧客名で格納しておけば使い回しは楽ですが、2.のケースで
顧客名から顧客名(英語名)をselectした場合に、顧客名は一意でも
顧客名(英語名)が一意ではなかった場合に問題が起きます。
マスタIDで格納しておけば、対応する顧客名(英語名)は検索
できますが、マスタを修正した場合には3.で過去データを
参照する時に修正後のマスタ情報が表示されてしまいます。
結論としましては、両方とも格納しておくのが好ましいのでは、
と考えておりますが、メンテナンス性の観点から、データテーブルの
カラム数はできるだけ少なくしたいとも考えております。
周囲に経験者がいなくて困っております。
ご指導頂けますと幸いです。
以上、宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
データテーブルへ格納するのは(一般的には)顧客IDでしょうね(一意ですよね)。
>顧客名から顧客名(英語名)をselectした場合に、顧客名は一意でも
>顧客名(英語名)が一意ではなかった場合に問題が起きます。
意味がよくわからないのですが
>マスタを修正した場合には3.で過去データを
>参照する時に修正後のマスタ情報が表示されてしまいます。
顧客マスタの履歴管理をおこなうのであれば、
・顧客ID(PK)
・適用開始年月日(PK)
・適用終了年月日
・顧客名
・顧客名(英語名)
dda167様、ご回答頂きましてありがとうございました。
マスタIDを格納するのが一般的なんですね。
マスタに適用開始、終了年月日フィールドを
加えて履歴管理を行うという手法までご教示
頂きまして、勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスで新規登録する場合
-
Access 縦(行)のデータを横(列)...
-
別のDBからテーブルをコピーす...
-
ワードでの単純作業の効率化に...
-
データベースの1要素に複数デー...
-
accsessで顧客コードで氏名を呼...
-
Accessで移動累計
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Access テキスト型に対する指定...
-
Accessでテーブル名やクエリ名...
-
FROM の中で CASE を使えるでし...
-
INSERT INTO ステートメントに...
-
セルの右クリックで出る項目を...
-
変数が選択リストにありません
-
Oracle 2つのDate型の値の差を...
-
必須入力項目と入力必須項目
-
Accessのクエリでデータの入力...
-
accessのレポートで元になるテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access フォームのデータがテー...
-
Access IF文でテーブルに存在し...
-
Access VBAでクエリーのレコー...
-
ワードでの単純作業の効率化に...
-
ACCESS で マクロの中でフィ...
-
データベースの1要素に複数デー...
-
顧客IDを入力すると顧客名や住...
-
Accessで名寄せグループの関係...
-
別のDBからテーブルをコピーす...
-
シングルクォーテーションとダ...
-
Access 縦(行)のデータを横(列)...
-
Accessデータベースで行と列を...
-
ワードで保存するファイル名の...
-
Access 既に開いているフォー...
-
ADOでレコードを閉じるタイミン...
-
Access クロス集計クエリについて
-
ACCESS2003 Aアクロバットを介...
-
Access レコードロックについて...
-
Access2000 単票フォーム上の...
-
ファイルメーカーの集計につい...
おすすめ情報