Access の使用を開始する

データベースの概要

お使いのブラウザーではビデオがサポートされていません。Microsoft Silverlight、Adobe Flash Player、Internet Explorer 9 のいずれかをインストールしてください。

データベースと Web アプリは、ビジネス上の大きな利点をもたらすことがあります。データベース設計は、目的が従業員情報の管理、データに関する週間レポートの提出、顧客注文の追跡のいずれであっても、その目的を達成する上で重要です。データベース設計を理解することに時間をかけることにより、最初からきちんと機能し、ニーズの変化にも適応できるデータベースを構築することができます。

重要: Access Web アプリは、デスクトップ データベースとは異なります。この記事では、Web アプリの設計については説明しません。

概念と用語

最初に、基本的な用語と概念について説明します。有用なデータベースを設計するには、1 つの主題に集中したテーブルを作成します。テーブルには、その主題に必要なすべてのデータをフィールドに分けて取得し、フィールドには、可能な限り最小の単位でデータを格納します。

リレーショナル データベース

データをテーブルに分割するデータベースで、スプレッドシートのようなものです。各テーブルには、顧客 (1 つのテーブル) や製品 (別のテーブル) など、1 つの主題のデータのみを格納します。

レコードとフィールド

テーブル内の個々のデータを格納する場所です。行 (またはレコード) には、顧客名など、一意の各データ ポイントを格納します。列 (またはフィールド) は、各データ ポイントについて取得される情報を可能な限り最小の単位に分離します。たとえば、名を 1 つの列、姓を別の列にします。

主キー

各レコードを一意にする値です。たとえば、Elizabeth Andersen という同じ名前を持つ顧客がいても、一方の Elizabeth Andersen のレコードは番号 12 を主キーとし、他方の顧客の主キーは 58 です。

親子関係

テーブル間の一般的なリレーションシップです。たとえば、1 つの顧客が複数の注文を持つことができます。親テーブルには主キーがあり、子テーブルには外部キーがあります。これは主キーの値で、子テーブルのレコードと親テーブルがどのように関連付けられるかを示します。これらのキーはリレーションシップによりリンクされます。

適切なデータベース設計とは

適切なデータベース設計の基本となるのは、次の 2 つの原則です。

  • 重複情報を回避する (冗長データとも呼ばれる): スペースを無駄にし、エラーが発生する可能性が高くなります。

  • データの正確性と完全性を確保する: 不完全な情報または間違った情報がクエリやレポートで使用されると、最終的に、誤った情報に基づいた決定になってしまう可能性があります。

このような問題を回避するには、次の対策が役立ちます。

  • データベース情報を、的を絞った主題ごとのテーブルに分割します。重複する情報を複数のテーブルに格納しないようにします (たとえば、顧客名は 1 つのテーブルにのみ格納します)。

  • データを重複させるのではなくキーを使用してテーブルを結合します。

  • データベース情報の正確さと整合性を支援し、確保するプロセスを含めます。

  • データの処理およびレポートのニーズを考慮してデータベースを設計します。

データベースの有用性を長期にわたって維持するには、次の 5 つの手順を実行します。

手順 1: データベースの目的を決定する

開始する前に、データベースの目的を定めます。

目的に集中した設計にするには、データベースの目的を要約し、それをたびたび参照します。たとえば、在宅ビジネス用の小さいデータベースが必要な場合は、"メーリング リストやレポートを生成するために、顧客データベースに顧客情報の一覧を保持する" というような簡単な目的を書き出します。企業で使用するデータベースの場合は、さまざまな役割のユーザーがデータベースとそのデータをいつ、どのように使用するかを説明するために複数の段落が必要になるかもしれません。設計プロセス全体で参照する具体的で詳細なミッション ステートメントを作成します。

手順 2: 必要な情報を見つけて整理する

製品名や注文番号など、記録する必要があるすべての種類の情報を収集します。

既存の情報と追跡方法から開始します。たとえば、現時点ではおそらく、発注書を台帳に記録していたり、顧客情報を紙の用紙に記録したりしているでしょう。これらの情報源を使用して、現在取得している情報 (たとえば、用紙のすべての記入欄など) を一覧にします。重要な情報を現在取得していない場合は、どんな種類の情報が必要であるかを検討します。それぞれのデータの種類がデータベースのフィールドになります。

