*

「初級」〜「中級」のPHPエンジニアのスキルについてまとめてみる(DB編)

公開日: : 最終更新日:2018/05/05 MySQL, 講義

本日はデータベース系の必要な技術について。

ウェブエンジニアといっても技術領域が非常に広いのですが、
PHPで仕事を指定していればデータベースを扱う機会が非常に多いでしょう。
(どの規模の案件かにもよりますが、一定以上の規模のWebアプリであればほぼ100%とといっていいかと思います。)

私も携わった範囲内で実務で必要だなと思う知識などについて下記に書いておきます。

なおDデータベースといってもWEB形であればほぼMySQLを使われている方が多いでしょう。
8割方の方がMySQLでそれ以外の方はPostgreSQLや業務形ではOracleではないでしょうか。

基本的にMySQLを前提として話を進めさせていただきます。

SQL(特にSELECT句について)

身につけておきたいスキル

  • 4,5個のテーブルが絡んでいても欲しいデータを言われてSQLがすぐに組める
  • EXIST,CASE,HAVINGなどが適切に使える
  • JOINに対して集合のイメージが持てる
  • ループの中で発行しているようなSQLがある場合、集計をうまく使って1回のSQLに収めることができる

実務でデータベースを使ってまず必要になってくるのはSQLがスラスラかけるかですね。
何も見ずに基本のSELECT,INSERT,UPDATE,DELETEがスラスラかけるようになっておきましょう。

といってもある程度複雑なSQLになりますと8割方SELECT句が適切にかけるかどうかといったことになります。
特にデータの集計を必要とするようなケース(例えばECサイトを管理していて売り上げの集計を行うなど)で適切なSQLが
かけるかどうかでスピードが変わってきます。

複雑なデータの取り出しはプログラム側で配列を使ってゴリゴリやるよりSQLで一気に出してしまった方が楽になるケースもあります。

チューニング系

アプリが遅い場合、遅いクエリを発見できる
EXPLAINの基本的な見方がわかり、遅い部分の発見とインデックスを貼り付けることができる

適切なSQLを書くのと同様に実務ですとデータベースが原因でスピードが遅くなることが多いです。
その場合必要なのは

  1. 遅いクエリの発見
  2. 対処法の考慮→実際の対策

になってきます。

1に関してはmysqlの設定で出すこともできますし、フレームワークの場合、デバッガを使うと発見が楽なこともあります。2に関してですが、ほとんどのケースで対処法に関してメリットとデメリットがありますので、それらを正確に理解しておきましょう。

遅い場合、

  • SQL自体の回数を減らすこと
  • SQL自体を早くすること

の2つの対策が挙げられます。

前者はほとんどの場合集計タイプのSQLが正確にかけるかが大切になります。後者の場合、EXPLAINを使ってSQL自体がどのようにデータを抽出しているかを理解し、indexを適切に貼ってスピードアップさせられることが多いです。

インデックスも本当だったらアルゴリズムについての理解などしておくと良いです。
またチューニングに関しては他にも設定ファイルでMySQL自体のメモリ設定などもできるようなのですが、私がやったことがないので触れられません・・・(申しわけないです)

設計

  • 基本的なテーブルの設計ができる
  • 基本的なテーブルの作り方のパターンをだいたい身につけている
  • NG、グレーな設計などがわかる。(メリット、デメリットを正確に理解している)

記述内容が書き方が抽象的すぎるかな・・・
要は販売管理のテーブルを作れ、と言われた時に必要なテーブル、カラム、そしてリレーションがイメージできるかです。

設計に関してはよほど極端なものを覗くとだいたいの場合においてメリット、デメリットがあり、それを理解していることが大切だと思っています。
例えばテーブルの主キーとしてauto_incrementのidを使うケースが多いのですが(サロゲートキー)、これもメリットデメリットがあります。

薬と同じで使い方によっては毒にもなるので、効果と副作用についてしっかり理解しておくことが重要だと思っております。

