未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

【DB入門】データベース設計の手順

title


データベース設計の手順

データベースをどのような考え方で作成していくか、順を追って解説していきます。

「データベースは、単にテーブルを作ってデータを登録すればよい」と思われがちですが、テーブルの作り方を誤ると無駄なデータを大量に登録したり、必要なデータが不足していたり、欲しい情報がなかなか見つからなかったり、いろいろと困った事態になります。

また、データベースを使い始めてから、このフィールドを追加したい、と思ってもすでにデータが入っているテーブルを変更するとデータの整合性が取れなくなったりします。

データベースは、実際に使い始める前に考えられるあらゆることを想定して作っておく必要があるのです。



データ設計のおおまかな流れ

それではまず、データベース設計の大まかな流れを確認しておきましょう。

  1. データベースの目的を考える

  2. 集めた情報をどのように出力するか考える

  3. 必要な情報を整理する

  4. テーブル間の関係を確認する

  5. データ登録時の決まりを作る

  6. データベースを作成する

  7. データベースの利用方法を考える

  8. データベースを利用するアプリを作成する



データベースは、データベースソフトウェアを使って作成をしていきますが、いきなりデータベースソフトウェアを動か すわけではありません。

何かモノを作る事を考えてみてください。

いきなり作り始めるわけではなく、目的を考え、目的を実現するために具体的に何をすればよいかを考えますよね。


夕食を作ることを例にとってみましょう。

何のために夕食を作りますか?

家族のため?

自分だけのため?

夕食は何時ごろ食べますか?

その時間に合わせて行動をしなければなりません。


さて献立は何にしましょうか?

今夜はカレーにしましょうか。


材料は何が必要でしょうか?

カレーに必要な食材のうち、自宅の冷蔵庫にあって、買わなくて良い食材はなんでしょう。


何カレーにしましょう?

ビーフカレーにしましょうか。


ビーフカレー専用のルーはどれでしょう?

材料が揃ったら、カレーを作り始めます。


何から始めれば良いでしょう?

いよいよカレーができましたが、どんなお皿に入れて、誰がどれくらいの量を食べますか?

子供は大人の半分くらいでしょうか。


このように、夕食を作るために、夕食を食べるまでに様々な作業が発生します。

これらの手順は、データベース作成でも同じように考えることができます。

このような計画を立て、実際の作業を行い利用するまでを、設計と言います。



データベース化の目的を考える

まず、「何を作りたいのか」 「これを利用して何をしたいのか」を考えます。

最初に目的を明確にしておけば、どんな項目が必要で、何ができれば良いかを判断することができます。

目的をあいまいなままにしておくと、せっかく作ったデータベースも使えないものになってしまいます。


販売管理システムの目的を考えてみましょう。

「毎日の売上を登録したい」 「顧客にDMを発送したい」 「商品の金額や在庫を管理したい」といった具合に、データを集積しておきます。

集積したデータを利用して、「どんなお客さんにどんな商品がどれだけ売れたか」 「お客さんはどのような人がいるのか」 「売れ筋商品は何か」といったことを分析することができれば、今後の販売計画が立てられます。

データベースは、ただ単にデータを集めることだけでなく、そのデータを利用するといったところまでを想定して作成します。



 集めた情報をどのように出力するか考える

データベースを利用して「何をしたいのか」を考える時に、「どんな結果がほしいか」を表現する具体的な出力フォーマットを考えると、データベースの目的がより明確になるでしょう。


例えば、毎日蓄積される販売データをもとに、月末に顧客ごとに送る請求書のフォーマットを具体的に作ってみます。

紙に鉛筆で書いても構いません。

WordやExcelで作っても構いません。


請求書には、何を記述したいのかを具体的な形にすることで、それに必要なデータが明確になり、そのためには、どのようなフィールドが必要なのかがわかるようになってきます。


また、それぞれのデータを入力する伝票みたいなものがあれば、それを参行にすると、その伝票からどんなデータが必要になるかがわかります。


下の図の請求書では、顧客データや商品データ、販売実績のデータが必要そうだということがわかります。

請求書



必要なデータを整理する

