就転活のコツ・秘訣

【中高年のIT転職】未経験者が知っておくべき設計スキル!【DB設計】

2020年3月5日

ITエンジニア転職に必要な知識として一番最初に挙げられるのは「プログラミング」の知識でしょう。

20代、30代であれば確かにそれは正しいと言えます。

しかし、40代、50代を対象にした場合、果たして「プログラミング」の知識だけで、転職に必要な知識は事足りるのでしょうか?

昨今、システムと連動して構築されるダイナミックコンテンツ(動的システム)は、従来のWebデザインやコーディング技術だけでは対応できない専門的な知識が要求されるようになってきました。

未経験なら知っておくべき必須な知識【DB設計】

言葉の利用頻度に対して、その実態がきちんと理解されていないデータベース。

しかし、データベースを知らずしてシステム開発は不可能といっても過言ではありません。

SQLを駆使してデータベースを使いこなすとまではいかなくとも、プログラムを書くことなく、データベース設計の基本的な考え方と手順を知ることくらいは、ITエンジニアにとって必要最低限なスキルと言えるでしょう。

データベース設計というと「データモデリング」という分野が確立されているように、大変奥の深いものです。

データベース設計の良し悪しによっては、ブログラムの制作にかかる負荷が大きくも小さくもなり、データ管理を行う上での使い勝手にも影響与えます。

IT転職後のエンジニアライフを問題なく送っていくためには、データベースの知識は必要不可欠となります。

企業システム=ダイナミックコンテンツ

従来までのシステム開発経験がある企業でも、データベースやサーバーアプリケーションが動作しているサイトの構築となると、従来の制作作業と何が異なってくるのか解らないという人も多いようです。

ましてや40代、50代でダイナミックコンテンツ(動的システム)制作に関わる場合、従来のシステム開発との違いを理解し、さらにどのようなスキルと人材が必要かを理解する必要があります。

プログラミングの知識だけでシステム開発が行えるほど、昨今のIT業界はあまくはありせん。

今後、IT分野への転職を図る以上、データベースの知識は避けて通ることは出来ないスキルの一つと言えるでしょう。

データベースについて

ダイナミックコンテンツ制作において不可欠となってくるのがデータベースです。

今日では日常的に語られているデータベースですが、その実体を説明しろといわれると言葉に詰まってしまう方が多いのではないでしょうか。

「SQL Server」や「Oracle」「 PostgreSQL」「Sybase」「MySQL」「DBMS」など、データベースに関連するさまざまな言葉は耳にしますが、具体的にそれが何であるか全く解らない方も多いと思います。

そこでまずデータベースとはどんなものか、その仕組みについて整理してみます。

データベースとは?

データベースとは、一言でいうならばデータを保管しておいて、必要に応じて引き出すことのできる「データの入れ物」です。

例として、簡単な商品データで考えてみます。

必要な項目は「品名」「定価」「サイズ」「色」など、その商品の特性を表すデータが必要となります。

また、販売管理という業務を考えた場合は、定価以外にも「原価」「卸値」などのデータも必要であり、さらに「日次」「週次」「月次」などの売上や在庫数なども重要です。

ただし、先にも述べたように、データベースは単なる「データの入れ物」であるため、保管されているさまざまなデータがとんな意味を持つているかを知っているわけではありません。

単なるデータの集合体なのです。

DBMS(データベースマネジメントシステム)とは?

データベースはデータを格納する単なる「入れ物」と言いました。

そのままではシステムとして、何も役立つことはありません。

そこでデータベースに保管されたデータの「参照」や「更新」「登録」「削除」を操作するために「DBMS(データベースマネジメントシステム)」が必要となるのです。

実際の現場で、打ち合わせの際に語られる「データベース」とは、格納されたデータを操作する「DBMS」を指していることが多いので注意です。

SQLとは

DBMSを通じてデータベースに保管されているデータを操作するには、データベース専用の言語である「SQL」を利用します。

SQL言語はとてもシンプルな考え方となっており、基本的にたった4つのコマンド(SELECT、INSERT、UPDATE、DELETE)でデータの各種操作を行うことが可能な言語です。

コマンド機能内容
SELECT検索テーブルから任意の条件に合致するデータを取り出す
INSERT追加テーブルに新しいデータを追加する
UPDATE更新テーブルに保存されているデータを修正して更新する
DELETE削除テーブルに保存されているデータを削除する

