技術

そのDB設計、10年後に恥ずかしい思いしない?大丈夫???

タイトルは盛大に煽った。でもそこまで誇張じゃないと思ってる。
世の中のゴミみたいな人材がDB設計したシステムはごまんとあります。そんなシステムのせいで困ってる若手がいっぱいいるんだよって話。(多分違う)

ITに限らず、テクノロジーを活かした華々しいベンチャーな企業が多くある中。
そこそこ成功してるそこそこ新しい企業にかなり多くあるのが、化石のような基幹システム。

さらにたちが悪いことに運用者はソレを化石だと認識していない事が多い。

極論を言ってしまえば、C#のフォームアプリケーションなんて化石の最たる例だと思うんですよね。
それを金かけて保守して今なお新機能開発して…ってのがあるんですよ。最近のエンジニアさんには想像出来ないかもしれませんが。

本当にあった怖い基幹システムの話

20年、25年前の成功を持ち出して顧問として動くおじさん

いや、悪いとは言ってないよ。システム開発に口出しするなってだけ。
20年前ってwwwwなんの冗談よwwwPCに搭載するメモリが256MBぐらいの時代じゃないの????人間がまだ四足歩行してた時代だからそれ。

ちなみにそういった基幹システムにありがちなのが、今すぐ作り直せっていいたくなるDB設計。
ダブルミーニングなんて当たり前、人間にわかりやすいテーブル設計※で、年寄の老害しか理解してなくてそういう輩が自身の過ちを胸はってドヤる。
もはや一度ゼロにするしか救いようがない奴。だけど金かけてるからそんな事できずに今後携わる人すべてが苦労する。

少なくとも、ERみてデータの修正が出来ない(難解)な時点でそのDBは設計ミスってるから。

あとあとKV形式でマスタデータを持ってるテーブルがあって、その中を水平分割したVIEWを定義してるパターン。
控えめに言って全部個別テーブルにしろ!いますぐだ!!!って気持ち。
VIEWと同じ名前にすれば既存プログラムはそのまま動くしね。名前がV_XXXXとかどう考えてもViewなマスタテーブルが出来上がるだろうけど諸々のデメリットを考えたら名前なんてどうってことはない。
なんならそんな事してる糞DBにはまともな命名規則もないからな。

今更ながらDB設計のアンチパターンにコメントしてみる

学生の頃はフリーの元Oracleエンジニアと一緒に日本中飛び回ってお仕事してたのに、普通にSEとして就職したおじさんだけど、DBAって書いてデータベースアドミニストレータと読む時代からデータベースアーキテクトと呼ばれるようになる頃まではそれなりに仕事でDB触ってたよ!
その後はちょくちょくOTNでRDBの新しい小技(テーブル設計+SQLの組み合わせ)を投稿してたりも。

とりあえずコレを読め「SQLアンチパターン」


多分世界的にも有名で、日本語訳が出版されている物の中では一番有名な本。カーウィン著。
いつも著者の名前がわからなくなることで覚えてる。ビルカーウィン。言葉にして喋ったりするときだいたいこまる。文字ならBill Karwinって書けばいいから楽なのにね。
前述でクソクソいいまくったダブルミーニングはもちろん記載。

少々古いので、Oracle12c頃?からあるオンメモリとか過去の常識をひっくり返すような技術には対応してはいないけども、正直記載の情報の上に今があるとも言っても過言ではない。
後述の本と一緒に読めば盤石と言っても過言ではない。というかテーブル設計するような人はこれぐらい読んでくれ、素人がやればできるとか思ってるのはマジで思い上がりでゴミだから。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ


初心者で終わりたくないというか、DBを使う人間から作る人間になりたいなら最初に読む本。初心者というか入門書。
この本に記載程度の事が出来なければ初心者ではなくそれは素人だから自覚したほうが良い。

アンチパターンという言葉を避けた結果「バッドノウハウ」とかいう言葉が生まれたらしい。個人的には「バッドノウハウ」などという頭の悪い言葉を生み出したのがプログラムの指南書(JAVA)だという事実を知ってしまってからは「これだからJAVAエンジニアは・・・」という気持ちでいっぱい。
しかし、1歩外にでれば同じ職業と見られるのはわかりきっているので大変申し訳無い気持ちでいっぱいになる。

閑話休題。ともかく、全9章に渡りDB設計とは~アンチパターンに学ぶ応用技術といった形でかんたんにまとめられている。
DBの世界を視野を広げるために、読んだことがない人は一度読んでみると良いと思う。
主に取り上げられているのは、「単一参照テーブル」「ダブルミーニング」「テーブル分割」「ダブルマスタ」「不適切なキー」といった内容。どれも極刑クラスの重罪ですね。
こういった設計を良いと思ってしまうメリットからそれをけちょんけちょんにして有り余るデメリットまで解説されています。

クソ設計、ダメゼッタイ

DBは簡単です。こんなゴミ設計が世に出回ってる理由でと思ってます。技術的には間違った設計でも動いてしまうからね。
ただ言いたい。DBは簡単だとは思う。SQLだって設計だって。間違ってても動くし、間違ってるなんてそうそう言われないから。だけどね、DBは奥がめちゃくちゃのくちゃに深いんですよ。他のIT技術とは比べものにならないほどに。
DBを使うのはいい、大いに使ってほしい。だけど、テーブルを設計するとなったら考えてほしい。その設計は向こう5年10年使われることになることを知ってください。

まとめ

ほんと、ただただ仕事でイラッとしたので書いた。
マジ、DBの専門家を名乗って働いてるのにただのプログラマ扱いなのはまぁ万歩ぐらい譲っていいにしろ、お前らド素人が1000時間考えた所で俺の1秒でたどり着く答えには到達できないからってのがDB技術だと思います。
そんな世界で日々ストレスと戦うので転職後に円形脱毛症になるんすよね。はーこんなだからサラリーマンは嫌だ。

関連記事楽しい記事がきっと見つかる
  • この記事を書いた人
  • 最新記事
酔麿呂

酔麿呂

極普通のお酒とゲームが好きでオシャレな雑貨に弱い元SE。趣味はAmazonでウィンドウショッピングすること。 SEと言いつつもDBAとして米国での就労経験があったり、人事・総務・財経とあらゆる部門の経験を持つ異色のフルスタック系エンジニアです。

© 2020 あずめでぃあ