今回は、データベースの設計でよく使われる「ER図」を紹介します。
この記事を書くにあたって、ER図について検索してみたところ、専門用語が多めのサイトが目立ちました。
そのような専門用語が多めのサイトでは、かえって本質を理解しづらいイメージを受けました。
そこで本記事では、社内SEが小規模システムを開発する時に知っておけばよい程度の内容にまとめました。
より実戦的な内容に仕上げましたので、Accessでのツール開発を進めたい方にはお役に立てると思います。
ER図とは
ER図(Entity Relationship Diagram)はテーブル間の関係を表した図で、見た目は下のようなものになります。
「Entity」を和訳すると「実体」となり、テーブルのことを意味します。
「Relationship」を和訳するとリレーションシップそのものになります。
つまり、ER図とは「テーブル同士の関連が分かる図」ということになります。
リレーショナルデータベースを使ってシステムを作る時は、テーブル同士がお互いにどのような関係にあるかをはっきりと決めておく必要があります。
Accessの場合も、テーブルを作った後に必ずリレーションシップ設定画面でテーブルの関係をはっきりさせています。
ER図の書き方
ER図を書く手順は通常下のとおりです。
- テーブルの項目を列記する
- 主キーを決める
- テーブル同士を線でつなぐ
では、順番に解説していきます。
テーブルの項目を列記する
開発するシステムに「どんな項目が必要なのか」をピックアップしながら、テーブルの項目に追加していきます。
できるだけもれなくピックアップするようにしますが、100%の完成度を求めなくてもよいです。
工程が先に進べば、何回か全体を見直すタイミングがありますので、そのときに調整すればよいでしょう。
あまり気負わずに進めましょう。
主キーを決める
コード番号など、重複が認められないものがあれば、主キーにしましょう。
ただ、年ごとにマスタを持つ場合は、年とコード番号ともに主キーになります。
つまり、一つのテーブルに2つの主キーを持つことがありますので、頭に入れておきましょう。
外部キーも忘れずに設定しておきましょう。
テーブル同士を線でつなぐ
主キー(一側)と外部キー(多側)を線でつなぐと、ER図のできあがりです。
結合線はいろいろな書き方がありますが、ここでは「IE表記法」という方法を使って書きました。
直感でも分かりやすいため、複数人で紙やホワイトボードに手書きするときなどに向いています。
主キー側は一本線、外部キー側が鳥の足のような形になります。
多側が欠損できない場合は、縦棒を入れます。
一方、外部キー側のデータが欠損してもよい場合は白丸を追記します。
それでは、どんなときに多側が欠損しているのでしょうか?
ここでは、会社と社員の関係を例に挙げてみます。
会社には必ず取締役(役員)が1人以上必要になります。
この場合は「多側が1以上」になります。
一方、規模の小さな会社は、役員以外の従業員がいないこともあります。
そんなときは、「多側がゼロ以上」という条件に当てはまるのです。
ER図を書くツールとしては、Excelなどでも十分ですが、Microsoft Visioを活用するともっと楽に仕上げられます。
Visioを使ったER図はこんな感じです。
なんと、ER図専用のオートシェイプも設けられています。
Micrsoft Visioは他のOfficeアプリに比べてかなり割高(80,000円程度)ですが、サブスク版の場合は1か月当り1,650円で使えます。
使いたい時だけサブスクで集中的に使うのが現実的な使い方でしょうか。
「買い切り品を買ってもいいかな」という方のために、一応Amazonのリンクを貼っておきますね。
この記事を書いている2021年7月現在、買い切り品のVisioが格安で販売されていたので、意外と掘り出し品が見つかるかもしれません。
>>Microsof Visio ProfessionalをAmazonでチェックする
多対多の結合を設定する
リレーションシップには、I対多だけでなく、多対多というものもあります。
例えば、生徒がどのサークルに所属しているかということですよね。
一つのサークルには、複数の生徒が所属していますし、一人の生徒が複数のサークルを掛け持ちしている場合もあります。
逆に、ある生徒はどのサークルにも所属していないなんてことも。
そんな時は、生徒のマスタテーブルとサークルのマスタの間に中間のデーブルをはさむことで実現できます。
このブログで紹介している部品購入データベースについても、同じようなことをしています。
部品マスタと発注先マスタの間に価格テーブルを入れています。
ある部品については複数の取引先で扱っていることもあります。
相見積もりをして価格を記録する時などは、中間テーブルを持たせたデータ構成にしておくと便利です。
複数の結合を設定する
年単位や月単位ごとにマスタを残す場合は一つだけでなく、例外として複数の結合を設けることがあります。
全てが教科書どおりに正規化できないことも発生しますので、場合よっては臨機応変な処置が求められます。
Accessのリレーションシップでは、複数のリレーションシップを設けることは難しいようです。
一方、クエリでは簡単に複数の結合を設定できますので、クエリ結合やVBAコードなどで工夫しながら、データの整合性を維持させることも検討してもよいでしょうね。
まとめ
今回は、システムのER図について解説しました。
ER図を書く目的は、設計図として記録に残す意味もありますが、「ER図を書くことを通して思考力を高められる」という効果もあります。
特に、システムを作ることに慣れていない方は、一度ER図に落とし込んでみると、作りやすく感じられるのではないでしょうか?
紙やホワイトボードを使って複数人数で作ることで、より完成度の高いデータ構成にすることができるでしょう。
一方、一人でのシステム作りに慣れていれば、Accessのリレーションシップの設定画面で代用してもいいですね。