見出し画像

「データベース設計できます?」じゃレベルが分からない件

ACWEB木村です!久々になってしまいました、、、涙
楽しみにしていただいている声もいただけるようになったので、
タイピングスピードを5倍にして対応していきたいと思います!

本日はサーバーサイドエンジニアさんなら面談で80%聞かれるDB(デービーって略します)について詳しく深ぼっていきますので、ある程度わかる方はレベル分けだけでも見ていただければ今後の参考になるかと存じます!

■(基礎編)DB関連の仕事について
■レベル分け
■最後に



■(基礎編)DB関連の仕事について

そもそもデータベースとは、

サービスに使われる情報を貯めておく場所

です。
細かくいうといっぱいありますが、イメージは
ユーザー情報:ログイン情報とか閲覧/購買履歴
サービス情報:料金プランや予約状況、商品の説明など

そんな情報が
テーブル・・・情報ごとに管理する場所を変える
カラム・・・テーブルの中の情報そのもの
ってので分けられて管理されてるんですね。

で、その情報を表示したり更新したりする時に使う言語が

SQL(エスキューエル)

ですね!
SQLで覚えておくといい内容はこのくらいっす。

【SQLのCRUD処理】⇦基本的な使い方
①Select・・・DBから情報を引っ張る
②Insert・・・DBに情報を入れる
③Update・・・DBの情報を更新する
④Delete・・・DBの情報を抜く

【複雑な処理】⇦組み合わせたり、複数の処理をいっぺんに行う
Join、Groupby(グループバイ)、Orderby(オーダーバイ)、サブクエリ

前振りはここまで、続いてDBのお仕事で3つの工程に分かれます。

①設計
データベースを作る時にどんなデータをどう保存したらいいんだろって考えながら実際に構築する導入の部分まで対応します。

②構築
実際にまとまったものを作りあげていくことになります。以上。

③チューニング
新しいコンテンツ(情報)がある場合に追加したり、既存のDBを改良していく運用フェーズで使われる言葉です。



■レベル分け

(ここからちょっと難しくなります。汗)
レベル感が分かれるのは

【設計 or チューニング】

で決まります。つまり

構築フェーズの有無は気にしない。


①できる人

設計:
・DBの要件定義(ER図の作成)←覚えなくていいけど概念設計っていう
・正規化/非正規化←論理設計
チューニング:
・ガッツリの再設計(要件定義や正規化)
・情報量が多いDBの大幅なパフォーマンス改善
・セキュリティ診断→改善
その他:
・NoSQL(ノーエスキューエル)の選定
・DHW(データウェアハウス)の導入

②出来そうだけど多分出来ない人

設計:
・Index(インデックス=目次)やテーブル設計⇦物理設計
チューニング:
・クエリチューニング(SQLだけ直すこと)
・テーブル追加実装
その他:
・NoSQLやDHWの構築

③出来ない人

構築のみ



■最後に

ご覧いただいたように開発とは違い構築というキーワードはDBの中では全然重要じゃないんです。
気をつけなきゃいけないのはいかに【①と②の人なのかを見極める】こと。
「レベル分けの部分の経験ありますか?」って聞けば良いだけです〜!

ただ、①の部分の経験をしていてもサービスが簡易的なものだとSESで人材募集するようなクライアントには通用しない可能性もございますのでご注意を。
よくテーブル数は?カラム数は?という質問もありますが、ちゃんとしたサービスなのかな?ってことを流れで聞かれることはあります。
闇雲に多い/少ないでは出来るかどうかは判断できないので一問一答しか出来ないのであればヒアリングしない方が無難でしょう。
(サービスとかクライアント聞けば結構イメージ出来ることなので)

今回お話できなかったNoSQLやDWHについてはまた別の機会に投稿いたします!

最後までお付き合いありがとうございました〜!

この記事が気に入ったらサポートをしてみませんか?