かけだしSEのためのデータベース設計入門 | サービス | プロエンジニア

  • 企業担当者様へ
  • お問い合わせ
  • 運営会社|

  • ホーム
  • プロエンジニアとは
  • コラム
  • 正社員求人情報
  • フリーランス案件情報
  • 運営会社
  • お問い合わせ
  • 企業担当者様へ

IT・Web の求人・転職>
IT業界コラム>
かけだしSEのためのデータベース設計入門
絞込み検索
する

    かけだしSEのためのデータベース設計入門

    • Tweet
    • このページをはてなブックマークに追加

    公開日:2017年01月19日 最終更新日:2019年09月27日

    これからデータベースについて勉強しようとした場合、独学では難しいのが「設計」です。データベースの設計手順については、企業によりローカルルールの違いもあり一概に説明するのは困難ではありますが、こんなことをやっていますよという基礎を簡単にご紹介したいと思います。

    目次

    1.データベースの「設計」は大きく分けて3段階

    1.1 概念設計とは
    1.2 論理設計とは
    1.3 物理設計とは

    2.概念設計の手順

    2.1 要件を明確にする
    2.2 エンティティを抽出する
    2.3 概念データモデルを作成する
    2.4 ER図を作成する

    3.論理設計の手順

    3.1 ER図をRDBのテーブルに変換する
    3.2 正規化を行う

    4.物理設計の手順

    4.1 データ型を決める
    4.2 性能要件を確認する
    4.3 インデックスを作成する
    4.4 必要に応じて正規化を崩す
    4.5 データ格納領域を設計する

    5.まとめ

    1.データベースの「設計」は大きく分けて3段階

    データベースの設計フェイズには、大きく分けて「概念設計」「論理設計」「物理設計」の3段階があります。

    1.1 概念設計とは

    概念設計では、データベースを必要とする業務を行うために必要なデータを抽出し、「概念データモデル」を作成します。

    ▲目次へ戻る

    1.2 論理設計とは

    論理設計では概念データモデルを整理し、使用するデータベースの種類に合わせた形に変換を行うことで「論理データモデル」を作成します。

    ▲目次へ戻る

    1.3 物理設計とは

    物理設計では必要なハードウェア資源を確保し物理的なデータ配置を決定するだけでなく、パフォーマンスを考慮してデータベースを整理し、より現実的な「物理データモデル」を作成します。

    各フェーズの詳しい手順は、次の項目にてご説明致します。

    ▲目次へ戻る

    column_image6499_01

    2.概念設計の手順

    2.1 要件を明確にする

    まず初めに、作成しようとしているデータベースで一体どんなデータを管理したいのかを確認します。データベースを使用する対象の業務を詳細に分析し、必要な要件を洗い出します。ここで要件定義が不十分だと後で大問題につながるため、特に顧客データベースを作成する場合などは思い込みを排除して十分な打ち合わせを行うことが重要です。

    ▲目次へ戻る

    2.2 エンティティを抽出する

    エンティティとは日本語で「実体」と訳されますが、ここでは「ある目的のデータひとかたまり」というイメージです。データのカテゴリという感じを想像して頂けると分かりやすいかと思いますが、例えば社員データを管理したい場合、「氏名」や「役職」、「所属部署」などがエンティティとして抽出できます。

    ▲目次へ戻る

    2.3 概念データモデルを作成する

    業務に必要なエンティティを全て洗い出したら、それを元に最初のデータモデルとなる「概念データモデル」を作成します。この段階では、どのタイプのデータベース(リレーショナルデータベースかNoSQLかなど)を利用するか特定しないようにモデルを作成します。

    ▲目次へ戻る

    2.4 ER図を作成する

    概念データモデルの作成には、ER図が多く用いられます。次の図は、社員データを表すER図の例です。なおER図の書き方にはいくつかあり、代表的なものには「IE記法」や「IDEF1X記法」などがあります。今回は、「IE記法」を例にとってご説明します。

    column_image6499_02

    まず社員データを取りまく部署データ、役職データ、等級データをそれぞれ大きな分類とし、日の下部分に抽出したエンティティを余さず配置し、整理します。

    column_image6499_03

    次に、データを特定するための主キーを決定します。今回、社員データは「社員番号」、給与等級データは「等級」がそれぞれのデータの中で一意になるので、それを主キーに設定します。 役職と部署については重複が考えられる項目しかないため、専用の主キーを用意します。

    column_image6499_04

    最後にリレーションを設定します。関係のあるデータ同士を線でつなぐ「リレーション」に、図の鳥の足のような「カーディナリー」を記入します。このカーディナリーは「多重度」を表しており、図のようなものは「1:多(1:1以上)」を表しています。(鳥の足のようなものが「多」を表す記号です)

    ▲目次へ戻る

    3.論理設計の手順

    3.1 ER図をRDBのテーブルに変換する

    論理設計では、まずデータベースの種類を決定し、それに沿った形に変換したテーブル定義を作成します。これを「論理データモデル」と呼びます。

    column_image6499_05

    上図ではデータ型も記載していますが、正しくは後の物理設計フェイズにて決定します。

    ▲目次へ戻る

    3.2 正規化を行う

    作成したテーブルから冗長な部分などを削除するため、正規化を行います。上図では、すでに第3正規化まで必要のない状態まで分解されています。

    なお詳しい正規化の手順については、次の記事をご参照下さい。

    ■関連記事: リレーショナルデータベース正規形の種類と正規化手順

    ▲目次へ戻る

    4.物理設計の手順

    4.1 物理設計の手順

    物理設計では、データの入れ物など物理的な部分を決定していきます。まず「文字列」「数字」「英数字(半角)」などのデータ型を決めます。

    ▲目次へ戻る

    4.2 性能要件を確認する

    1日に何件、年間何件ずつデータが追加されるのかの容量や、一度にどのくらいアクセスがあるのかなど、業務を円滑にすすめるために必要なハードウェアやネットワークなどの性能要件を確認します。

    ▲目次へ戻る

    4.3 インデックスを作成する

    性能(パフォーマンス)向上のために、インデックスを作成します。データベースにインデックスを登録すると、処理スピードの向上が図れます。物理設計まで行われて修正が加えられたデータモデルを、「物理データモデル」と呼びます。

    ▲目次へ戻る

    4.4 必要に応じて正規化を崩す

    また正規化の関係でパフォーマンスが足りない場合、あえて正規化を崩すことがあります。

    ▲目次へ戻る

    4.5 データ格納領域を設計する

    性能要件にて確認した量のデータを十分に格納できるだけのデータ領域を計算し、ハードウェアの仕様やハードウェア上でのファイルの配置を決定します。

    ▲目次へ戻る

    column_image6499_06

    5.まとめ

    今回の記事をまとめるにあたりOracle社から提供されているDB設計の手順書や関連書籍などを確認しましたが、自分が現場で経験したことだけでなく、本によっても各フェイズで行う内容がずれているケースがみられました。(テーブル定義を決めるのが論理か物理かで割り振りが異なるなど)このようにDB設計は一概に言えるものではありませんが、本記事でおおまかな流れのイメージを掴んで頂けたら幸いです。

    ▲目次へ戻る

    関連記事: 無料で今日からDB導入!データベース作成に関するフリーソフトまとめ
    関連記事: リレーショナルデータベース学習の難所、外部結合と内部結合の違いとは?
    関連記事: リレーショナルデータベース正規形の種類と正規化手順

    正社員

    【Oracle】データベースエンジニア|企業様向けのデータベースの構築

    年収350万円〜650万円
    勤務地 東京都 中央区

    正社員

    【SQL/Java】データサイエンティスト|ビッグデータの分析・コンサルティング

    年収350万円〜700万円
    勤務地 東京都 千代田区

    フリーランス

    【SQL】ファッションアプリのデータサイエンティスト★週3日~

    月額単価40万円〜
    勤務地 東京都 渋谷区

    正社員

    【Oracle】データベースエンジニア|Oracle製品での設計・構築

    年収300万円〜
    勤務地 東京都 中央区
    • Tweet
    • このページをはてなブックマークに追加

    おすすめ記事

    • eclipseを日本語化してみよう!

      eclipseを日本語化してみよう!

      「eclipse」の日本語化をする「pleiadesプラグイン本体」のダウンロードとインストール方法について説明...

    • MySQLでCSVファイルを使って結果出力やデータ入力を行う方法

      MySQLでCSVファイルを使って結果出力やデータ入力を行う方法

      前回記事:MySQLでテーブルを作成・削除・変更する方法では、MySQLにおけるテーブルの追加・変更・削除...

    • MySQLを高速化するパフォーマンスチューニング入門

      MySQLを高速化するパフォーマンスチューニング入門

      関連記事:初心者からのMySQLストアドプロシージャ&ファンクション入門では、MySQLでのストアドプロシ...

  • 簡単!30秒登録無料キャリア相談 ちょっと聞いてみる

    無料プログラミング研修

    CTO養成講座&転職支援サービス OCTOPASS 詳細はこちら

    コラムカテゴリ検索

    コラムカテゴリ

    コラムカテゴリ

    フリーワードで探す

    カテゴリで探す

    開発・プログラミング
    クラウド
    言語・プログラム
    インフラエンジニア
    フリーランス
    雑学・キャリア
    PHP
    Java
    JavaScript
    jQuery
    Linux
    データベース
    Git
    コマンド系
    HTML・CSS
    ftp

    ピックアップ

    正社員

    【Oracle】データベースエンジニア|企業様向けのデータベースの構築

    年収 :350万円〜650万円

    ■業務内容■ 企業様向けのデータベース関連業務: データベース診断、コンサル、設計、構築、移行、性...

    株式会社 システムエグゼ

    正社員

    【SQL/Java】データサイエンティスト|ビッグデータの分析・コンサルティング

    年収 :350万円〜700万円

    【仕事内容】 ビッグデータを貯めるインフラの構築、溜まったデータの分析、仮説、検証、レポート作成...

    チームラボ株式会社

    フリーランス

    【SQL】ファッションアプリのデータサイエンティスト★週3日~

    月額単価 :40万円〜

    手持ちの服からコーデを自動で提案してくれるファッションアプリのデータサイエンティスト業務を担当し...

    正社員

    【Oracle】データベースエンジニア|Oracle製品での設計・構築

    年収 :300万円〜

    【業務内容】 A. Oracle製品での設計・構築・チューニング B. Oracle運用管理

    株式会社VITA

【サイトガイド】
  • 運営会社
  • |サイトマップ
  • |利用規約
  • |プライバシーポリシー
  • |お問い合わせ
  • |企業担当者様へ
インターノウスのプロエンジニアでは、ITエンジニア・IT技術者の上流工程求人や、転職・キャリアアップ情報を発信しています。 プログラマ、SE、
ネットワークエンジニア、ITコンサルなど上流、プロジェクトマネジメントを目指す全てのITエンジニアをサポートします。

Copyright(C) インターノウス internous,inc. 2005-2019 All rights reserved.

無料キャリア
相談をする
未経験から
エンジニアを目指す