プロが教える店舗&オフィスのセキュリティ対策術

パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。
只今、注文実績管理をする為にアクセスを構築していますが思うようにできません。
職場でPCの相談する相手がいないため、大変困っています。どなたかお知恵をください。

相談の内容ですが、【C】の注文テーブルにある「注文番号」と「数量」と「日付」で
期間中の発注実績の集計をしたいと考えています。
【B】と【C】がまったく関連付けることができません。


【A】顧客テーブル
   (1)ID(オートナンバー)
   (2)発注コード
   (3)氏名
    (注)顧客テーブルにある「発注コード」がローマ字と数字の組み合わせで
       、これでリレーションシップを設定したいのです。

【B】商品テーブル
   (1)ID(オートナンバー)
   (2)注文番号
   (3)品名
   (4)金額

【C】注文テーブル
   (1)ID(オートナンバー)
   (2)発注コード
   (3)日付
   (4)氏名
   (5)注文番号1
   (6)注文番号1(数量)
   (7)注文番号2
   (8)注文番号2(数量)
   (9)注文番号3
   (10)注文番号3(数量)
    ・
    ・
    ・
    注文番号50
    注文番号50(数量)

A 回答 (2件)

テーブル設計が間違っています。


データペースのテーブル設計にはセオリーがあり、それは「正規化」と言われてます。
とりあえずWEBで「正規化」をキーワードで検索してどのようなものなのか大まかに理解しましょう。

あと、テーブルには、主キーが原則として必須になります。
現状のテーブルの主キーは何になっているのか明確にしてください。

例えば、顧客テーブルの「発注コード」、これは、重複がなく主キーになっていますか。
これでリレーションシップを設定するには主キーにする必要があります。

商品テーブル の「注文番号」、これも主キーになってますか。同じく主キーにしないとリレーションシップは設定出来ません。

注文テーブルは「正規化」できてません。正規化するには、注文テーブル、注文明細テーブル と2つに分ける必要があります。これについては、上記の主キーに設定を聞いてからになりますね。

この回答への補足

早速の回答ありがとうございます。
正規化については、本日、よく調べて理解を深めようと思います。
さて、主キーの設定についてですが、以下の通りになっています。

【A】顧客テーブルは (2)の発注コードが主キー
【B】商品テーブルは、(1)のID(オートナンバー)が主キー
【C】注文テーブルは、(1)のID(オートナンバー)が主キーです。

現在、【A】の顧客テーブルの主キーを設定している発注コードと【C】の注文テーブルの
発注コードをリレーションしています。参照整合性はできていません。

【B】の商品テーブルもリレーションをとり、商品テーブルにある商品番号だけ入力することにより、
商品名と金額を入力しなくてもいいような形にしたいのですが、お手上げです。
色々試しましたが、何に紐づければ良いのか、わかりませんでした。

商品だけで300アイテムもあるので、都度リストを見ながら商品名と金額を入力するのは、膨大な時間を
奪われるのでなんとかしたいと思った次第です。

ちなみに【C】の注文テーブルは、いわゆる発注書で100人が一か月複数回(2~3回)使用しています。
発注書の束のようなイメージです。

回答者様がおっしゃるとおりテーブルの設計が間違っていると思います。
適正な管理をするために、色々長い時間考えておりますが、よい形にならず、相当苦しんでおります。

補足日時:2013/05/17 12:56
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/24 12:54

>【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)数量
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/24 00:13

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

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