Microsoft Access Club >初心者講座 >CDアルバム管理ソフト >このページ >次頁 - 前項


リレーションの作成と解説 : CDアルバム管理ソフト02



前回の「テーブルの作成」はいかがでしたか?簡単すぎて拍子抜けした方もいらっしゃるでしょう。最初は簡単にできるように思っていただかないと、前に進めませんので…。

あぁ、みなさん、データベースのアプリケーションは、自分が使うために作るんじゃないですよ。人に、つまり第三者に使わせるんだ…という気概を出してくださいね。でないと、Excelで事足りる場合が多いですからね。保守管理なんて、自分のためだったらじゃまくさくって誰も作りません、ハイ!

さあ、今日は「リレーション」について、うんちくを述べますよ。まずは定義づけです。

 リレーション設定

データベースにおいて、リレーションを設定するとは、

テーブルとテーブルを結び付け、新たな仮想テーブルを作る約束ごと

の意味だと思って下さい。今はそう思ってくださいね。#クエリとクエリが結びつくこともありますけど…。

そもそも、「テーブル」と「リレーション」の関係はとても密接なものがあるんですよ。つまり、最初にリレーションを想定して、テーブルの枠組みを考える場合が大多数なんです。

例えば、データベースの構築ではテーブルに職員名データを格納していく場合、職員ID(数値)なるものを付すことを基本としています。

  • 「ID100を鈴木さん」
  • 「ID101を佐藤さん」

というふうに数値と結び付けます。逆に云うと、このような構成にしなければ、データベースの能力を十分に発揮できない訳です。

一般的にテーブルは、その都度入力される種類のもの(A)と、保守管理のときに入力されるもの(B)とがあります。具体的には、皆さん方が加入されているプロバイダーを想定してください。

  • みなさんが加入された場合、BのテーブルにID、氏名、住所などが入力されます。「加入者情報テーブル」みたいなものでしょうか?
  • 次に、皆さん方がインターネットに接続すると「何時何分、誰それがどのURLへアクセスした」というログをAに格納していきます。このAテーブルにはあなたの名前はありません。名前の代わりに、あなたを表す ID が1レコード毎に格納されます。
 リレーションの実例 - 1

下記の例でお話しましょう。

データ入力されるテーブルAの「学生ID」と、職員情報を持っているマスターテーブルBの「学生ID」をリレーションで結び(1対多、等結合)つけると仮定します。フィールドの名付けは特に約束事はありません。

その都度データ入力されるテーブル_A

ID(オート)

出席年月日

学生ID

1

1999/12/13

100

2

1999/12/14

101

職員情報を持っているマスターテーブル_B

学生ID

学生氏名

生年月日

100

鈴木一郎

1969/10/10

101

佐藤次郎

1971/03/15

リレーションシップは下記のようになっています。

リレーションをテーブル間で設定していますから、クエリを用いてテーブルを合体することができます。その一例が下記のようなものです。(テーブルAとテーブルBを合体)

ID

出席年月日

学生ID

学生氏名

生年月日

1

1999/12/13

100

鈴木一郎

1969/10/10

2

1999/12/14

101

佐藤次郎

1971/03/15

このようにすると、必須の入力項目は「出席年月日」と「学生ID」だけで、後の「学生氏名」などは前もってテーブルBに入力しておけばその都度入力する手間が省けます。

また、例えば鈴木一郎さんが改姓されたとか、退学されたとかの場合で、Aテーブルの鈴木さんのデータがいくらあろうとも、Bテーブルの職員名を変更(削除)すれば事足ります。<但し、この場合はリレーション設定時に、"連鎖更新"、"連鎖削除"をチェック済みであることが条件ですが…>

これらがリレーションの効用なんです。保守管理も楽でしょ。これは、Excel の VLOOKUP機能 とよく似ていますね。このような事例がリレーションの基本です。このバターンを 1 とします。

 リレーションの実例 - 2

次に、このサンプルファイルで行っているリレーションについて述べます。

1の事例ですと、職員の増減等がなければ、Bテーブルはデータの変動はありません。しかし、次の事例ではどうでしょう。

テーブル名:tbl_CDコレクション

ID(オート)

アーティスト名

アルバム名

曲名

演奏時間

1

AABB

Access World

Office_1

4分35秒

2

AABB

Access World

Word_1

3分29秒

3

AABB

Access World

アクセス一番

5分12秒

4

AABB

Access World

アクセスクラブ

6分59秒

5

AABB

Access World

