Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2013)
リレーションシップについて
投稿日時: 17/12/09 11:07:23
投稿者: 島ちゃん

Access初心者です。
宜しくお願いします。
 
顧客情報で入力画面を作成したいのですが、テーブルの作り方が分かりません。
 
T−顧客情報
顧客ID  オートナンバー型 主キー
氏名 テキスト型
〒 テキスト型
住所1 テキスト型
住所2 テキスト型
区分ID 数値型
 
T−商品情報 
区分ID 数値型 主キー
区分名 テキスト型
 
T−履歴情報 
顧客ID  オートナンバー型 主キー
区分ID 数値型 
日付 日付/時間型
点数 数値型
枚数 数値型
 
クエリで、3種類の区分IDをリレーションシップで作成したいのですが出来ません。
テーブルでどの様なフィールド名を追加すればいいでしょうか?
また、主キー、リレーションシップはどうしたらいいでしょうか?
宜しくお願いします。

回答
投稿日時: 17/12/09 15:03:22
投稿者: MMYS

あなたは過去の質問で回答者にお礼を示さないようですが。
http://web.archive.org/web/20160813044806/http://www.moug.net/faq/viewtopic.php?t=74508
 
なのでヒントしか述べません。
たとえば、こんな情報を正規化する場合。
 

2014/11/25に 浦島太郎さんが テレビを2台購入
2015/10/10に かぐや姫さんが テレビを1台購入
2016/11/25に かぐや姫さんが 洗濯機を3台購入
2017/11/25に 浦島太郎さんが 冷蔵庫を1台購入
2017/12,09に 一寸法師さんが 掃除機を2台購入

以下のようにテーブルを作成します。
なお、主キーにオートナンバーを使ってはいけません。
 
■顧客情報テーブル
1,浦島太郎
2,かぐや姫
3,一寸法師

■商品情報テーブル
101,テレビ
102,冷蔵庫
103,洗濯機
104,炊飯器
105,掃除機

■販売履歴テーブル
1,101,2014/11/25,2台購入
1,102,2017/11/25,1台購入
2,101,2015/10/10,1台購入
2,103,2016/11/25,3台購入
3,105,2017/12,09,2台購入

 

回答
投稿日時: 17/12/11 14:40:37
投稿者: sk

引用:
T−顧客情報
顧客ID  オートナンバー型 主キー
氏名 テキスト型
〒 テキスト型
住所1 テキスト型
住所2 テキスト型
区分ID 数値型

・このテーブルに[区分ID]は不要。
 (顧客自身の属性を示す項目ではない)
 
引用:
T−商品情報 
区分ID 数値型 主キー
区分名 テキスト型

・命名の仕方が紛らわしい。
 
引用:
T−履歴情報 
顧客ID  オートナンバー型 主キー
区分ID 数値型 
日付 日付/時間型
点数 数値型
枚数 数値型

・[顧客ID]をこのテーブルの主キーとするべきではない。
 (顧客 1 人につき 1 件の履歴しか記録出来なくなる)
 
・ここでの[顧客ID]は[T−顧客情報]と結合するための
 外部キーであるのだから、オートナンバー型ではなく
 長整数型のフィールドとして定義すべきである。
 (それぞれのテーブルで好き勝手にオートナンバーを
  割り振ってしまうことになる)
 
・[点数]と[枚数]の違いが不明瞭。
 
(以下、P は主キー)
 
[T_顧客情報]
-------------------------------------------------------------------
P 顧客ID            オートナンバー型(長整数型)
  氏名              テキスト型
  郵便番号          テキスト型
  住所1             テキスト型
  住所2             テキスト型
-------------------------------------------------------------------

[T_商品情報]
-------------------------------------------------------------------
P 商品ID            オートナンバー型(長整数型)
  商品名            テキスト型
  標準販売単価      通貨型
-------------------------------------------------------------------

[T_販売履歴]……レシートのヘッダー情報に相当
-------------------------------------------------------------------
P 販売履歴ID        オートナンバー型(長整数型)
  販売日時          日付/時刻型
  顧客ID            長整数型([T_顧客情報]と結合するための外部キー)
-------------------------------------------------------------------

[T_販売履歴明細]……レシートの明細情報に相当
-------------------------------------------------------------------
P 販売履歴明細ID    オートナンバー型
  販売履歴ID        長整数型([T_販売履歴]と結合するための外部キー)
  明細番号          長整数型
  商品ID            長整数型([T_商品情報]と結合するための外部キー)
  販売単価          通貨型
  販売数量          長整数型
-------------------------------------------------------------------
([販売履歴ID]と[明細番号]の値の組み合わせをユニークキーとする)

 
テーブル設計の一例としては以上のような感じでしょうか。

投稿日時: 17/12/12 11:58:37
投稿者: 島ちゃん

みなさん 
ありがとうございます。
コメントが遅くなり申し訳ございません。
 色々と試してみたのですが出来ませんでした。
  
MMYSさんのヒントの通りです。
 顧客情報、商品情報があり、合わさって販売履歴にしたいのです。
  
skさんの通り下記のテーブルを作成したのですが、結合が出来ませんでした。
どこがダメなのでしょうか?
  
 [T-顧客管理]
P 顧客ID       オートナンバー型(長整数型)
  氏名       テキスト型
  郵便番号     テキスト型
  住所1      テキスト型
  住所2      テキスト型
  
 [T-商品情報]
P 商品ID       オートナンバー型(長整数型)
  商品名       テキスト型
 標準販売単価    通貨型
  
 [T-販売履歴]
P 履歴ID       オートナンバー型(長整数型)
  日付        日付/時刻型
 顧客ID       長整数型([T-顧客管理]と結合 外部キー)
  
 [T-販売履歴明細]
P 販売履歴明細ID  オートナンバー型(長整数型)
  販売履歴ID     長整数型([T-販売履歴]と結合 外部キー)
  商品ID 長整数型([T-商品情報]と結合 外部キー)
  販売単価      長整数型
  
[T-商品情報]の商品IDと[T-販売履歴明細]の商品IDを結合したのですが、未定義となりました。
[T-販売履歴明細]の主キーを外して結合すると出来ましたが、クエリで商品IDを入力しても商品名が
表示されませんでした。
  
宜しくお願いします。

投稿日時: 17/12/12 16:41:00
投稿者: 島ちゃん

ネットで調べていましたら、たくさん例題がありましたので
やってみます。
 
有難うございました。