管理の手引き


各タイプの関係の表を定義する

データベースでは、いくつかのタイプの関係が定義できます。 従業員と部署との間のいろいろな関係について考えてみましょう。 従業員が 1 つの部署だけでしか働かない場合、 この関係は従業員にとって単一値 です。 一方、1 つの部署には多数の従業員が含まれますので、 この関係は部署にとって複数値 になります。 従業員 (単数値) と部署 (複数値) との間の関係は、 1 対多 の関係になります。 このセクションでは、次のタイプの関係について説明します。

1 対多および多対 1 の関係

1 対多および多対 1 の関係ごとに、それぞれ表を定義するには、次のようにします。

  1. 「多」の側のエンティティーが同じである関係をすべて 1 つのグループ にまとめます。
  2. グループ内のすべての関係をまとめて 1 つの表を定義します。

次の例では、1 番目と 2 番目の関係の「多」の側が「従業員」なので、従業員の表「EMPLOYEE」を定義します。

表 5. 多対 1 の関係
エンティティー 関係 エンティティー
従業員が (Employees) 割り当てられる (are assigned to) 部門に (departments)
従業員が (Employees) 働く (work at) 仕事を (jobs)
部門が (Departments) 報告する (report to) (管理) 部門に ((administrative) departments)

3 番目の関係の場合、「部署」が「多」の側なので、部署の表「DEPARTMENT」を定義します。

次の表は、 これらの関係が表でどのように表されるかを示しています。

EMPLOYEE 表:
EMPNO WORKDEPT JOB
000010 A00 President
000020 B01 Manager
000120 A00 Clerk
000130 C01 Analyst
000030 C01 Manager
000140 C01 Analyst
000170 D11 Designer

DEPARTMENT 表:
DEPTNO ADMRDEPT
C01 A00
D01 A00
D11 D01

多対多の関係

多対多の関係は、両方向に複数値の関係です。 1 人の従業員が複数のプロジェクトで働き、 1 つのプロジェクトに複数の従業員が加わっている場合がそれに当たります。 「Dolores Quintana の仕事はなにか?」および「プロジェクト IF1000 で だれが働いているか?」 という質問には、両方とも複数の答えがあります。 多対多の関係は、エンティティー (「従業員」と「プロジェクト」) ごとに 1 つの列を割り当てた表にすることができます。次の例をご覧ください。

多対多の関係 (1 人の従業員が複数のプロジェクトで働き、 1 つのプロジェクトで複数の従業員が働く) がどのように表されるかを、次の表に示します。

従業員活動 (EMP_ACT) 表:
EMPNO PROJNO
000030 IF1000
000030 IF2000
000130 IF1000
000140 IF2000
000250 AD3112

1 対 1 の関係

1 対 1 の関係は、両方向に単一値の関係です。 1 人のマネージャーは 1 つの部署を管理し、 1 つの部署には 1 人のマネージャーしかいません。 「C01 部の管理者はだれか?」および「Sally Kwan はどの部署を管理して いるか?」という質問は、両方とも答えは 1 つです。 この関係は、DEPARTMENT 表と EMPLOYEE 表のどちらにでも割り当てることができます。 すべての部署にマネージャーがいますが、すべての従業員がマネージャーで はないため、マネージャーは DEPARTMENT に追加する方が論理的です。次の 例をご覧ください。

次に、1 対 1 関係がどのように表で表されるかを示します。

DEPARTMENT 表:
DEPTNO MGRNO
A00 000010
B01 000020
D11 000060


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]