- ベストアンサー
ACCESS2003でデータベースを作成します
Access2003でデータベースを作成します。 以下の入力項目があるのですが、どう正規化したらよいのかわかりません。 お助けください。 ・顧客ナンバー ・顧客名 ・生年月日 ・年齢 ・住所 ・電話番号 ・身長 ・体重 ・性別 ・来店日 ・購入物 ・購入金額 これが一つなのですが、もう一つテーブルで ・商品名 ・価格 のデータベースも作りたいのです。 購入物を入力するとこのテーブルから価格を引っ張ってきて、 購入金額合計を出すようにすることも予定しています。 また来店日、購入物などの履歴は来店の度に入力があるので、 顧客ナンバーとは別のテーブルにすべきなのはわかるのですが・・・ よろしくお願いします。 このほかに必要な情報がありましたらご指摘ください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>どう正規化したらよいのかわかりません 正規化するならば第三正規化で。 顧客テーブル ・顧客No ・顧客名 ・生年月日 ・年齢 ・住所 ・電話番号 ・身長 ・体重 ・性別 売上テーブル ・売上No(オートナンバー型でもOK) ・売上日(来店日:売上日と来店日が異なる場合もある場合で必要なら来店日もフィールドに追加する。) ・顧客No ・商品No(購入物) ・単価(単価価格の変動に対応するため購入時の単価を保存) ・数量 (・購入金額は必要ありませんが・・。通常は演算して出る値はデータベースには保存しません。) 商品テーブル ・商品No ・商品名 ・単価(価格) これで中間従属性とか推移従属性を満たした正規化になります。 >購入物を入力するとこのテーブルから価格を・・購入金額合計を出す 売上テーブルに入力し必要なフィールドの値は顧客Noは顧客テーブルから商品名・単価は商品テーブルから値を参照して持ってくる。これをフォーム上で行えば出来ます。 >来店日、購入物などの履歴 顧客テーブルのレコードとその顧客Noで売上テーブルから顧客Noをキーに抽出し売上テーブルの商品Noで商品テーブルから商品名を取得し表示すれば出来ます。 顧客No・顧客名・売上日(もしくは来店日)・商品名・単価・数量・購入金額([単価]*[数量]で演算させる) のような一覧が出来ます。
その他の回答 (3)
- nov-d
- ベストアンサー率36% (51/140)
#2です。 >すみません、PKとFKってなんでしょうか?? データベースの基本的な用語で、 ・PK:PrimaryKey(主キー) 例)顧客ナンバーが決まれば対象となる顧客が一意に特定される ・FK:ForeignKey(外部参照キー) 例)購買ヘッダの顧客ナンバーは、顧客マスタを参照する際のキーとなる (Accessで言う、リレーションシップの関連の話です) です。 詳しくは、データベースに関する入門資料ででもご確認ください。
- nov-d
- ベストアンサー率36% (51/140)
概念データモデルの作成ですね。 一案としては以下のような具合でしょうか・・・。f^_^; 1.顧客マスタ :顧客ナンバー(PK)、顧客名、・・・、体重、性別 2.商品マスタ :商品コード(PK)、商品名、単位(個、本、等)、単価 3.購買ヘッダ :伝票番号(PK)、顧客ナンバー、購買日、購買額計 4.購買明細 :伝票番号(PK)、明細通番(PK)、商品コード(FK)、購買数量、購買小計
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
深く考えずに・・(というか深く考えるだけのネタがないので) 顧客 ・顧客ナンバー ・顧客名 ・生年月日 ・年齢 ・住所 ・電話番号 ・身長 ・体重 ・性別 購入履歴 ・顧客ナンバー ・来店日 ・購入物 ・購入金額 商品 ・商品名 ・価格 あたりが普通のような気がしますけど・・
補足
ご回答ありがとうございます。 すみません、PKとFKってなんでしょうか??