とりあえずこんなところで。
基本的にはSQLは単独でも勉強できますので、非エンジニアの方でも手が出やすい分野ではないかなと思っております。

参考書籍

私が使って良かった本などを。

スッキリわかる SQL 入門 ドリル215問付き! 

基礎固めに非常にいいかと思います。
SQLをやったことがない方、これから始める方にはまずはこれをお勧めします。

達人に学ぶ SQL徹底指南書

個人的に私が感銘を受けた技術書第一位です。
ある程度の SQLが自然にかけるようになった方のレベルアップに非常にいいです。
ウェブサイト(http://www.geocities.jp/mickindex/database/db_support_sinan.html)もありますが、
レベルの高い内容を適切な例を使って順序立てて説明できるかたって非常少ないですがこのかたの説明は適切かつ非常にわかりやすいです。
著者の方(ミックさん)はDB業界では有名な方のようです。

データベース設計

販売管理システムを題材に一般的な業務のフローとテーブルの設計例などを書いています。
業務系のシステムの全体的なテーブルの設計例などを理解したい方にお勧めです。

ECCUBEのテーブル

一般的なECサイトのテーブル構成がどうなっているか、大変勉強になります。

44のアンチパターンに学ぶDBシステム

データベースに関する失敗例やダメな例に関してリストアップしています。
業務系がメインですが、Web系の方でも参考になることが多いかと思います。

関連記事

初心者でもできる!作れる!WEBサービスの開発 その4 総まとめ編

前3回の記事でWEBサービスを作ったお話をさせていただきました。 (前回までのお話し)

記事を読む

セミナー告知のお知らせ

突然ですが2018/06/16にIT業界への就職希望者を対象とした無料プログラミングセミナーを開催さ

記事を読む

データを扱ってみよう その3(多次元配列)

お疲れ様です。松本です。 さて前回の「データを扱ってみよう その2(配列)」から若干日が開いて

記事を読む

ドキドキ本番リリース時に大切な心構え

今回はエンジニアにとって大切な本番リリースについて。 本番リリースというのはいままで開発環境(

記事を読む

PHPで掲示板を作ろう!(データベース編) その3 データベース作成編

ちょっと間隔があいてしまいましたが、今回はMySQLの講義です。 前回までの記事 PHPで掲示板

記事を読む

どんなプログラマが身につけておいても損はない重要なスキルとは?

のっけからストレートなタイトルですいません。 ちょっとあおり気味なタイトルですが、今日紹介する

記事を読む

お問い合わせフォームを作ろう! その3(PHP)

それでは前回のコードを例に少しずつ内容について説明をしていきます。 値を取得するには まず一番最

記事を読む

なぜPHPなのか

はじめまして、プログラミングの講師を担当させていただきます、松本と申します。 このたび、株式会

記事を読む

バグをゼロに近づけるテスト手法とは?

私は去年のはじめまではPHP、去年の春~年末はJavaScript、今年からはJavaを触っています

記事を読む

教え方がうまい人に共通するたった1つの考え方

やや遅い気もしますが、あけましておめでとうございます。 今年もよろしくお願いします。 昨

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

無料PHPスクール
自社開発>客先常駐である本当の理由

このブログでも何回か取り上げていますが、ITエンジニアの働き方としては

エンジニアにとって必要なコミュニケーション能力とは

気がついたらもう3月下旬になっていますね・・ 年末年始忙しかった

エンジニアを採用する上で大事なこと

本日はエンジニアの採用について書きたいと思います。最近少し採用に絡んだ

エンジニアが給料を上げる方法を真面目に考えて見ました。

本日はエンジニアと給料の話題について触れて行こうと思います。 エ

エンジニアの「スキル」とはなんぞや

給与が低いことに悩んでるエンジニアへのアドバイスをツイートで見たところ

→もっと見る

  • follow us in feedly
PAGE TOP ↑