出力したい請求書フォーマットにでてくる項目を使って、一覧表を作成します。


まず、必要そうな項目をすべて書き出してみましょう。


この請求書を作るには、データベースにどんな項目を用意しておけばよいでしょうか。

項目を洗い出したら今度は、それらの項目を使って一覧表を作成します。

紙に鉛筆で書いてもよいのですが、ここでは、表計算ソフトExcelを使っていくことにします。

どのような順番で、項目を並べれば良いでしょう。



顧客1人が、複数の商品を購入しています。

つまり、各商品は同じ顧客から購入されています。

Excelで作るのであれば自由に項目を配置できるので、請求書と同じように項目を配置することができます。


しかし、データベースのデータは列(項目)と行(レコード)の組み合わせによる二次元の表でなければなりません。


洗い出した項目を顧客ごと、商品ごと、担当社員ごとなどのグループに分けて、項目を並べると良さそうです。

請求書には表示されているけれど、小計や消費生、合計額は計算をすれば導き出せるので、データとして持っておく必要もなさそうです。

不要な項目を洗い出してみましょう。


項目が整理できて一覧表ができたたら、今度は実際のデータを入力してみましょう(仮のデータで構いません)。

実際に値を入力することで、効率の良い項目の並び順や、同じ値の時にはどんな値を入れたら良いかがわかってきます。


このようなデータベース上で効率的にデータを扱えるようにする作業を、正規化といいます。

正規化は、データを一定のルールに基づいて変形する作業です。

データベースに必要な項目が整理でき、一覧表が作成できたら、まずは作った一覧表を眺めてみましょう。

きちんと二次元の表になっていますか?

同じ値を何度も繰り返し入力するようになっていて、入力時に効率悪くなっていないですか?



一覧表の関係を確認する

データベースでは、関連する項目ごとにまとめて別のテーブルを作ることで、繰り返し入力を防いだり、データの修正を効率よく行うことができるような設計にします。

分割した表に、他の表と関連付けられるような項目が必要です。

関連付けを行う項目(主キーを設定するフィールド)は、どれにするか決めなければなりません。

表と表を関連付けるには、両方の表に共通する項目が必要でした。

複数の表を組み合わせることで、請求書に必要なデータを簡単に取り出せるようにします。

もし、うまく必要なデ ータを取り出せないときは、必要な項目がきちんと存在しているか、効率よく入力できるように表は分割できているか、主キーはうまく設定できているかを再度見直します。



データ登録時の決まりを作る

表を作成したら、それぞれの項目にどのようなデータを登録するか、データの種類を考えます。

文字を入力するのか、日付や数値を入力するのか。

また、「必ず値を入力しなければならない項目か」 「すでにあるデータと同じ値を入力して良いかいけないか」など、データ登録時の決まりを項目ごとに定義します。

これらの設定をしっかり行ってお かないと、誤ったデータが登録されてしまったり、分割した表の間でデータの整合性がとれなくなり、データベースの意味がなくなってしまいかねません。



ポイント

ここまで説明してきたデータベースの設計の手順は、ボトムアップアプローチ(bottom up approach)と言います。

ボトムとは「底」という意味です。

つまり下から上へ設計していく手法です。

「下」というのは「具体的なもの」で、「上」は「データベース全体」を指します。

必要な項目を洗い出して、表を完成させていく、というこの手順はまさに「下」から「上」へのボトムアップアプローチと言えます。

これに対して、トップダウンアプローチ(top down approach)は、最初にシステム全体のあるべき姿を把握して、それに必要な情報を収集していきます。

ゼロの状態からシステムを作り上げるため、高度なスキルが必要となります。

データベースにはじめて触れる人は、ボトムアップアプローチから始めると良いでしょう。

データベース設計に慣れてきたら、トップダウンアプローチに挑戦してみてください。



データベースを作成する

これまで作成した表をもとに、データベースソフトウェアを使って実際にテーブルを作り、データを登録していきます。

データベースソフトウェアには様々なものがありますが、私の解説ではフリーソフトウェアであるMySQLを使います。

MySQLではSQLという言語を使って、データベースに命令を送り、テーブルやビューを作ったり、演算を行って必要なデータを取り出したりします。

