8.第一正規化
★複数のデータ
実は前ページの「整理する情報を決定」のところで、データモデリングを終了しても良いのです。
ただ、1枚のCDに複数の収録曲があった場合、前ページのようなテーブル構成では、1曲しか入力できません。
| 項目 |
内容 |
データ型 |
データサイズ |
| 名前 |
CDの名前 |
可変長文字列型 |
50文字 |
| レーベル |
レーベルの名前 |
可変長文字列型 |
10文字 |
| 作曲家 |
作曲家の名前 |
可変長文字列型 |
30文字 |
| ソリスト |
ソリストの名前 |
可変長文字列型 |
30文字 |
| 合唱団 |
合唱団の名前 |
可変長文字列型 |
30文字 |
| オーケストラ |
オーケストラの名前 |
可変長文字列型 |
30文字 |
| 値段 |
CDの値段 |
通貨型 |
|
| 指揮者 |
指揮者の名前 |
可変長文字列型 |
30文字 |
| 収録曲1 |
収録曲の名前 |
可変長文字列型 |
50文字 |
| 収録曲2 |
〃 |
〃 |
〃 |
| 収録曲3 |
〃 |
〃 |
〃 |
・
・
・
・ |
|
|
|
というふうにも出来ますが、いったい何曲分用意したらよいのでしょう?
それに1曲しか収録されていないCDもたくさんあるのですから、そのときは無駄になってしまいます。
これは、作曲家、ソリスト、合唱団、オーケストラ、指揮者にも言えることです。
★複数のデータを分離する
第一正規化では上記のように1枚のCDに、複数出てくる情報を抜き出します。
抜き出した情報は、それぞれ1つのテーブルとします。
すると以下のようなテーブルが新たにできます。
| テーブル名 |
内容 |
| 作曲家テーブル |
作曲家の情報を登録する |
| ソリストテーブル |
ソリストの情報を登録する |
| 合唱団テーブル |
合唱団の情報を登録する |
| オーケストラテーブル |
オーケストラの情報を登録する |
| 指揮者テーブル |
指揮者の情報を登録する |
| 収録曲テーブル |
収録曲の情報を登録する |
ここで、「まてよ、作曲家の情報は収録曲と一対一で対応してるじゃないか」と気がついた方は鋭い。
収録曲と作曲家の情報は、CDとレーベルの関係と同じです。
この逆は成り立ちません。
つまり、「収録曲の情報は作曲家と一対一で対応している」とは言えません。
作曲家は、何曲も曲を書く可能性があるからです。
「曲だって合作という可能性があるじゃないか」と気がついた方、やはり鋭い。
そういう何千(万?)曲に1つのようなデータまで、考慮するかどうかは、その人の真面目さ具合によります。
私はそれほど真面目では無いので、そういうデータが万が一出てきた場合は、代表的な作曲家の作品とすることにします。
なぜこのような話をしたかというと、収録曲と作曲家のような関係の情報は、第一正規化の段階では、取りあえず一つのテーブルにしておくのです。
つまり作曲家の情報を、収録曲の情報に加えてしまいます。(実は第二正規化で、結局分けることになるのですが、一緒にしておかないと第二正規化でやることが無くなるので・・・(^-^;))
逆(作曲家テーブルに収録曲を入れること)は駄目ですよ。
★分離後
この様にテーブルを分離すると、例えばソリストテーブルには、名前だけではなく、生年月日の情報を持たせたいなとか、国籍の情報も持たせたいとか、プロフィールも入れたいとか、写真があればその画像も・・・などなど、いろいろとアイデアが湧いてきませんか?
プロとしては、そういう情報も持ちたいのだったら、前の段階で決めておけよと言いたいところですが、個人でやることなんですから、自由で良いと思います。
ただ、後々用途のないようなデータは含めない方が良いです。
分離したテーブルにも、それぞれキーは必要です。
迷ったら、CDテーブルのように番号という項目を加えて、キーにしてください。
そうすると、下記のようなテーブルが出来ます。
☆作曲家テーブル
| 作曲家番号 |
作曲家名 |
国籍 |
生年月日 |
没年月日 |
☆ソリストテーブル
| ソリスト番号 |
ソリスト名 |
国籍 |
楽器 |
生年月日 |
没年月日 |
☆指揮者テーブル
| 指揮者番号 |
式社名名 |
国籍 |
生年月日 |
没年月日 |
☆収録曲テーブル
| 収録曲番号 |
曲名 |
作品番号 |
作曲家名 |
ここで、収録曲テーブルに作曲家名という項目が出てきました。
これは、作曲家テーブルにも出てくる情報です。
このような場合、第一正規化の段階では、作曲家を収録曲に含めて、作曲家テーブルを削除してしまいます。
☆収録曲テーブル改
| 収録曲番号 |
曲名 |
作品番号 |
作曲家名 |
作曲家国籍 |
作曲家生年月日 |
作曲家没年月日 |
もともとのCDテーブルは、どのようになるでしょうか。
ずいぶんと寂しくなりました・・・(笑)
|