• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access リレーションとデータの参照について)

アクセスリレーションとデータの参照について

このQ&Aのポイント
  • アクセスとエクセルマクロの入門書を読み終えたレベルで、注文実績管理をするためにアクセスの構築をしていますが、困っています。
  • 注文テーブルにある「注文番号」と「数量」と「日付」を用いて期間中の発注実績の集計をしたいと考えていますが、関連付けができません。
  • 顧客テーブル、商品テーブル、注文テーブルのデータを統合するために、発注コードを使用したリレーションシップの設定をしたいです。

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

  • ベストアンサー
回答No.2

>【A】顧客テーブルは (2)の発注コードが主キー >【C】注文テーブルは、(1)のID(オートナンバー)が主キーです。 これはOKです。ただし、注文テーブルのID は 注文ID というように内容が分かる名前に変更しましょう。 >【B】商品テーブルは、(1)のID(オートナンバー)が主キー これは、ID を主キーにするなら、リンク先も ID(長整数型)にする必要があります。 注文番号をリンク先に格納したいのなら、「注文番号」を主キーにする必要があります。 注文テーブルは、下記のように2つに分割してください。 【C】注文テーブル    (1)注文ID(オートナンバー)    (2)発注コード    (3)日付    (4)氏名 ←この氏名が顧客テーブルの氏名ならば、このフィールドは不必要          担当者とか別の内容のデータならOK、その場合は意味を表すフィールド名に変更したほうがよい。 【D】注文明細テーブル    (1)注文明細ID(オートナンバー型)    (2)注文ID(長整数型)    (3)注文番号  ←商品テーブルの主キーが「注文番号」の場合    (4)数量

kujira_444
質問者

お礼

ご回答くださいましてありがとうございます。 私の理解が不足しているせいかまだ解決に至っておりません。 下記にて、より具体的な質問を改めて用意いたしました。 アドバイス頂けると幸いです。 http://oshiete.goo.ne.jp/qa/8102190.html

その他の回答 (1)

回答No.1

テーブル設計が間違っています。 データペースのテーブル設計にはセオリーがあり、それは「正規化」と言われてます。 とりあえずWEBで「正規化」をキーワードで検索してどのようなものなのか大まかに理解しましょう。 あと、テーブルには、主キーが原則として必須になります。 現状のテーブルの主キーは何になっているのか明確にしてください。 例えば、顧客テーブルの「発注コード」、これは、重複がなく主キーになっていますか。 これでリレーションシップを設定するには主キーにする必要があります。 商品テーブル の「注文番号」、これも主キーになってますか。同じく主キーにしないとリレーションシップは設定出来ません。 注文テーブルは「正規化」できてません。正規化するには、注文テーブル、注文明細テーブル と2つに分ける必要があります。これについては、上記の主キーに設定を聞いてからになりますね。

kujira_444
質問者

お礼

ご丁寧な回答をありがとうございました。

kujira_444
質問者

補足

早速の回答ありがとうございます。 正規化については、本日、よく調べて理解を深めようと思います。 さて、主キーの設定についてですが、以下の通りになっています。 【A】顧客テーブルは (2)の発注コードが主キー 【B】商品テーブルは、(1)のID(オートナンバー)が主キー 【C】注文テーブルは、(1)のID(オートナンバー)が主キーです。 現在、【A】の顧客テーブルの主キーを設定している発注コードと【C】の注文テーブルの 発注コードをリレーションしています。参照整合性はできていません。 【B】の商品テーブルもリレーションをとり、商品テーブルにある商品番号だけ入力することにより、 商品名と金額を入力しなくてもいいような形にしたいのですが、お手上げです。 色々試しましたが、何に紐づければ良いのか、わかりませんでした。 商品だけで300アイテムもあるので、都度リストを見ながら商品名と金額を入力するのは、膨大な時間を 奪われるのでなんとかしたいと思った次第です。 ちなみに【C】の注文テーブルは、いわゆる発注書で100人が一か月複数回(2~3回)使用しています。 発注書の束のようなイメージです。 回答者様がおっしゃるとおりテーブルの設計が間違っていると思います。 適正な管理をするために、色々長い時間考えておりますが、よい形にならず、相当苦しんでおります。

関連するQ&A