ブログ

2024/08/28
【プリザンター】 第262回) プリザンターでの正規化について

データベースの正規化

こんにちわ、CCS田中です。

データベースを勉強していると最初に学ぶのが「正規化」だと思います。
第一正規化から、第二、第三とどのようなことを行うのかを理解されると思います。

プリザンターにおいては、内部的にはデータベースが使用されておりGUIから自由に設定を行うため、あまり正規化は意識されていないと思います。
意識されなくても動作するものは作れますし、データ量が多くならない場合はパフォーマンスにも影響を及ぼさないため、気にされなくても大丈夫なのかもしれません。
・・・が、今回は理解しておいたほうがよい「プリザンターでの正規化」について説明したいと思います。

あくまでも私の知識・経験上でのお話ですので、これがすべて正しいとは言えませんが、プリザンターを使われる皆さんの参考になればと思います。

まず、「正規化」とは何か?ということを簡単に説明しますと、「データベース上で扱うデータの重複の排除と矛盾の発生を防ぐ」ために行う操作です。
具体的な例を挙げて説明すると、以下のような生徒の名簿テーブルがあったとします。

生徒番号 名前 クラス 担任名
001   田中 1組  山本
002   高橋 1組  山本
003   鈴木 2組  佐藤
004   伊藤 2組  佐藤

<実際に設定したときの例>


<分類項目の設定例>


このときに、1組の担任が「山本」から「吉田」に変更になったとします。
このテーブルが正規化されていない状態だと、クラスが1組で担任名が山本のレコードをすべて修正する必要があります。このときに、1つでも更新漏れがあると矛盾が生じてきてしまいます。
これを正規化により、「データベース上で扱うデータの重複の排除と矛盾の発生を防ぐ」ことをします。


プリザンターでの正規化

プリザンターでこの時の設定を考えてみましょう。

まず思いつくのが、「分類」項目を使って担任名を設定し、選択肢に「山本」、「佐藤」を登録することだと思います。
これで登録は行えますが、担任の変更があった場合は一括変換などを行わないと変更漏れが出てしまいます。
また一括変換だと、選択肢に「吉田」を加えて、「山本」を残す必要があります。(そうしないと、変更前の状態で「山本?」となったりしてしまいます)

プリザンターの場合は、分類項目の選択肢にIDを追加することができますので、これを使うことで担任が変更になったときに1か所の修正だけで全体が変更されるようになります。具体的には選択肢を以下のように記載します。



担任が変更になったときは、上記の選択肢を以下のように書き換えます。



この担任名の情報が1つのテーブルでしか使用されていない場合は、この状態で問題ありませんが、他のテーブルにも使っている場合は他のテーブル上の分類項目も変更する必要がでてくるため、変更漏れがあると先ほど書いた「矛盾の発生」となってしまいます。
これを防ぐには、担任名で別テーブルを作成(Wikiでも可)する必要があります。
ここで具体的な設定方法は説明しませんが、記録テーブルやWikiでテーブルを作成して担任名を登録し、分類項目で作成したテーブルを参照するように設定することで複数のテーブルで担任名を設定していても、変更があった場合に1か所の修正で対応が終わります。

さらに、担任名の情報に他の情報を付与して(例えば担任の生年月日など)、それも一緒に生徒名簿に表示(登録)したい場合は、別テーブルはWikiではなく記録テーブルで設定して、ルックアップを設定することで対応できます。

テーブルの一覧上の見た目は同じなのですが、運用がしやすくなったり、間違いの発生が少なくなったりしてきますので、プリザンターでテーブルを作成するときには頭の隅に「正規化」を意識して作成されるとよいと思います。

まとめ

いかがでしたか?

今回、プリザンターの具体的な機能についての話ではありませんでしたが、プリザンターのようなWebDBと呼ばれるものを使用していくうえで重要な考え方になりますので、このブログがその一助になればと思います。

弊社ではプリザンターをご使用中、または、これからご使用になられる方向けに、運用ノウハウ集、プリザンター逆引き辞典、スタイル・スクリプトサンプル集の販売を行っております。
また、 プリザンターからのExcel帳票出力・PDF帳票出力の支援パック販売 も行っております。
プリザンター導入の支援や、スクリプト開発などの支援も行っておりますので、まずは気軽にご相談ください。
※ご相談の内容によっては有料となる場合がございます。予めご了承ください。
☆☆☆
ブログ内容への質問や追加説明をご希望の方は【 問い合わせフォーム 】からお気軽にお問い合わせください
☆☆☆

PAGE TOP