最初から完全なリストを作成する必要はありません。時間経過とともに調整することができます。ただし、この情報を使用するすべてのユーザーを考慮して、それらのユーザーの意見も聞いてみましょう。

次に、データベースから得られる情報や作成するレポートまたはメーリング リストの種類について検討します。その後、これらの目的を達成するために必要な情報を取得しているかどうかを確認します。たとえば、地域別の売上高を示すレポートが必要な場合は、地域レベルの売上高データの取得が必要です。表示したい実際の情報を使用して、レポートのレイアウトを考えてみましょう。その後、レポートを作成するために必要なデータの一覧を作成します。メーリング リストや、データベースをもとに作成するその他の出力についても、同じ手順を実行します。

顧客がオプトイン (またはオプトアウト) することができる、定期的に送信されるメールによる更新情報があり、そのオプトインしている登録者の一覧を印刷するとします。顧客テーブルには、"Yes" または "No" の値を入力できる "メール送信" 列が必要です。

顧客がメールの受信に同意した場合、メール アドレスが必要なので、そのフィールドも必要になります。適切な頭語 ("拝啓"、"前略"、"謹啓" など) を含めたい場合は、"頭語" フィールドが必要です。メールの宛名に顧客の姓を使用する場合は、"姓" フィールドを追加します。

ヒント: 重要なのは、情報の各部分を使いやすい小さな要素に分割することです。たとえば、顧客テーブルは、姓と名に分けます。通常、情報の項目 (顧客の名など) に基づいて並べ替え、検索、計算、レポートの作成を行う場合、その項目を個別のフィールドに保存する必要があります。

手順 3: 情報をテーブルに分割する

情報の項目を主なエンティティや主題 (製品、顧客、注文など) に分割します。各主題がテーブルになります。

必要な情報の一覧を作成したら、データを整理するために必要な主なエンティティ (または主題) を決定します。エンティティ間でデータが重複しないようにします。たとえば、製品売上データベースの準備リストは次のようになります。

件名にグループ分けされた情報アイテムのスクリーン ショット

ここでの主なエンティティは、顧客、仕入先、製品、注文です。これらの 4 つのテーブル (顧客に関する事実情報のテーブル、仕入先に関する事実情報のテーブルなど) から開始します。これは最終的な設計にならないかもしれませんが、開始するのに適しています。

注: 優れたデータベースは、複数のテーブルで構成されます。すべての情報を 1 つのテーブルのみに保存するのは避けてください。その場合、情報が重複し、データベースのサイズが大きくなり、エラーも増加します。各事実情報は 1 回だけ記録するように設計してください。仕入先の住所など、情報が繰り返されているのを発見した場合は、その情報が個別のテーブルに保存されるようにデータベースを再構築します。

テーブル数は少ないよりも多い方がよい理由を理解するために、次に示すテーブルについて考えてみましょう。

製品と仕入先データの画面スニペット

各行には、製品とその仕入先の両方に関する情報が含まれています。同じ仕入先から仕入れられた製品が複数ある場合、仕入先名と住所の情報を何度も繰り返す必要があります。これはディスク領域の無駄遣いです。代わりに、仕入先の情報を個別の仕入先テーブルに 1 回だけ記録し、そのテーブルを製品テーブルに関連付けます。

この設計の 2 番目の問題は、仕入先に関する情報を修正する必要が生じた場合に発生します。仕入先の住所を変更する必要があるとしましょう。仕入先の住所は複数の場所に表示されているので、ある場所で誤って住所を変更したのに、別の場所では変更を忘れてしまうことも考えられます。仕入先の住所を 1 か所だけに記録すれば、この問題は解決されます。

