未経験者からプログラマーZET

未経験でもプログラマーに絶対になる!プログラミング初心者のための情報サイト

プログラミングの勉強

データーベースはプログラマーに必要不可欠なスキル。イメージを掴もう

2017/11/07

Ads by Google

データベースとは何か?

データを格納する機能をもつソフトウェアです。

文字データや画像データを保存する表のようなもので、エクセルをイメージするとわかりやすいでしょう。

文字も画像もバイナリデータ(0と1で表すことができるデータ)として、保存をすることができます。

サーバーに画像を置くのではなく、セル内に0と1が組合わせられたデータで保存されるイメージです。

Oracle、MySQLなどが有名でそれぞれのSQL文を使ってデータを出力することができます。

エクセルでイメージしたデータベースの仕組み

知っておきたいデータベース用語が4つあります。エクセルと同じような仕組みなので、照らし合わせてみるとイメージが湧きやすいでしょう。

データベース:エクセルで例えるとファイルのこと。システムを指す場合もあります。
テーブル:エクセルで例えるとシートのこと。データベースの中に各テーブルが存在しているイメージです。
カラム:エクセルで例えると列のこと。カラム名は列の項目名を指します
レコード:エクセルで例えると行のこと。1行分のデータを1レコードとします。

データベース、テーブル、カラムにはそれぞれ名前があり、レコードは数で表すことが多いです。

SQL文でできること

データベース(DB)はSQL文を使って管理を行うことが可能です。

SQL文で、DBへアクセス可能なユーザーアカウントの追加・設定や、文字や画像データの登録・変更・削除・検索をおこなうことができます。

複雑な条件に合致したデータのみを取得することも、すばやくできるので非常に便利ですね。

 

たとえば、顧客管理システムでは、来月誕生日を迎えるお客様へDMを発送するためにリストを出力するといった使われ方もされます。

全国の顧客リスト数十万件に対して、特定のエリア・特定の年代・性別・誕生月を絞り込んだリストを瞬時に出力可能にするのです。

住所・氏名シールなどをまとめて作成出来れば、発送作業に時間をかけることなくDMが作れますよね。

DBの知識は身近なところで役に立つのです。

DBの設計に必要な考え方

将来的な変化に柔軟に対応できるデータの設計を考えなくてはいけません。保守しやすい形式でデータを格納する設計が重要です。

少し難しいので例をあげて考えてみましょう。

通販会社の顧客情報を変更をすると想定します。

顧客Aさんのメールアドレスが変わることになりました。

データーベースにどのように手を加えればよいでしょうか。
エクセルのシートでイメージしながら考えてみましょう。

===========

Aさんは8/10と8/20に商品を購入してくれています。
8/10は3商品
8/20は1商品

これをデータベースで表すと下記のようなイメージです。

データーベース

データベースの値が重複していますのですべてのメールアドレスを変更しなくてはいけません。4レコード分の変更が必要です。

もしAさんが10商品ずつ5日にわたって購入していたら50レコード分の変更です。大変ですね。

そこで登場するのがリレーショナルデータベースです。リレーショナルデータベースとはテーブルとテーブルがリンクするような形でデータを格納します。

テーブルを分割することでメールアドレスが変更されても顧客テーブルだけ変更すればよくなりました。

また、この状態でもSQL文でテーブルを組み合わせて最初のテーブルと同じデータを出力することも可能です。

テーブルをふたつに分けることで保守性があがるのがおわかりいただけたでしょうか。

本来であれば顧客はたくさんいますし、さまざまな条件での追加や変更があり、ユーザーが操作をする度にデータベース内の値は変わります。

反対に購入された後の履歴データなどは変更されてしまうと履歴として機能しなくなってしまいますので、変更させない手順も必要です。

データベースのスキルはプログラマーやエンジニアには必要不可欠

データベースは言葉のとおり、データを登録・保管してくれ、検索時には条件に合致した情報のみを出力してくれるソフトウェアです。

データベースエンジニアは、設計の段階から未来のデータ運用の側面や、検索速度を最適な状態にするようチューニングを行う役割を持ちます。

データと業務内容は密接な関係にあるので、エンジニアとして業務内容を理解しつつ、データーベースの知識も深めておかないと、規模の大きな改修が発生しかねません。

WEBシステムに使われる場合は画面の表示までにDB側の処理時間も加算されてしまいますので、シビアな対応が求められるケースが多いですね。

またチームで仕事をしている場合は、システムを理解していない担当者とのコミュニケーションも必要になってきます。データベースのスキルのみならず、高い対人スキルを求められる傾向にあります。

Ads by Google

-プログラミングの勉強