WIP「達人に学ぶDB設計徹底指南書」を読んで

学んだこと

データベースのモデル

DOAPOA

変化や汎用性のないプロセス中心アプローチ(PDA)の欠点を克服するためにデータ中心アプローチDOA

概念スキーマと論理設計

概念スキーマを定義することを論理設計と呼ぶ。

論理設計のステップは

  1. エンティティ(複数のカラムから形成される集合体)の抽出

  2. エンティティの定義

  3. 正規化

  4. ER図の作成

正規化

正規化とは、エンティティを細かく分割していく作業

「1対多」の関係を生むようにテーブルを分割する

ハードウェアのサイシング

記憶装置(ストレージ)の規模を見積もること。

パフォーマンスを測定すること

これができればエース級

ログファイル

ログファイル = トランザクションログ = バイナリログ

レプリケーション

マスターDBからスレーブDBにデータを複製しておくことで障害時に素早くDB切り替えが可能

HAという印象を受けたが、そもそもマスターDBからスレーブDBに複製しているということは 同じような障害を引き起こしてしまうのではないだろうか? リストアは、どのように行う?

テーブル

テーブルとは、共通点を持ったレコードの集合

参照整合性制約

主キーサイドのテーブルに対して関係を持つことによって制約を課すことができる。 この制約のことを参照整合性制約という。

カスケード

DELETE文において、親が削除した時に子を合わせて削除すること

 テーブルと列の名前

名前には、ハイフンを使ってはいけない。代わりに、アンダーバーを使う。

カーディナリティ

相手のエンティティと対応するレコードの数

パフォーマンス

indexの探索アルゴリズムはB-treeでOK

---以降悪くする例-----

  • index列に演算を行なっている

  • 索引列に対してSQL関数を適用している

  • IS NULL述語を使っている

  • 否定形を用いている

  • ORを用いている > INを使う

  • LIKE述語で後方一致と中間一致を用いている

疑問に思ったこと

なぜ、概念スキーマが必要か?

正規化を行うことにより外部スキーマを直接、内部スキーマに格納することを防ぐ緩衝材となることで SQLの操作を容易にすることができるから。

WebのRAID構成はどうなってる?

未解決

以前の画像ファイルのどこに格納されていたのか

ストレージの大容量化に伴い、画像データなどのバイナリファイルをデータベースに格納することも増えています。 このようなデータを「ラージオブジェクト」と呼ぶこともあります。

上記のように記載されているが、以前はどのような形で画像ファイルを保存されていたのかわからない。

未解決

その他

寿司、ビール問題

Unicodeの問題によって、🍣の🍺の絵文字が等しい値となること。

解決策は、utf8からutf8mb4にする。

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

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