データベース設計とは?

一般的なリレーショナルデータベースでは、表現されるデータ構造を管理する際に、内部的に行と列を持つ表形式で管理を行い、表の全体部分を「テーブル」、1件1件のデータを表す行を「レコード」、そして列を「フィールド」と呼んでいます。

データベース設計とは、データの集合であるテーブル構造や各テーブル内のフィールド構造などを正しく定義することを指します。
本記事でのデータベース設計とは、物理的にサーバマシンへDBMSの導入を行う「インフラエンジニア(データベースエンジニア)」の作業とは別の工程になります。

正確には、インフラエンジニア(データベースエンジニア)によって、データベースサーバー上に導入されたDBMS(ソフトウエア)の機能を使用して、データ格納構造体を設計する作業となります。

テーブル設計

テーブル設計とは、データベースの実体を作りあげる作業となります。

使用するデータベースに合わせてテーブルとフィールドを定義し、最終的にデータベースに実装できるところまでもっていく作業を指します。

  • データベース設計のステップ
    • データの項目洗い出し
      ナビゲーション設計書の「画面イメージ」「画面遷移図」等から必要な項目を抽出します。
    • 項目ごとにグルーピング
      項目の意味や使い方によりエンティティ(テーブル候補)を決定します。
    • 各項目の型を決定
      フィールドの具体的な設計を行います。
    • 正規化
      テーブルの分割によって、データの重複を排除します。
    • 定義体作成
      実際に利用するDBMSに合わせて構造を定義します。

上記のステップを行い成果物である「テーブル一覧」「テーブル定義書」「ER図」「アクセスマトリックス(CRUD)」を作成します。

テーブル一覧

システムに必要なテーブルの一覧情報です。

「テーブル名(物理)」「テーブル名(論理)」「テーブル属性」などを記載しています。

上記画像は、私が過去に受けた案件のテーブル一覧です。クライアントに許可取得済み!
  • テーブル属性
    • マスターテーブル
      企業内データベースなどで、業務を遂行する際の基礎情報となるデータのこと。また、それらを集約したファイルやデータベースのテーブルなど。単に「マスタ」と省略するのが一般的である。
    • トランザクションテーブル
      企業の情報システムなどが扱うデータの種類の一つで、業務に伴って発生した出来事の詳細を記録したデータのこと。日々データが蓄積されていくため、扱うデータ量が大きくなる。

ここで挙げたテーブルごとに、内部のフィールドデータ型を決定していきます。

テーブル定義書

各データを収める項目のことをフィールドと呼びますが、ある程度テーブル候補となるクループ化を進めると同時に、このフィールドに具体的にどんな形式のデータが入ってくるかを決定し、データベースがシステム的に必要とする情報である「フィールドのデータ型」を決定します。

上記画像は、私が過去に受けた案件のテーブル定義書です。クライアントに許可取得済み!

データ型には「文字列型J「数値型」「日付型」などがあり、あるデータをデータベースが扱う際に、内部的にどう扱えばよいかを表現する情報となります。
データ型は扱うデータベース製品ごとに微妙な違いがあります。

  • データ型を決定する際の考慮事項
    • 数値型
      最大値は?最小値は?
      小数点以下の桁数は?
    • 文字列型
      文字数は固定?変動?最大文字数は?
    • 日付型
      年月日?時分秒?両方?

ER図(Entity Relationship Diagram)

データ構造を設計する際に、分かりやすく表現するためにER図(EnityRelatonshlpDagram)という図式で表現することが一般的です。

上記画像は、私が過去に受けた案件のER図です。クライアントに許可取得済み!

ER図では、データベース設計の項で触れたように、エンティティ(実体)、リレーションシップ(関連)、アトリビュート(属性)という3つの要素を明らかにして行くことを目的としています。

ER図は、特にデータベースを前提としている訳ではなく、データの相関関係を明確化する「データモデリング」のための手法です。

アクセスマトリックス(CRUD)

CRUDとは、データベース管理システム(DBRS)に必要とされる4つの主要な機能、「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」をそれぞれ頭文字で表したものを指します。

例えばSQLにおいては「作成」に「INSERT」のコマンドが「読み出し」に「SELECT」「更新」に「UPDATE」「削除」には「DELETE」のコマンドがそれぞれ対応しています。