最後に、Coho Winery から仕入れている製品が 1 つしかなく、その製品を削除したいが、仕入先の名前と住所の情報は残しておきたいとしましょう。この設計の場合、仕入先情報を消失せずに製品レコードを削除するにはどうすればよいでしょうか。それはできません。各レコードには、仕入先に関する事実に加えて商品に関する事実情報が含まれているので、一方を削除しないで他方を削除することは不可能です。これらの事実情報を分けて保存するには、このテーブルを 2 つのテーブル (1 つ目は製品情報、2 つ目は仕入先情報) に分割します。このようにすると、製品レコードを削除した場合、製品に関する事実情報だけが削除され、仕入先に関する事実情報は削除されません。

手順 4: 情報の項目を列に変える

各テーブルに格納する必要がある情報を決定します。これらのデータの個々の部分がテーブルのフィールドになります。たとえば、従業員テーブルには、姓、名、雇用日などのフィールドが含まれます。

データベース テーブルの主題を選択した後、そのテーブルの列には、その 1 つの主題に関する事実情報のみを格納する必要があります。たとえば、製品テーブルには、製品に関する事実情報のみを格納し、仕入先に関する事実情報は格納しないようにする必要があります。

表で管理する情報を決定するには、以前に作成した一覧を使用します。たとえば、顧客テーブルに、姓、名、住所、メールの送信、頭語、メール アドレスが含まれているとしましょう。テーブル内の各レコード (顧客) には、同じ列セットが含まれるので、顧客ごとにまったく同じ情報が格納されます。

最初の一覧を作成した後、それを見直して、調整します。重要なのは、情報を可能な限り最小のフィールドに分割することです。たとえば、最初のリストのフィールドとして "住所" が含まれている場合、それを都道府県、市区町村、番地、郵便番号に分割します。顧客が国外にもいる場合、フィールドがさらに多くなります。たとえば、適切な書式で宛名を作成したり、都道府県別の注文に関するレポートを作成したりすることができます。

各テーブルのデータ列を調整したら、各テーブルの主キーを選択できます。

手順 5: 主キーを指定する

各テーブルの主キーを選択します。製品 ID や受注コードなどの主キーは、各レコードを一意に識別します。明らかに一意の識別子がない場合、Access を使用して作成します。

各テーブルの各行を一意に識別する方法が必要です。前に取り上げた、2 人の顧客が同じ名前を持っている例を思い出してください。これらの顧客は同じ名前を共有しているので、それぞれを個別に識別するための方法が必要です。

すべてのテーブルに、各行を一意に識別する列 (または一連の列) を含める必要があるのは、このためです。これを主キーと呼びます。主キーは、多くの場合、従業員の ID 番号やシリアル番号などの一意の番号です。Access は主キーを使用して、複数のテーブルのデータをすばやく関連付けて、データを提供します。

主キーが 2 つ以上のフィールドで構成される場合もあります。たとえば、注文品目を格納する受注明細テーブルでは、主キーに 2 つの列 (受注コードと製品 ID) が使用されます。主キーで複数の列が使用される場合、これを複合キーと呼びます。

製品テーブルの画面スニペット

カタログで各製品を一意に識別する製品番号など、テーブル内の情報を一意に識別する識別子が既にある場合、それを使用します。ただし、値が主キーに関する次の規則に従っている場合に限られます。

  • 識別子は必ず、レコードごとに異なります。主キーでは、値の重複は認められません。

  • 項目には必ず、値が設定されていなければなりません。テーブル内のすべてのレコードには、主キーを含む必要があります。複数の列 (部品ファミリと部品番号など) を使用してキーを作成する場合、両方の値が常に存在する必要があります。

  • 主キーは、変更することがない値です。キーは他のテーブルで参照されるため、あるテーブルの主キーを変更すると、それを参照するすべてのテーブルでもキーが変更されることを意味します。頻繁に変更すると、エラーが発生する危険性が高まります。

明らかな識別子がない場合は、任意の一意の番号を主キーとして使用します。たとえば、注文を識別するためだけの一意の注文番号を各注文に割り当てます。

ヒント: 一意の番号を主キーとして作成するには、オートナンバー データ型を使用する列を追加します。オートナンバー データ型は、各レコードに一意の数値を自動的に割り当てます。この種類の識別子には、それが表す行について説明する事実情報は含まれません。電話番号や顧客名など、行に関する事実情報を含む主キーとは異なり、番号が変更されることはないので、オートナンバー データ型の列は主キーとして使用するのに最適です。

