ビッグデータ時代、データベース設計はエンジニア以外だって知らないとダメ!

データベースって名前は聞いたことあるし何となくデータの管理をするものだとは知っていますよね。でもデータベースが具体的にどう設計されていて、なぜ大切かを理解している人は中々いないと思います(私もよく知りません)。

データベース

しかしデータベースは現代では非常に重要な役割を果たしていてエンジニアだけの話でもない存在となってきています。そこでこの記事ではデータベースの設計がなぜ重要なのかという点について紹介していきます。

データの時代の今データベースの重要性はより高まっている

現代の社会は第4次産業革命の時代と言われています。

産業革命は18世紀に蒸気機関の発明から始まり、その後電気・コンピュータが発明され、その度に社会の在り方が大きく変わってきました。

そして2010年以降は第4次産業革命の時代と言われています。全ての産業はデータを活用したビジネスへと転換するビッグデータの時代です。

産業革命

コンピュータ技術の発展により大量のデータを収集、分析してビジネスへと活かすことが可能となってきた今、データを管理するデータベースの存在はより重要となっています。

データはただ集めれば良いわけではない

ではデータをとにかくデータベースに保存してAIなどを活用すればいいのかというとそう簡単な話ではありません。

よく言われる話ですが、データサイエンティストの人たちがデータ分析、活用をする上で最も頭を悩ませているのがデータの整理(前処理)です。

前処理とは例えば欠損や誤りが存在して正しい分析ができないデータを適切に扱うことが出来るように処理することです。欠損や誤りを防ぐためにはデータベースの入力規則を正しく決める必要があります。

他にもとりあえず沢山データは集められているものの、本当に必要なデータが収集されておらず分析が困難になるということも考えられます。適切なデータを収集するためにはどんなデータが必要かビジネスを正確に理解している必要があります。

つまりデータベースの設計にはデータ管理などの機能はもちろんのこと、ビジネスを正しく把握した適切なデータの取り扱いが求められているのです。

データベースの実装

では適切にデータを取り扱うためにデータベースはどのように設計されるかというと、3つのプロセスを経て実装されます。

概念設計 → 論理設計 → 物理設計

簡単に書くと

  • 概念設計

    ビジネスを抽象的に捉えてデータの構造を把握する。
  • 論理設計

    上の概念モデルの漏れや曖昧さを整理してシステム化に必要な全てのデータ項目を網羅するデータモデルを作る。
  • 物理設計

    具体的なデータベース製品を使用することを考慮して特性や制約に合わせてデータの変換や詳細化をを行う。

データベースの設計と聞くとパソコンをカタカタするイメージですが、それは3つめの物理設計の一部の工程で実は前段階の概念設計や論理設計がしっかりと出来ていないと意味がありません。

そのためデータベースを専門にするエンジニアではなくとも私たちがデータベースについてある程度理解しておくことは極めて大切です。

では具体的にどのような工程を経てデータベースが設計されるかを見ていきます。

データベースの概念設計

概念設計とはビジネスを抽象的に捉えてデータの意味や関係性をモデル化する工程です。

下のようなE-R図(Entity-Relationship Diagram)と呼ばれるビジネスで扱う情報を抽象化してエンティティ(実体)とそのリレーションシップ(関係)を表したモデルを作成します。

E-R図

データベースの論理設計

論理設計ではシステム化に必要な全てのデータを定義し、データに漏れや重複が生じないように正規化することが求められます。

正規化とはデータの重複を排除してデータの更新時の矛盾を防ぐ処理です。例えば大学の履修データベースの概念設計で下のようなデータを集めたいと言うことになったとしましょう。

下のデータでは何が問題でしょうか?

1つにはサトウさんの項目が冗長であることです。もしサトウさんが学部を情報から工学部変えるということになった場合、下の表では全ての行をいちいち更新する必要があります。

これでは更新漏れの可能性も出てきて安心なデータベースとは言えません。

そのため正規化という処理を行って更新異常が生じないようなデータ設計を行う必要があります。

正規化

データベースの物理設計

物理設計では具体的なデータベースマネジメントシステムを使用することを念頭に、各データのデータ型やデータ長、重複を許すかなど具体的な制約を決めて設計書を定義します。

まとめ

この記事で言いたかったことは、ビックデータの時代においてデータを活用するためにはエンジニアがプログラムを書けば大丈夫というわけではなく、ビジネスの要件を正確に理解してモデル化することが非常に大切だということです。

優れたデータの取り扱いのためには、専門のエンジニアでなくともデータベースへの理解は必要なようですね。

コメント

タイトルとURLをコピーしました