ExcelTips(For Beginners)~データベース的思考4~
正規化の2回目です。今回は第2正規形について。
Excelで使う分には第1正規形でも十分な事も多いのですが,年度をまたがるようなデータについては,次の第2正規形まで進んだほうが良いでしょう。
担任というより教務レベルのデータ管理に必要と思われます。
第2正規形
まずは下の図を見てください。
テーブル【Ⅰ】は「組」,「生徒氏名」および「担任名」のテーブルです。これをよく見ると「担任名」のフィールドでは同じ名前がくり返し出てきています。こういうケースで起こりうる問題として,レコード間で矛盾が発生する可能性があるということです。例えば1組担任が変わってしまった場合,阿部,内山および片山の3つのレコードを編集しなければなりません。どれかを忘れたら矛盾が生じることになります。
これを避けるために,同じフィールドでくり返し出てくるデータは別のテーブルに分離する方法をとります。(テーブル【Ⅱ-1】,【Ⅱ-2】)
このようにテーブルを分離したときに必要なのが,2つのテーブルにあるレコードを紐付ける情報です。それを主キーと呼びます。ここで主キーと呼べるのはテーブル【Ⅱ-2】のフィールド「組」ということになります。主キーはダブりのない(ユニークな)データなら,規則性があろうがなかろうが,文字でも数字でも何でもかまいません。
テーブル【Ⅱ-3】は,テーブル【Ⅱ-1】の「組」と同じ値の主キーを持つレコードをテーブル【Ⅱ-3】からVLOOLUP関数で呼び出して,テーブル【Ⅰ】と同じものを作り出しています。
第2正規形にする利点として,担任の交代があったとしても,テー-ブル【Ⅰ】の担任名をひとつひとつ編集することなく,テーブル【Ⅱ-2】の担任名を1カ所だけ変更すれば良く,なおかつ矛盾も生じないという所にあります。
実例
生徒名簿のテーブル構成です。黄色いフィールド(列)が主キーになります。主キーはあまり意味を持たせてはいけないとも言われるのですが,ランダムにユニークな文字列をつくるのは難しいので,
・生徒IDは[入学年度]+[ふりがな五十音順の連番]
・組IDは「年度」+「学年」+「組」
・在籍IDは「組ID」+「出席番号(2桁)」
で生成しています。
年度ごとに在籍する組や出席番号が変わりますので,年度ごとのテーブル(【在籍情報】)をつくり「組ID」と「生徒ID」を入力します。
組は年度ごとに新しくなりますので【組情報】の「組ID」は年度ごとに生成します。
生徒自身は入学以来変わることがありませんので【生徒情報】の「生徒ID」は登録後変更されることはありません。
【在籍情報】をもとにして,それぞれのIDに紐付けられた情報を表示したが【名簿】です。
転校・転入が発生した場合は,【在籍情報】から生徒IDを削除またはレコードの追加を行います。
生徒IDを用いて紐付ければ,年度をまたいだ名簿も矛盾無く作成できますし,元のテーブルの変更を全てに反映させることができます。
変更の反映をさせたくない場合は,結果のテーブルをPDFなどに出力して保存すると良いでしょう。
まとめ
・繰り返し出てくるデータは別のテーブルにまとめる。
・レコードを特定できる主キーのフィールド(列)を作る。
つづく
この記事が気に入ったらサポートをしてみませんか?