MySQLやSQLについては別途解説します。


次の表は、代表的なRDBMSの一例です。

RDBMS



どのデータベースを選ぶかは、目的によって異なります。

例えば、住所録などの個人データや会社の一拠点のみで使用する場合は、インターネットを使用しなくて良いので、Accessで十分でしょう。

インターネット経由で不特定多数の人が利用するのであればWebと連携できる、OracleやMicrosoft SQL Server、MySQL、PostgreSQLが良いでしょう。

OracleやMicrosoft SQL Serverは商用です。

データベースは有償で使用し、ライセンス契約を結ぶ必要があります。

これに対して、MySQLやPostgreSQLはオープンソースです。

オープンソースとは、誰でも無償で使用でき、そのプログラムを改良することが許されています。

インターネットを通じてプログラムをダウンロードして、自由に使用することができます。

ただし、利用についてはルールや制限があります。

特に商用で使用する場合には、事前に利用規約を確認しておく必要があります。

日本ではPostgreSQLの人気が高いと言われていますが、MySQLは世界で1,000万以上のサーバーにインストールされて使われています。

Yahoo!、YouTube、GoogleなどでもMySQLが使われています。



データベースの利用方法を考える

そもそも、データベースを使って何をしようとしていますか。

ここで今一度、作ろうとしているデータベースの目的を思い出してみましょう。


データベースは、data-baseつまりデータの基地です。

大量のデータを取り出しやすく、壊れにくいよう効率的に保管してあるだけです。

それらの大量のデータから必要な情報を取り出して何がしたいのでしょうか。

「会社の社員情報から、給与支払いを行いたい」「倉庫にある商品の在庫を管理したい」「毎日の売上を管理して、請求書を発行したい」「オンラインショッピングサイトを運用したい」などなど。

どれも、データベースがないと機能しませんね。

データベースは、蓄積されたデータを多くの人と共有することによって活用されます。

しかし、データベースを利用する人全員が、データベースを扱う専門家になるわけにはいきません。

誰もが気軽にデータベースを利用できるようにするには、難しい部分を除いて簡単な操作でデータベースを扱う仕組みが必要になってきます。

これがアプリケーションです。



データベースを利用するアプリ

データベースを作って、それを利用する大まかな手順は、


  1. データベースを作る

  2. データベースにデータを登録する

  3. データを取り出して利用する



となりますが、「1」はRDBMSが担当し、「2」と「3」はアプリケーションが担当します。


RDMBSはデータベースを扱う専門家なので、アプリケーション開発の機能を持っていません。

データベースとユーザとの橋渡しを行うアプリケーションは、C言語、 Visual Basic、Javaなどの開発言語(プログラム)を使って作成します。

アプリケーション開発者は、開発言語の知識だけでなくSQLにも熟知している必要があります。

DBの利用



システム開発をするにあたっては、次のようなことを考慮します。

  • 利用形態

ローカルPC内での処理か、インターネットを利用するかで、RDBMSの選択が変わってきます。


- データ量

Accessは、1データベースあたり2Gバイトまで利用できます。

一方、OracleやMicrosoft SQL Serverは無制限です。


- ユーザー数

Accessは255ユーザーまで利用できます。

OracleやMicrosoft SQL Serverは無制限です。


- 価格

MySQLやPostgreSQLはフリーソフトウェアなので無償で利用できますが、OracleやMicrosoft SQL Serverは商用なのでかなり値段が張ります。


- 開発効率

Accessは、入力画面や出力結果を簡単に作ることができるデザインツールが用意されているので、短時で作れますが、その他のRDBMSは 、独立したアプリケーションを作る必要があるので開発時間がかかります。


- 開発言語

デスクトップ上で動作するアプリケーションであれば、Visual Basic、C#、Delphiなどを使用します。

Web上で動作させるのであれば、Java、Ruby、PHPなどを使用します。

ExcelやAccessにもVBAというプログラミングが備わっているので、これを利用してデータベースにアクセスするアプリケーションを作成することができます。


参考図書



LINE公式アカウント

仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】


LineOfficial

友だち追加