←講義のツボメニューへ
データモデル化とデータ定義表現
2000.11.30 第7回
- データモデル化
例として、大学での教務で、学生が、どのような科目を取っているか把握するための情報システムを挙げる。
- 実体レコード型の候補列挙。
学生が科目を取るということからして、「学生」、「科目」、「教員」は明らかに必要だと言える。以上のものから開始し、必要ならば追加、不要と思えれば削除する。それを以下のように図示する。

- 実体レコード型の間の関連
次に、列挙された実体レコード型の間の間連を考えてみる。
a)学生 ー 受講
学生は複数の受講をする。しかし、一つも受講登録をしていない学生もいるかも知れない。(休学、長期欠席など)
b)科目 ー 受講
ある科目は、複数の受講生がいる。一人も受講生のない科目もあるかも知れない。
c)教員 ー 科目
教員は科目の担当を行う。一つの科目は一人の教員のみが担当することにする。一人の教員は、複数の科目の担当になることがある。ある学期には、一つも担当していない教員もいるかもしれない。
以上のことから、すべての関連は1体Nの関連であり、下の図のようになる。

- 実体レコード型の属性と参照制約
各々の実体レコード型の値である実体レコードが、学生、受講、科目、教員の各々の実体を反映され、また一意に識別されるように、属性を準備し、特に主キーとなる属性には、*印をつけ、以下のように図示する。

- データ定義表現
- 以上のデータモデルをSQL言語で記述してみる。
NUMBERは整数、charは文字列、VARCAHRは可変長文字列、それ以外に、YEAR、SEMESTER等の新しいデータ型を例として示した。
PRIMARY KEYは主キー、NOT NULLは空値ではないことを制約として示している。
CREATE TABLE students( 学生
student-no NUMBER(8) PRIMARY KEY 学籍番号
student-name VARCHAR(20) NOT NULL 学生氏名
admit-year YEAR 入学年度
)
CREATE TABLE courses( 科目
course-no NUMBER(8) PRIMARY KEY 科目番号
course-name VARCHAR(20) NOT NULL 科目名
semester SEMESTER 開講時期
lecturer VARCHAR(20) NOT NULL 担当教員番号
CONSTRANT teacher-name REFERNCES teacher
)
CREATE TABLE registrations( 受講
r-student-no NUMBER(8) 学籍番号
CONSTRANT student-no REFERNCES students
r-course-no VARCHAR(20) NOT NULL 科目番号
CONSTRANT teachert-no REFERNCES teachers
grade CHAR(1) 成績
)
CREATE TABLE teacher( 教員
teacher-no NUMBER(8) PRIMARY KEY 教員番号
teacher-name VARCHAR(20) NOT NULL 教員氏名
)