サンプル データベース テーブルと参照整合性
この付録では、以下の項目について説明します。
•
Demodata サンプル データベースの概要
•
Demodata サンプル データベースの構造
•
Demodata サンプル データベースの参照整合性
•
Demodata サンプル データベースのテーブル設計
Demodata サンプル データベースの概要
サンプル データベースの DEMODATA は PSQL 製品の一部として提供されており、データベースの概念と技法を図解するためにマニュアルで頻繁に使用されます。PSQL に関しては既によく理解されていると思いますが、この付録の情報をもう一度見直して、新しいサンプル データベースに慣れてください。
大学関連の環境で仕事をしていなくても、これらのサンプル データベースの例をテンプレートおよび参考として利用すれば、独自の情報システムの設計と開発を容易に行えます。ここに示す例は実際の生活の場面を反映しているので、この例に示すサンプル クエリなど機能を利用することができます。
Demodata サンプル データベースの構造
データベースの物理構造は、リレーショナル データベースの要素であるテーブル、列、行、キー、インデックスで構成されています。
このデータベースに含まれる 10 個のテーブル間にはさまざまな関係があります。このデータベースには、学生、教職員、授業、登録などに関するデータが含まれています。
前提条件
以下に、データベースを構築したときのいくつかの前提条件を示します。
•
データベースの適用範囲は 1 学期です。
•
学生は、同じコースを何回も受講できません。たとえば、学生は Algebra I の Sections 1 と 2 に受講登録できません。
•
教職員は学生でもかまいませんが、同じ授業での講義と受講登録は行えません。
•
どのコースも 1 つの学部だけから提供されます。
•
学生が評価を受けるには、学生を授業に受講登録し、その授業を教える教職員を任命しなければなりません。
•
教職員が所属する学部は 1 つですが、複数の学部で講義を行うことができます。
•
すべての学生は、アメリカの社会保険番号基準に基づいた学生 ID を持っています。
•
すべての教職員は、アメリカの社会保険番号基準に基づいた教職員 ID を持っています。
•
その他すべての職員は、アメリカの社会保険番号基準に基づいた個人 ID を持っています。
•
教室は、同じビル内で固有です。
•
2 つの授業を同じ教室で同時に教えることはできません。
•
教職員は、与えられた時間に 1 つの授業しか教えることができません。
•
授業に受講登録するための前提条件は必要ありません。
•
学部は専攻を意味します。
•
1 つの授業は、学期を通じて 1 人の教職員しか担当できません。
•
電話番号または郵便番号と州には相関関係がありません。
•
教務係は、教職員または学生であってはいけません。
•
ある人がデータベースに入力されると、すべての質問に答えなければならない調査か、あるいは、質問にまったく答える必要がない調査を行うことができます。
•
コースの履修単位時間は、必ずしも、授業が行われる時間数と同じではありません。
•
電子メール アドレスは、一意のアドレスである必要はありません。
エンティティの関係
エンティティは、データベース内の主なコンポーネントを記述するオブジェクトです。データベースを設計する場合、エンティティとそれらの相互の関係を定義してから先に進むことが大切です。University データベースでは、CLASSES、STUDENTS、FACULTY、GRADES などがエンティティです。エンティティとそれらの相互関係については、図
3
で概説しています。
図 3
エンティティの関係
GRADES は弱いエンティティです。このエンティティは授業を受ける学生に依存しているので、その存在は他のエンティティの有効性に依存しています。STUDENT テーブルと FACULTY テーブルが共通の情報を作成するのは、学生が教職員になったり、教職員が学生になる場合があるからです。共通の情報は、PERSON テーブルにあります。
Demodata サンプル データベースの参照整合性
ここでは、サンプル データベースの参照整合性(RI)設計について説明します。
図
4
は、University データベース内の様々なテーブル間に存在する参照制約を示したものです。ボックスはテーブルを表します。一方向の方向矢印は、親テーブルから参照用テーブルまでの参照制約を意味します。たとえば、制約番号 16 では、親テーブル Course で主キーを参照する Class テーブルに外部キーが存在します。
図 4
サンプル データベースの RI 構造
メモ:
図
4
は、依存関係グラフの役割も果たします。このグラフは、物理設計を行うときにどのテーブルを先に作成しなければならないかを示します。
RI に参加するテーブル、列、キーは、以下のように定義されます。
表 48
RI に関連するテーブルと列
制約
参照用テーブル
外部キー
参照されるテーブル
主キー
1
BILLING
Registrar_ID
PERSON
ID
2
STUDENT
ID
PERSON
ID
3
FACULTY
ID
PERSON
ID
4
STUDENT
Tuition_ID
TUITION
ID
5
FACULTY
Building_Name、Room_Number
ROOM
Building_Name、Number
6
DEPARTMENT
Building_Name、Room_Number
ROOM
Building_Name、Number
7
CLASS
Building_Name、Room_Number
ROOM
Building_Name、Number
8
FACULTY
Dept_Name
DEPARTMENT
Name
9
DEPARTMENT
Head_Of_Dept
FACULTY
ID
10
STUDENT
Major
DEPARTMENT
Name
11
STUDENT
Minor
DEPARTMENT
Name
12
COURSE
Dept_Name
DEPARTMENT
Name
13
BILLING
Student_ID
STUDENT
ID
14
ENROLLS
Student_ID
STUDENT
ID
15
CLASS
Faculty_ID
FACULTY
ID
16
CLASS
Course_Name
COURSE
Name
17
ENROLLS
Class_ID
CLASS
ID
Demodata サンプル データベースのテーブル設計
以下に、サンプル データベースのテーブルへの手引きを示します。以下の情報は、各テーブルに収録されています。
•
テーブル内の列
•
各列のデータ型
•
列のサイズまたは長さ(バイト数)
•
キー(列がキーでない場合は空白)
•
インデックス(列にインデックスがない場合は空白)
•
BILLING テーブル
•
CLASS テーブル
•
COURSE テーブル
•
DEPT テーブル
•
ENROLLS テーブル
•
FACULTY テーブル
•
PERSON テーブル
•
ROOM テーブル
•
STUDENT テーブル
•
TUITION テーブル
BILLING テーブル
列
データ型
サイズ
キー
Student_ID
UBIGINT
8
主キー、外部キー
Transaction_Number
USMALLINT
2
主キー
Log
TIMESTAMP
8
Amount_Owed
DECIMAL
7.2
Amount_Paid
DECIMAL
7.2
Registrar_ID
UBIGINT
8
外部キー
Comments
LONGVARCHAR
65500
CLASS テーブル
列
データ型
サイズ
キー
ID
IDENTITY
4
主キー
Name
CHARACTER
7
外部キー
Section
CHARACTER
3
Max_Size
USMALLINT
2
Start_Date
DATE
4
Start_Time
TIME
4
Finish_Time
TIME
4
Building_Name
CHARACTER
25
外部キー
Room_Number
UINTEGER
4
外部キー
Faculty_ID
UBIGINT
8
外部キー
COURSE テーブル
列
データ型
サイズ
キー
Name
CHARACTER
7
主キー
Description
CHARACTER
50
Credit_Hours
USMALLINT
2
Dept_Name
CHARACTER
20
外部キー
DEPT テーブル
列
データ型
サイズ
キー
Name
CHARACTER
20
主キー
Phone_Number
DECIMAL
10.0
Building_Name
CHARACTER
25
外部キー
Room_Number
UINTEGER
4
外部キー
Head_of_Dept
UBIGINT
8
外部キー
ENROLLS テーブル
列
データ型
サイズ
キー
Student_ID
UBIGINT
8
主キー、外部キー
Class_ID
INTEGER
4
主キー、外部キー
Grade
REAL
4
FACULTY テーブル
列
データ型
サイズ
キー
ID
UBIGINT
8
主キー、外部キー
Dept_Name
CHARACTER
20
外部キー
Designation
CHARACTER
10
Salary
CURRENCY
8
Building_Name
CHARACTER
25
外部キー
Room_Number
UINTEGER
4
外部キー
Rsch_Grant_Money
FLOAT
8
PERSON テーブル
列
データ型
サイズ
キー
ID
UBIGINT
8
主キー
First_Name
VARCHAR
15
Last_Name
VARCHAR
25
Perm_Street
VARCHAR
30
Perm_City
VARCHAR
30
Perm_State
VARCHAR
2
Perm_Zip
VARCHAR
10
Perm_Country
VARCHAR
20
Street
VARCHAR
30
City
VARCHAR
30
State
VARCHAR
2
Zip
VARCHAR
10
Phone
DECIMAL
10.0
Emergency_Phone
CHARACTER
20
Unlisted
BIT
1
Date_Of_Birth
DATE
4
Email_Address
VARCHAR
30
Sex
BIT
1
Citizenship
VARCHAR
20
Survey
BIT
1
Smoker
BIT
1
Married
BIT
1
Children
BIT
1
Disability
BIT
1
Scholarship
BIT
1
Comments
LONGVARCHAR
65500
ROOM テーブル
列
データ型
サイズ
キー
Building_Name
CHARACTER
25
主キー
Number
UINTEGER
4
主キー
Capacity
USMALLINT
2
Type
CHARACTER
20
STUDENT テーブル
列
データ型
サイズ
キー
ID
UBIGINT
8
主キー、外部キー
Cumulative_GPA
DECIMAL
5.3
Tuition_ID
INTEGER
4
外部キー
Transfer_Credits
DECIMAL
4.0
Major
CHARACTER
20
外部キー
Minor
CHARACTER
20
外部キー
Scholarship_Money
DECIMAL
19.2
Cumulative_Hours
SMALLINT
2
TUITION テーブル
列
データ型
サイズ
キー
ID
INTEGER
4
主キー
Degree
VARCHAR
4
Residency
BIT
1
Cost_Per_Credit
REAL
4
Comments
LONGVARCHAR
65500