-PR-
締切済み

Access2000 リレーションについて

  • 困ってます
  • 質問No.65172
  • 閲覧数92
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 16% (1/6)

現在初歩の初歩からAccessの勉強中です。

リレーションが何の為にあるのか、設定するのかはよく分かるのですが、内部結合・外部結合や1対多・1対1などがよく分かりません。

ここで全てを教えていただくわけには行かないと思いますが、本などをいくつか読んでもいまいちピンときません。
具体的にどういうケースでどのように設定するのかも分かりません。

どなたかご教授頂けませんでしょうか?
分かりやすい書籍・ホームページのご紹介でも結構です。

よろしくお願い致します。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 42% (79/186)

まずはじめに、内部結合、外部結合は、実際にデータを取得する際に複数のテーブルからデータを持ってくるときに、どのようにデータを持ってくるかによって使い分けます。1対多、1対1は、テーブル設計の際に、テーブルとテーブルのデータの関係を表現するのに使います。 ほとんどは、1対多なので、1対多のときに内部結合を使ってデータを取得したり、外部結合を使ってデータを取得したりすることになります。 例を書いてみま ...続きを読む
まずはじめに、内部結合、外部結合は、実際にデータを取得する際に複数のテーブルからデータを持ってくるときに、どのようにデータを持ってくるかによって使い分けます。1対多、1対1は、テーブル設計の際に、テーブルとテーブルのデータの関係を表現するのに使います。
ほとんどは、1対多なので、1対多のときに内部結合を使ってデータを取得したり、外部結合を使ってデータを取得したりすることになります。

例を書いてみます(わかりにくいかも・・・)

内部結合
 受注テーブル
受注番号    顧客ID   商品ID  数量
1 111 222 10
2 122 222 5
3 111 111 3
4 123 333 50

 顧客テーブル
顧客ID   顧客名   住所
111  A商事   ○○県・・・
122 B製作所  ××県・・・
123 C電気   △△県・・・
124 D事務所  □□県・・・

 商品テーブル
商品ID   商品名   単価
111     α    100
222 β 150
333 γ 50
444 δ 80

とテーブルがあったとします。
受注一覧を見るためには、受注テーブルと商品テーブルと結合する必要があります。このときに、受注テーブルの顧客ID、商品IDに番号がある顧客名と商品名だけ表示する必要があります。(つまり、D事務所と商品δは表示する必要がない)そのような場合、内部結合をします。(つまり、両方のテーブルに、データがちゃんとある分だけ結合する。)

外部結合
上記のテーブル構造で、顧客別の受注集計をする時に、受注のなかった顧客名を表示したいとき、全顧客を表示し、受注のある分だけ受注情報を表示します。これが外部結合です。

1対多
上記のテーブル構造で、顧客1件に付き、受注がひとつしかないことは珍しいですよね。つまり、顧客1つに対して受注が多数あるので「顧客テーブル」と「受注テーブル」は「1対多の関係」といいます。(設計時は逆も検討してください、受注1件に対して顧客が複数あると(この場合あまり考えられないが)多対多になります。

1対1
これは、普通あまり使うことはないのですが、あるテーブルのデータ1件に対して他のテーブルのデータ1件が対応する場合、(その逆も成立する場合)1対1の関係になります。
使うのは、たとえばマスター変換テーブルなどで使います。(上記の例だと、このデータベースの顧客IDが別のデータベースの顧客テーブルの顧客IDとが違う場合、その変換のために使います)
関連するQ&A


  • 回答No.2
レベル12

ベストアンサー率 45% (207/457)

RDB(リレーショナルデータベース)とはなんぞやてのわからないと内部結合・外部結合や1対多・1対1はわかんないかもしれませんね。 RDBは表形式のデータベースです。 受注伝票番号、受注日、顧客No、顧客名称、商品ID、商品名、納期、単価数量、合計金額等が受注伝票にあるとします。これをそのまま 受注伝票番号、受注日、顧客No、顧客名称、商品ID、商品名、納期、単価数量、合計金額等 の形式でEXCEL ...続きを読む
RDB(リレーショナルデータベース)とはなんぞやてのわからないと内部結合・外部結合や1対多・1対1はわかんないかもしれませんね。
RDBは表形式のデータベースです。
受注伝票番号、受注日、顧客No、顧客名称、商品ID、商品名、納期、単価数量、合計金額等が受注伝票にあるとします。これをそのまま
受注伝票番号、受注日、顧客No、顧客名称、商品ID、商品名、納期、単価数量、合計金額等
の形式でEXCELシートに記入データとして登録すると受注伝票No等が重複して同じ値を記入することになりますね。
これを正規化という手法を使って重複する項目を無くすとmsystemさんのいうような複数のテーブルに分かれます。これを結合して元の状態に戻すのです。
ということでmsystemさんの補足です。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