エンジニアの知識

駆け出しSEが知っておくべき設計スキル!【DB設計】

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

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

駆け出しSEが知っておくべき設計スキル【DB設計】

言葉の利用頻度に対して、その実態があまり理解されていないことの多いデータベース。しかし、データベースを知らずしてシステムの開発は不可能といっても過言ではありません。

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

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

データベースについて

昨今のシステム開発において、必要不可欠となっているデータベース。

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

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

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

データベースとは?

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

ただし、データベースは単なる「データの入れ物」であるため、保管されているデータが「とんな意味を持っているか」など、まったく考慮してくれません。

この概念は、「SQL Server」や「Oracle」「 PostgreSQL」「Sybase」「MySQL」etc・・・、世界の有名DBすべてにおいて共通です。

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

データベースはデータを格納する単なる「入れ物」に過ぎない為、そのままではシステムとして何の役にも立ちません。

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

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

そして、この「DBMS(データベースマネジメントシステム)」から、「SQL Server」や「Oracle」「 PostgreSQL」「Sybase」「MySQL」等、各社ベンダーの特徴が色濃くなり始めます。

SQLとは

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

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

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

データベース設計とは?

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

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

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

テーブル一覧

「テーブル一覧」とは、システムに必要なテーブル情報を一覧にまとめたものです。

「テーブル名(物理)」「テーブル名(論理)」「属性」「説明/備考」を記述します。

項番 テーブル名(論理) テーブル名(物理) 属性 説明
1 案件テーブル job_tbl トラン 案件情報を保有するテーブル
2 クライアントマスタ client_mst マスタ 顧客情報を保有するマスタ
3

基本設計段階では、まだ物理名まで決まっていない事もあると思います。その場合は空白にしておきます。また、テーブルには、大きく分けて、「マスター系」と「トランザクション系」の2つの種類に分類されます。

2つのテーブルの種類

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

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

テーブル定義書

テーブル定義書」は、データベースに保有するテーブルを定義する仕様書です。「主キー」や「複合主キー」などに加えて、「アトリビュート」(付随情報)を整理します。各データを収める項目のことをフィールドと呼びますが、ある程度テーブル候補となるクループ化を進めると同時に、このフィールドに具体的にどんな形式のデータが入ってくるかを決定し、データベースがシステム的に必要とする情報である「フィールドのデータ型」を決定します。

ポイント

  • 項番:あると何かと便利(連番)
  • フィールド名
    • フィールド名(論理):テーブルの項目名
    • フィールド名(物理):決まっていれば記述
    • 数値型:最大値は?最小値は?小数点以下の桁数は?
    • 文字列型:文字数は固定?変動?最大文字数は?
    • 日付型:年月日?時分秒?両方?
  • 制約
    • NULL制約:NULLの可否
    • KEY制約:主/外部
    • UNIQUE制約:項目名/番号
  • デフォルト値:各項目の初期値
項番 フィールド名 長さ NULL制約 KEY制約 デフォルト値 説明
1 案件番号 数値型 13 NOT NULL 0000000000000 ・・・
2 案件名 文字列型 4k NOT NULL   unknown ・・・
3

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

ER図(Entity Relationship Diagram)

「ER図」(Entity Relationship Diagram)は、データベースへ情報を格納するために、「実態(エンティティ、データの集合体)」と「データの関係(リレーションシップ)」を図示するためのものです

ER図の例

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

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

CRUD図

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

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

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

まとめ

ざっとデータベースについて説明してきました。

IT未経験でも、これからIT業界に就職/転職を考えている方は少なくないかと思います。スクールや独学だけでは習得できないデータベースやその設計知識が、エンジニアとしての成功のカギになると言っても過言ではありません。

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-エンジニアの知識