• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESSのテーブル設計とクエリ)

Accessテーブル設計とクエリ

このQ&Aのポイント
  • Access初心者が注文実績管理表の作成に困っています。テーブルの設計が間違っている可能性もあります。どうすれば関連付けや集計ができるでしょうか?
  • 質問内容は、商品の入力を簡略化したい、注文書のデーター格納について、発注実績の抽出方法、リレーションの状態、商品テーブルのドリルボタンのメッセージについてです。
  • 具体的な現状として、顧客テーブル、商品テーブル、注文テーブル、注文明細テーブルがあり、それぞれの関連やデーターの集計方法がわかりません。

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

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

一般的には、 【A】顧客テーブル 主キー(1)顧客ID(オートナンバー・・・長整数型) (2)氏名(テキスト型) ※同一顧客で複数の発注を受けたら同じ顧客IDを使うように考えます。 (発注コードは入れるべきでない) 【B】商品テーブル 主キー(1)商品ID(オートナンバー・・・長整数型) (2)品名(テキスト型) (3)単価(通貨型)・・・定価があるなら設ける。 ※同一商品で複数の発注を受けたら同じ商品IDを使うように考えます。 (注文番号は入れるべきでない) 【C】注文テーブル 主キー(1)注文ID(オートナンバー・・・長整数型) (2)日付 (3)発注コード(テキスト型)        ※発注コードは『英数字』のためテキスト型。リンク元も『テキスト型』 (4)顧客ID・・・顧客との紐付けはこの項目で行う。 【D】注文明細テーブル(注文番号は全て4ケタの数字です。重複Noはありません)  主キー(1)注文明細ID(オートナンバー型・・・長整数型)  (2)注文ID(長整数型) または  (1)注文ID(長整数型) (2)枝番・・・1から連番 主キーは(1)と(2)のセット (3)注文番号(数値型・・・長整数型) (4)商品ID (5)数量(注文番号1) (6)単価(通貨型)・・・商品マスタの単価はいつでも同じではないので、注文と一致しないことあり。 金額は、数量×単価で求めるか、別途(7)金額を設けるか。 (金額設定の仕方によりけりで、3本1000円とかがあるなら、(7)金額も必要。) 注文明細テーブルは、「ひとり最大50個の商品を一枚の注文書で発注します」に対応して、 1枚の注文書で、最大50レコード作ります。 リレーション 【A】(1)-【C】(4) 【B】(1)-【D】(4) 【C】(1)-【D】(1)か(2) というふうにしますが。 (まずは、何でこういう設計にするのか、現状との違いから話をしていったほうが  いいのかなと思います。  ⇒現状のほうがいいというのなら、それで話を進めてもいいのですが、   後の実績抽出は処理が面倒になると思っておいてください。)

kujira_444
質問者

お礼

大変ご丁寧な回答をありがとうございました。誰でも発注業務をできるように、発注コードと注文番号で発注書を起こせるようにエクセルで、ベースを設計しました。 また将来的には発注カテゴリー(発注書の種別)は3つあります。四ケタの数字で1000~1999まではAという注文書。2000~2999はBという注文書。それいがいの数字3000~9999まではCという注文書に自動的に情報が流れるよう、アクセスで設計したいと考えております。 良い形にしたいのでまずは、実績処理の仕組みをご教授いただけると助かります。大きなフレームで考えて次につなげていきたいと思います。

kujira_444
質問者

補足

さっそくのご回答ありがとうございます。 通常のテーブルの設計方法について大変参考になりました。ありがとうございます。 なぜ、今回このような設計にしたのかを補足したいと思います。 ■顧客テーブルに発注コードを入れていた理由の説明 ベースにしてたのはエクセルの発注書です。顧客は固定なので、発注業務を迅速におこなう為に「英数字」の会員番号をVLOOKUP関数を使い名前と商品の手配方法を、別のシートから参照させていました。※現時点での顧客というのは、当社の社員になります。所属グループが複数あり既存のコードを使わないと運用ができない母体があったため、『A101』とか『B101』という会員番号を使わざる得ない理由になっています。 ■商品テーブルと注文テーブルと注文番号をいれていた理由 これも同じくエクセルの商品テーブルに、4ケタの発注番号を重複しないように設けて、 別の注文書に数字を入力するだけで、商品名と商品名詳細が表示されるようVLOOKUP関数で参照するために設定していました。 まずは回答者様のやりかたを実直に行い、アクセスの理解を深め、考察しようと思います。 できれば、今のエクセルのデーターをインポートするだけで実績処理できるような形をイメージしていましたので、そのような方法ができるのであれば、ご教授くださると大変ありがたいです。

関連するQ&A