• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マスタテーブル使用時のデータテーブル設計について)

マスタテーブル使用時のデータテーブル設計について

このQ&Aのポイント
  • マスタテーブル使用時のデータテーブル設計についての質問です。経験者の方のご指導をお願いします。
  • ASP.NET+SQLServerで業務用帳票アプリの開発を行っていますが、テーブルの設計手法についてアドバイスをいただきたいです。
  • 顧客マスタテーブルの設計方法についての質問です。データテーブルへの格納方法についてアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.1

データテーブルへ格納するのは(一般的には)顧客IDでしょうね(一意ですよね)。 >顧客名から顧客名(英語名)をselectした場合に、顧客名は一意でも >顧客名(英語名)が一意ではなかった場合に問題が起きます。 意味がよくわからないのですが >マスタを修正した場合には3.で過去データを >参照する時に修正後のマスタ情報が表示されてしまいます。 顧客マスタの履歴管理をおこなうのであれば、 ・顧客ID(PK) ・適用開始年月日(PK) ・適用終了年月日 ・顧客名 ・顧客名(英語名)

scottie55
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マスターテーブルからデータを取り出すには

    現在MySQLのデータベースで マスターのテーブルをつくりマスターにデータを保存し、 別のテーブルから、マスターのデータを取り出して PHPで表示させる方法を考えているのですが、どのようなやり方 があるのかまったくわかりません。 マスターテーブル id text 1  ほん 2  みかん 3  つくえ 4  でんわ 5  えんぴつ 別のテーブル id01 id02 id03 5   2   4 1   4   3 2   2   1 3   1   2 別のテーブルの1、4、3などはマスターテーブルのidと連動していて 3ならつくえ、4ならでんわとなるようにしたいです。

  • データシート上の計算について

    お世話になります。Access2002のフォームのデータシートでの計算についてご教授願います。 計算させる上での構成としましては、 1.マスターテーブルが存在し、そこにデータを格納する 2.マスターテーブルに格納するデータは別個に品目テーブルを参照して固有のIDのみをインプットさせてたい。 すなわち、品目テーブルの値(ID値、品目名、単価)が存在し、マスターテーブルに品目テーブルのIDのみを格納し、データシート上では個数を入力させると、自動的に計算させたいです。 <マスターテーブル>は、ID、M_ID、数量という構成をとり、品目テーブルは、M_ID、品目名、単価という構成をとり、M_IDでリレーションをとっています。 データシート上は、マスターテーブルのM_IDでコンボボックスをつくり、マスターテーブルのM_IDのコンボボックスは品目テーブルの品目と単価をデータで持っています。 データシート上での計算のしかたについてよろしくお願いいたします。 不明点がありましたら、補足いたします。

  • 「マスタ」と「テーブル」の違いとはなんでしょうか?

    マスタとテーブルの違いについて教えてください。 DBにおける、 「マスタ」と「テーブル」の違いはなんなのでしょうか? 両方とも「テーブル」であるのにも関わらず、 どうしてある特定の「テーブル」には「マスタ」という別名が付けられているのでしょうか? [参考サイト様] ttp://homepage1.nifty.com/silabel/it/master_table.html 下記のような概念の認識、分け方で合っていますでしょうか? ■マスタ  ・DBを使用するに当たって、主体となるテーブルがマスターである。  ・主に他のテーブルに対して、登録・参照処理が行われた場合に、   マスタと位置づけされたDBがWhere条件に入る。  ・システム上で良く使用するDBである。  これらによって「マスタ」と付けられている。 ■テーブル  ・あるDB上の用途によって、ジャンル分けされたデータが格納された情報の箱。  ・リレーショナルデータベースでは二次元の表として扱われる。    テーブルとはDB上でデータを格納する為の箱である。     「マスタ」と「テーブル」の違いについて、このような認識、分け方で合っていますでしょうか?

  • マスタテーブルの変更履歴について

    データベースについて質問させていただきます。 例えば、飲食店で発行されるレシートには以下が記載されています。 ・店舗名、電話番号、担当者名 ・購入した商品名、値段、会計 これらを後に会社の業務で画面にレシートのような情報を表示したり、データの分析に使う場合、データベースを作成すると思います。 そのデータベースとしては、 以下のようなものが必要だと、私は考えました。 ・店舗テーブル…属性:店舗コード、店名、電話番号、住所など ・従業員テーブル…属性:従業員ID、名前、所属の店舗コード ・顧客テーブル…顧客ID、顧客名、住所、電話番号 ・商品テーブル…属性:商品ID、商品名、単価 ・売上履歴テーブル…属性:購入履歴ID、商品ID、個数、購入日時、顧客ID、購入した店舗コード、従業員ID これらを踏まえて、以下の質問をさせていただきます。 ・マスタの更新や別途、変更履歴テーブルが必要なのか…商品テーブルは日々属性の情報が変更されると思います。例えば、不況によって、単価が変わるなど。これをマスタテーブルの単価だけ変更する対応だとすると、購入履歴テーブルは商品テーブルを利用するので、単価の変更前に購入した履歴も値段が変更されてしまいます。この対応策として、別途、商品マスタの履歴テーブルを作って購入日時などを元に正しい単価を判断するような感じで対応すると良いのでしょうか? ・テーブルの作成や検索の都度、毎回結合するのか…例えば、Aさんの購入履歴を画面に表示する場合、画面にAさんの名前を入力して検索ボタンを押すと、購入履歴テーブルから必要なレコードを取り出して、Aさんの購入履歴を画面に表示するイメージをしています。この際、購入履歴テーブルは、商品IDを元に商品テーブルと結合したり、他には顧客テーブルと従業員テーブルとも結合する必要があります。検索をする際は、毎回テーブル結合を行うのでしょうか?それならば、見にくいイメージがありますが、購入履歴テーブルの顧客IDを名前にしておいたり、従業員IDを従業員の名前にしておくと、テーブルの結合が必要なくて良いのではないでしょうか? 大変文章が長く、また、読みにくいもので申し訳ございません。 たくさんの回答、よろしくお願いいたします。

  • 住所のDBテーブル、マスターの構成について

    アクセスDB2013で、工事受注管理システムを作るところです。 現在、テーブルの仕様の作成をしております。 住所テーブルや、マスターを設計するところですが、工事受注時の工事する物件建物の住所登録や、協力会社登録などで登録する住所登録に使う住所の部分の設計でどのうようにしたら良いのか試行錯誤しています。 希望としては、データベースをクラウドに以降する事を想定して、データ容量を節約できるような設計にしようかと考えています。 例えば、 ◆顧客テーブル ・顧客ID ・顧客名 ・郵便番号 ・住所1 ・住所2 ・番地 ・建物名 などとするのと ◆顧客テーブル ・顧客ID ・顧客名 ・郵便番号 ・都道府県ID ・番地 ・建物名 ◆都道府県テーブル ・都道府県ID ・住所2 どちらが良いのか、または、その他の設計方法でもっと良いものがあれば、教えて頂きたいのですが。 よろしくお願いいたします。

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

  • Accessで、二つのテーブルを比べて、ダブってないデータだけ取り出すことって出来ますか?

    えーっと、Accessで入荷情報の処理ソフトを作ってます(大きくつまづくごとに質問させていただいてますがw 商品名を検索して今月の入荷数を入力・・・といった具合にデータを入力していくわけですが、毎月月末に一度だけ入力するので、同じ月に同じ商品の入荷数を二度入力するということはありません。 なので、一度入力した商品データは次に検索したときに検索にひっかからないようにしたいのですが・・・。 二つのテーブル・・・マスタテーブルと入荷情報のテーブルがあって、入荷情報テーブルに入力されている商品IDをマスタテーブルの商品IDと比べて、違うのだけ抽出、とやれば出来そうな気がするのですが・・・どうやれば良いのかさっぱり分かりません。 一応、ネットで検索かけてますが、どう検索していいやら分からず右往左往してます(汗 詳しい方、どうかご教授願いまする。

  • データ量が多すぎると、テーブルを分けたほうがいい?

    質問があるのですが、よろしくお願いします。 例えば、ミクシーで、日記機能がありますが、もしミクシーがMySQLを使っているとしたら、あの日記に書き込まれるコメントのデータはどのようにテーブルに格納されているのでしょうか?? 一つのテーブルで済まそうとするとデータがかなり膨大になって検索に時間がかかるのではないかと思うのです。 例えばid1番からid100番までの日記のコメントのデータは、nikki_comment_100_tというテーブル、id101番からid200番までの日記のコメントのデータはnikki_comment_200_tというテーブル、というように、いくつかに分割して格納してたりするのでしょうか?それとも、一つのテーブルで十分事足りるのでしょうか?? また、もし前者のように分割して分けているとしても、それは顧客が多くデータが膨大なミクシーのような大規模なサイトならではのことで、これから人を集めようとしている現段階では小規模なサイトのデータベースなら、わざわざテーブルを分割してデータを格納することはない・・・とかそんな感じなのでしょうか? どなたか分かる方いらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • アクセス2007 フォームで入力したデータが検索フォームの結果に反映されません

    アクセス2007を使用しています。 今顧客のデータベースを作成しています。 新規の顧客のデータを入力し、検索して顧客データを閲覧できるようにしたいです。 以下のような構成にしてあります。 ○T顧客マスタ ○F新規入力 ○F検索 ○Q検索 新規の顧客データをフォーム【F新規入力】より入力して、入力したデータはテーブル【T顧客マスタ】に格納されます。 また、検索フォームとして顧客名や顧客住所から、該当する顧客データをあいまい検索できるような【F検索】を作成しました。(Q検索から作成) しかし、サンプルデータとしてはじめにインポートしたデータ200件は検索対象となっているのですが、【F新規入力】から入力したデータ10件は検索に引っ掛かりません。【T顧客マスタ】には格納されているのですが・・・ 当方、アクセスは初心者なので何か根本的に間違っているのかも知れませんが、どうにもこうにもわからないので質問いたしました。 質問内容がわかりづらいようでしたら申し訳ありません。都度補足いたしますのでよろしくお願いいたします。

  • ACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

    フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。 売上テーブル  ID   商品コード  日付    金額   1    G1     20080101  532153  2    G1     20080101  564281  3    G1     20080301  538123  4    J4     20080301  124531  5    J4     20080302  125483 ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型 これを使い、 フォームではまず レコードナンバーを入力画面        ↓ レコード番号を入れると、そのレコードのデーターが画面に表示され、 その画面で修正可能        ↓  保存 ボタンで保存 という流れです。 レコードナンバーはIDを使おうと思っています。 データの量が莫大な為、コンポボックスなどは使えません。 できるだけ、VBAなどは使わずに作りたいです。 よろしくお願い致します。