上記画像は、私が過去に受けた案件のアクセスマトリックスです。クライアントに許可取得済み!

CRUDのそれぞれの機能を網羅していることは、データベースシステムの完全性を備えるために必須の要素であるとされています。

SQL定義体

データベース設計における集大成とも呼べる成果物がこのSQL定義体になります。

これまでに設計してきたデータベース構造体情報をSQL言語で定義しておくことが可能です。

上記はOracle12cのサンプルDB定義体の一部です。

データベースの構造体構築の際には、この定義体をDBMSの機能を使って流し込むだけで、データベースの構築が可能となります。

注意ポイント

昨今はデータベースアプリケーションのGUI化が進み、定義体を作成せずともデータベースが作成可能となってきました。
そのため、データベースの知識がない方が、パラメータの意味をよく理解せずに誤った設定でデータベースを構築してしまう問題が増えています。
例えば、設計書と実際のデータベースのパラメータ(使用文字コード)が違うことも少なくなく、データベースを再構築する例が頻発しています。
SQL定義体が作成されている場合は、誤っている個所を修正して再度流し込めば済むだけの話なのですが、GUI環境で作成した場合は手作業でデータベースの再構築が必要となります。

必ずSQL定義体を作成するようにしましょう。

まとめ

まとめ

よく基本設計書を作成する意味を勘違いしているエンジニアを見受けますが、基本設計書作成の目的は、エンジニアが各々システム開発を行うための資料ではありません。

システム開発に関わる全てのメンバー(顧客含め)のベクトル(方向)を統一するための資料です。

ベクトルの統一を確認した後、詳細設計書作成のフェーズに進むことが出来るのです。

基本的に上流工程の作業は、システムエンジニア(SE)の行う作業に分類されていますが、どんなに優秀なSEであっても人間です。

他の問題をいくつも抱えながら基本設計書を作成している事も少なくありません。

傍に同じ目線で相談できるエンジニアがいることは、精神的に非常に心強く思われるはずです。

40代、50代でIT業界へ転職を考えているならば、少なくとも「プログラムできます!」レベルではすぐ切り捨てられてしまうことを覚悟しましょう。

本当に欲しい人材は、難問を共に頭を抱えて相談できるエンジニアだと思います。

常に人材不足なデータベースエンジニア。

データベースの知識を身に付けることは、非常に強力な武器になります!

--注意(補足)--

データベースは動的システムにおいて、根幹を形成する要の技術です。

現場で顧客を相手にシステム開発を行う以上、絶対に「知ったかぶり」は厳禁です。

過去に必死で「知ったぶる」中高年の素人エンジニアを何人も見てきましたが、そのあと必ず大問題を引き起こしていました。

プライドが邪魔する気持ちはわかりますが、絶対に「知ったかぶり」だけはやめるべきです。

よく読まれている記事

1

21世紀の現在、ネット上では掲示板やアンケートフォームと言った一見簡単に見えるサービス機能から、商品カタログ、eコマースなどのスケールの大きなコンテンツまで、様々なダイナミックコンテンツが普及するよう ...

2

テクノロジーの進化により今後10年で50%以上の仕事がなくなると言われています。 それは現在の仕事がプログラムに取って代わられることを意味します。 今後「プログラミング」は「文字」と同様に「一般教養」 ...

3

2019年、出生数は過去最小の86万4千人!推計より2年早く、初めての90万人割れ日本の経済成長(2019年10~12月期の実質GDP)は、年率6.3%減! コロナウィルスとは関係なく急落しています。 ...

4

ITエンジニア転職に必要な知識として一番最初に挙げられるのは「プログラミング」の知識でしょう。 20代、30代であれば確かにそれは正しいと言えます。 しかし、40代、50代を対象にした場合、果たして「 ...

5

ここ数年、メディアなどでフリーランスという言葉を耳する機会が増え、それに比例するようにフリーランスを志す人が急増しています。 テクノロジーの進歩により、個人単位でのロケーションにとらわれないスタイルで ...

6

人口知能や機械学習というキーワードは、IT業界で働く人にとっては馴染みが深くなりつつあります。 これらを駆使するAIエンジニアには高いスキルが要求され、日本だけでなく世界的に見ても不足している状況です ...

-就転活のコツ・秘訣

Copyright© Beエンジニア , 2020 All Rights Reserved.