仕事の愚痴です
別チームが作ったシステムがある
そちらを引継ぎ、DB設計書を更新した
本当に意味がわからない設計していると思った事を記載する
DB設計書が2つある
チームの中でAグループとBグループに別れてシステムをつくっていた
なぜかAグループとBグループの独自のDB設計書がある
同じシステムで同じDBなのに・・・分かれている
そしてAグループのリーダーが辞めて、Bグループのリーダーが辞めた
そして意味の分からないDB設計つが2つ残った
なんで自分が統一(merge)しないといけないだよ
T_T
唯一の救いはフォーマットが統一されている所
PKのカラムが異常にでかいテーブルがある(すべてではないです)
varcharの512だった
UTF8なので1536バイト
普通に作成したらインデックスのエラーになる!!!
もっといいPKはないのか!!
拡張して無理やり通すなら別のPKをはってくれよ
http://gihyo.jp/dev/serial/01/mysql-road-construction-news/0032
記事IDとユーザーIDの名前が一緒だった
「システム名+ID」が記事IDは100歩譲ってわかるが
「システム名+ID」がユーザーIDというのは
まじで設計したやつは頭が・・・
きれいにバイト数も同じだった
他のカラムをみないと
どっちのカラムなのかわからない
テーブル設計書の日本語表記に
XXXXX_ID(ユーザー)と書かないといけない
登録日や登録者IDがNULL許可だった
なんで?許可したの??
デフォルト許可しない設定だからわざわざ許可した
まじでわからない
更新日と更新日がNULL許可されるパターンとされないパターンがあった
その差がまったくもってわからない
ステータスコードや削除フラグがintとTINYINTでバラバラ
どっちかに統一しろよ
しかもintの場合はint(10)とint(11)が混在している
本当に統一しろよ
削除フラグがint(11)を使う理由ってなんだろう??
FOREIGN KEYが1つもない
1つもないだよ!!
ER図の自動作成ツールで出力したら
テーブルが200個以上ならんでいるだよ
関係性とかわかるか!!
プログラムで関係性をチェックしている
mysqlはリレーショナルデータベースだよな〜・・・
トランザクションデータが消す設計になっていない
毎日、トランザクションデータ(作業用データ)が発生するが
そのデータを消し込む設定になっていない
1日1,000件,1年で365,000件程度なら
消し込まないという選択肢も理解できなくはないが・・・
1日に3,000,000~5,000,000件ほど
発生するトランザクションデータを消さない
Google先生のBIGQueryとかに移すとかやってくれれば
使えるのですがそれもない
mysqlに1日に3,000,000~5,000,000件ほど溜まっている
SSDで早くなったとはいえ本当に頭がおかしいと思う
辞める前に消していいのか聞いた所
「このデータはビックデータになるので消せない」
と回答をもらった
消せないじゃなくて使えないじゃないの?
最後にびっくりなのが
システム開発1、2年目の人間のDB設計ならわかるが
10年以上もやっている人達がこの設計をしている
その人達は学歴や経歴はすごいが運用・保守を考えられないみたい
自分が作りたいようにシステムを作っていたらしい
本当に
「趣味でやってください」
と言いたい
引継ぎをしたのは2年前で自分はインフラのみだった
サーバーサイドはブラックボックスだった。
そのブラックボックスを解体していかないといけない
担当者・開発者なんてとっくに辞めている
プログラムのみで引継ぎをしないといけない
本当に泣きが入る
DB設計は初めてに方針をきめるべきだね
http://qiita.com/kiyodori/items/5083ad8bbfc232d01827
http://qiita.com/genzouw/items/35022fa96c120e67c637