他にない、上質なITを

Column

テーブル設計・ER図の設計に必要な「深読み」とは


Pocket

データベースを設計する工程は非常に重要な工程の1つです。端的に言ってしまえば、このシステムを動かすのに何個のテーブルが必要なのかを決めることです。テーブルにはドラマの登場人物の相関図のような関連性を示すための図面があり、それをER図(Entity-Relationship-Diagram)と言います。

ER図には、ユーザーがこのシステムを利用してどんなデータをやり取りしているのかの全てが描かれています。管理したいデータがあり、それがどういう設計で保存されているかを見れば、どんな振る舞いをシステム上で行っているか、高い正確性を持って類推することが出来ます。

エンティティ(Entity)とは

テーブル設計を難しくさせている(難しく考えさせている)のが、このエンティティという概念だと考えています。エンティティとはデータベースで管理したい情報を抽象化したものです。顧客管理システムなら顧客情報になるでしょう。在庫管理なら商品と在庫です。入庫と出庫の履歴が取れないと在庫管理は出来ませんので、それらもエンティティ候補になります。

これだけではピンとこないと思いますので、エンティティの抽出の観点を列挙しておきます。

エンティティを3つの視点から抽出しよう

エンティティはこの3つの観点から抽出することをオススメします。

名称 概要
ヒト システムで登場する人物像
モノ システムで取り扱う資産・サービス
コト システムを通じて行われる行動・出来事

ホテルの予約システムにおけるエンティティ

名称 概要
ヒト 顧客、会員、ホテルの従業員etc..
モノ プラン、お部屋、お部屋の種別、お部屋の設備etc..
コト 予約を受付する、問い合わせる、決済する、キャンセルする、部屋を手配するetc..

ヒト系のエンティティ

ヒト系のエンティティは、そのシステムの登場人物の総称です。

登場人物と言いましても、田中さん佐藤さんと言った固有名詞ではなく、共通の属性を抽象化して抽出します。ホテルの予約であれば、予約の依頼を行う顧客が当然必要です。会員登録をしているホテル等であれば、会員と非会員を分ける必要があるでしょう。

新しい予約の受付があったら、当然それはホテルの従業員の方が確認してお部屋の手配に入ります。従業員も登場人物に挙げられます。

モノ系のエンティティ

ホテルで何を予約するのか。予約で何を取り扱っているのか。それらがモノに該当します。モノは、システムの登場人物が取り扱っている業務上の約束事や資産などが主に該当します。

予約をするにあたっては、プランが必要になります。部屋だけの場合でも、素泊まりプランという格好になります。プランをいくつも登録できて、編集できるようにしなければなりません。他に必要なものは、お部屋でしょう。部屋というか部屋の種類ですね。

最近ではお部屋の設備についても細かく書いてあります。禁煙/喫煙、Wifiの有無等。どのお部屋を選んでも表示したい設備の情報があるのであれば、エンティティ候補になりえます。

コト系のエンティティ

コトは「登場人物がどんな行動を取るのか」という事象のことです。どういった出来事が発生しているのかを管理しなければ、システムとして使い物になりません。

ホテルの予約において最大の出来事は、予約です。顧客がホテルに予約するというイベントが発生します。その内容をちゃんと保存しておかないと、大変なことになります…

問い合わせも管理したいところですね。お客様がプランを見て、そのプランについて質問がしたい場合等に活用できそうです。忘れてはいけないのがキャンセル処理です。予約のキャンセルは必ず発生します。キャンセルの依頼があったことを別途管理できるようにしておく必要があります。

予約とキャンセルという2つのイベントによって変動する要素が1つあります。お部屋の在庫です。シングル残り2部屋だったと仮定すると、キャンセルが発生すれば3部屋になります。残りの部屋数まで表示されている所が多いので、どれだけのお部屋数が空いているのかを管理する必要があります。

コト系のエンティティから詰めていく

エンティティの3タイプのうち、まず最初に手を付けるのはコトのエンティティです。

どんな出来事がシステムの操作で発生するのかを考えます。予約なのか出荷なのか決済なのかキャンセルなのか請求なのか。そういった出来事を適切に管理できるようにするのが、データベースの意義です。ココを間違えると全部ダメです。先にコトから攻めていきます。

管理する出来事の対象が見えてきたら、登場人物と取り扱う資産やサービスについて整理します。

良いER図は深読みによって作られる

エンティティの抽出にあたっては、そのビジネスでどんな出来事が発生するのかを読み取れるかがポイントになります。業務知識が大切だと言われる最たる理由はここにあると考えています。

データベースの論理設計でもっとも重要なことは、ビジネスの深読みです。

プログラムの実装に業務知識が役立つケースは、正直そんなにないでしょう。実装には実装技術の知見が再重要です。テーブル設計においては、技術よりもビジネスへの知見や想像力のほうが重要度が高くなります。抽象的な概念を整理して抽出してデザインしていくのは、技術力とは違う能力が求められるからです。

Start-SQLのご紹介

いかがでしたでしょうか?

データベースの論理設計はシステムの品質を決める最重要工程の1つです。弊社が提供している「Start-SQL」という研修サービスでは、1日で初心者を脱することが出来るSQL研修を実施しています。。是非ご活用下さい。

Start-SQL 〜SQLオンライン学習サービス〜


おすすめ記事

最後までお読みいただきありがとうございました。
こちらの記事にご興味を持っていただいた方には、こちらの記事もおすすめです。

執筆者について

著者

(株) クオリティスタート 代表取締役

湯本堅隆(YUMOTO Michitaka)

略歴

1979年生まれ。ISPの電話サポートのアルバイトをきっかけにIT技術に興味を持ち、2003年にアイ・ティ・フロンティア(現タタ・コンサルタンシー・サービシズ)に新卒で入社。

SIer在籍期間からブログ「GoTheDistance」でSIerを巡るIT業界のあり方・エンジニアのキャリアについて記事を書き、累計はてなブックマーク数40,000を超えるブログになりました。

「ITを使いこなしたいなら、ユーザー企業は内製すべき」と主張しているうちに、2009年から雑貨卸の有限会社 エフ・ケーコーポレーションで内製化を1人で担当するはめに。メーカー送料ロットのない雑貨卸というビジネスモデルをITシステムを実装することで確立し、経済産業省が主催するIT経営実践認定企業に選ばれました。

「システムを作る人材や会社」はあっても「何が正しいITシステムなのか」を事業会社の立場で考え、デザインできる人材が枯渇している。

この課題を解決したいという思いから、会社を創業しました。

重度の野球好きで、東京ヤクルトスワローズのファンです。



IT企画の進め方

ITプロジェクトの進め方、公開中

事業を運営するために必要なITや業務システムの企画の作り方、プロジェクト担ってからの進め方をワークフローという形で完全無料公開しています。10000文字超えの力作です。是非御覧ください。

ITプロジェクトの進め方

IT戦略・IT企画の無料相談承ります。

ITプランナーが御社にお伺いして、御社のシステム企画のディスカッション・パートナーをさせて頂くサービスです。60分時間限定ですが、IT企画のモヤっとスッキリさせるお手伝いをさせて頂けたら。

ITプランナーへの無料相談

お問い合わせはこちらから