中山テック 代表の中山です。
※開発者向けのお話になります
この業界に携わり、弊社事業のHP制作・SEO対策以外はほぼバックエンドとして従事してまいりました。
以前もお話しましたが、初めての現場ではデータベースに触ることもなく、4年間を過ごしてきました。
そんな中、当時の現場にいたフリーの先輩が「データベースが出来ないとダメ」というお話を頂きました。
今となっては当たり前のことですが、当時は一つの現場にいただけなのでわかりませんでした。
代表と同じ轍を踏んでほしくないので、何故学ばないといけないのか4つの理由をお話します。
まともにSQLが書けない
要するに「欲しいデータを引っ張って来れない」ことを意味します。
当然時間のない中でSQLを作成してデータを引っ張るのは難易度は高いものですが、基本の部分が弱く
有識者に聞いたり本読んだりネットで調べたりして少しずつできるようになってきました。
システムが複雑=テーブルは複雑
当然ですが、データベースのテーブル構成は正規化された上で構築されています。
1つのテーブルに収めることはマスタ以外はほぼなく、キーのテーブルから派生し、多くのテーブルが繋がっています。
初心者に毛の生えた代表からするとどうやって調べればいいんだろうという所から始まります。
家で実践しようとしてもどんなシステムのどんなテーブル構成にすべきかがわかりません。
結局、仕事場のデータベースの複雑な構成から「○○のデータを取ってみよう」と合間を見てはSQLを書いたもんです。
結合させる
内部結合と外部結合というものがあります。
内部結合は簡単なのですが、外部結合は結合対象のレコードのいずれか(LEFTなら左側)があれば
表示といったのが難しかったです。
テーブルを結合するにあたり、引っかかったら欲しいけど、なかったら空白表示で構わないよって場合に使います。
一人のユーザに対して複数レコードを取得する場合もあれば1レコードだけ欲しい場合もあります。
1レコードの時はPRIMARY KEYでの結合を心掛けることで実現できると思います。
検索結果が遅い
SQLの書き方については基礎ですが、今度はスピードが問われるようになります。
当然、INDEXが貼ってあるか、日付は範囲で検索しているか、他チューニングでの禁止事項に抵触してないかetc・・・
本番作業でのSQLを実行する際は、事前に実行計画で変なSQLでないかを調査します。
その上でテスト環境で実行し問題ないことを確認します。
ここまで出来るようになればチューニングもお手の物かと思います。
まとめ
データベースと言ってもOracle、DB2で異なる点がいくつかあります。
もちろん、基本の部分は一緒ですが出来る事が増えることにより差がわかってきます。
特にバックエンドでもフロントエンドでもお互いを意識しない開発なんぞあり得ません。
どうデータを持って活用しているか、調べる際にはデータベースを活用します。
データベースのノウハウを蓄積することで、SEとしてのレベルアップも図れると信じて止みません。