さらに詳しく

フィールド、コントロール、オブジェクトに名前を付けるためのガイドライン

テーブルの概要

Excel のトレーニング

Outlook のトレーニング

最高のデータベースは、適切な構造設計から始まります。このビデオでは、データベース、特に Access で作成可能なリレーショナル データベースとは何かを説明します。また、テーブルを使ってデータベースを整理する方法と、キーを使用してテーブル間にリレーションシップを作成する方法についても説明します。

ではデータベースとは何かの説明から始めましょう。広い意味でのデータベースは、あらゆる整理されたデータの集まりです。料理本はすべてデータベースです。また、名前と電話番号だけの簡単な Excel リストもデータベースです。

次の質問は、"Access データベースはどこが違うのか。なぜそれを使う必要があるのか" です。その答えは、リレーショナル テーブル構造です。これから、その意味について説明します。

データはテーブルに編成されます。これらのテーブルは、キーと呼ばれる共有フィールドで相互にリンクされています。

キーの役割は 2 つあります。まず、キーは、テーブル内のすべての行に何らかの値を割り当てます。ここでは、Lester Baxley という名前には、値 "1" が割り当てられています。Patricia White という名前には、値 "2" が割り当てられています。

さらにキーは、値をフィールド間で共有することにより、テーブルを相互にリンクします。たとえば、Lester のキーの値は 2 つの電話番号で共有されており、そうすることで、この 2 つの電話番号は彼の電話番号になります。また、Naomi Barton のキーの値は、3 つの電話番号で共有されており、これらは彼女の電話番号になります。

ところで、データベースには、2 種類のキーがあります。キーの値は、このフィールドに由来しており、このフィールド、つまり宛先フィールドで共有されています。元のフィールドを主キーと呼び、宛先フィールドを外部キーと呼びます。しかし、ただフィールドを作成しただけでは、それらはリンクされません。リンクするには、テーブル間にリレーションシップを作成します。

"ちょっと待って。作業が大変そうだが、どうしてそんな必要があるのか" と疑問に思っているかもしれません。いい質問です。まず、記憶域を効率的に使用できます。この例の場合、名前はどのくらいの頻度で繰り返されているかおわかりになりますか。

リレーショナル構造では、ほとんどのデータを 1 回入力するだけです。そのため、大量の領域を節約できます。リレーショナル構造ではさらに、正確さも向上します。なぜなら、何度もデータを入力する場合、入力ミスを犯す危険性があるからです。

たとえば、Naomi Barton という名前のスペルを間違えると、どうなるでしょうか。その電話番号を検索するのがむずかしくなり、間違いが見つからない可能性もあります。リレーショナル構造の場合は、ほとんどのデータを 1 回だけ入力するので、エラーの可能性が低減されます。また、入力ミスがあっても、1 か所の修正だけで済みます。

リレーショナル構造はさらに、トランザクションをキャプチャーするのに適しています。データベースの性質に応じて、トランザクションは、どの教室のどの学生か、どの販売が成立したか、または自分の本を誰に貸したかを示すことができます。

ここで、データベース設計の最初の 3 つの基本的な手順について説明します。手順 1 は、保存する必要があるすべてのデータを取得します。この例では、顧客名、電話番号、電話番号の分類が必要でした。

手順 2 は、この例の顧客名のように、繰り返す可能性のあるすべてのデータを特定することです。

最後の手順 3 は、そのデータを整理して、専用のテーブルに分類します。

しかし、[種類] フィールドの繰り返しデータに気づきませんか。そのとおりです。実際、そのデータをテーブルに分類することは可能です。ただし、これらの値の数はほんのわずかであるため、ルックアップ リストを作成する方が適切です。ルックアップ リストとは、単に値の短い選択リストです。

テーブルとキーを使用してリレーショナル構造を作成するのは、適切なデータベースを設計する基本的な手順です。Access のリレーショナル データベースを使用すると、時間の短縮、領域の節約、エラーの削減を図り、データの重要な部分に関するトランザクションをキャプチャーできるので、作業効率を向上できます。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×