URL

3分48秒

6

AABB

Access World

Hino Of Japan

4分45秒

「アーティスト名」と「アルバム名」がかなりテーブル内に現れています。一覧表ならこれでいいですけどね…。何かExcelのSheetに似てますね。CDアルバムの場合は、曲数が10曲〜15曲位ありますから、もっとすっきりさせたいと思いませんか。これじゃ保守管理も大変です。

方法として、1の事例のように、「アーティストID」と「アルバムID」を作成し、マスターテーブルを作る手立てもありますが、同じアーティストのCDを何十枚も集めますか?また、アルバムは普通1枚あれば充分ですよね?。

そもそも、テーブル数を増やせば保守の手間が増えますので、賢明な方法ではありません。少ないテーブル数でアプリケーションを構築することを念頭においてくださいね。

この問題を解決するのは、「tbl_CDコレクション」テーブルを分割します。つまり「メイン」テーブルと「サブ」テーブルに分けます。

この場合、リレーションのキィーとなるのは、「メイン」テーブルは排他的な「ID(オートナンバー型)」が、「サブ」テーブルには新規に「av(数値型、フィールドサイズは長整数型)を作成してください。これは決まりごとですから、絶対に覚えてください。

作成には下記の表を参考にして下さい。

作成後、これらをリレーションで結び付けます。これによって、データベース内ではあたかも一つのテーブルのように扱われます。

ID_1(オート)

アーティスト名

アルバム名

1

AABB

Access World

 

ID(オート)

曲名

演奏時間

1

1

Office_1

4分35秒

2

1

Word_1

3分29秒

3

1

アクセス一番

5分12秒

4

1

アクセスクラブ

6分59秒

5

1

Hino Of Japan

4分45秒

 リレーションシップ

結び方は、メニューバーにある「ツール」の「リレーションシップ」をクリックしてください。すると、下記のようなリレーションシップと表題のついた何もないダイアログが表示されますね。(サンプル図は、マウスで右クリックを行ったところです)

このフォーム上で右クリックをし、「テーブルの表示」を選びます。次に、先ほど作成した「メイン」と「サブ」のテーブルを左クリックし「追加」ボタンを押してください。

テーブルが2個現れましたか?

「メイン」テーブルにある「ID」を左クリックしながら、「サブ」テーブルの「avにドラッグします。すると小さなプロパティ画面が現れますね。

 参照整合性

参照整合性をチェックします。

  • 参照整合性は、レコードの入力や削除を行っても、テーブル間のリレーションシップが維持されるようにするための規則です。

 フィールドの連鎖更新 と レコードの連鎖削除

「フィールドの連鎖更新」と「レコードの連鎖削除」をチェックします。

  • これらは、主テーブルの主キーの値を変更(削除)すると、自動的に関連テーブルの内容が変更(削除)され、参照整合性が保たれる役割を果たします。逆に、オフにすると変更や削除をできなくすることができます。

説明の詳細は上記のハイパーリンクでご覧下さい。

 結合の種類

最後に、「結合の種類」をクリックします。何もしなければ基本の「等結合」なんです。最初は覚えなくてもいいんですが、ちょうどいい機会ですから「結合の種類」をお話しますと…

クリックすると、選択肢が3つ現れます。

  • 「等結合」

  • 「右結合」

  • 「左結合」

とか呼ばれるものなんですが、詳細は「参考ファイル6」にあります。 ここには、サンプルファイルがありますので、自分の目で確認することができますよ。

今回のケースのような場合で、

  • オートナンバー型とリレーションを結べるのは、原則的には数値型の長整数型

  • 基本的に同じデータ型で同じフィールドサイズでなければ、リレーションを結べない

と覚えて置いて下さい(例外もありますけど…)。これでテーブル間のリレーションが結べましたね。簡単でしょ?

 リレーション設定の留意点

あ、そうそう、よく初心者の方が間違って苦労されるのは、下記の左図のようなテーブルを作成されて、「職員ID」同士のリレーション設定する場合です。

1対多の"1"のテーブル部分は、固有インディックスの設定が必要です。よって、この場合は、リレーションの種類が"未定義"の設定となります。

正しくは下記です。

 

関連ページ

 

では、今日はこのへんで…、またお会いしましょう。あぁ、次回は「入力フォームの作成と解説」ですので、お楽しみに………

 

ページの先頭へ 前ページへ戻る

 


リレーションの作成と解説 : CDアルバム管理ソフト02


 

-Microsoft Access Club-