2016年05月07日

[書評]SQLアンチパターン5章を読んだ

blogramランキング参加中!

SQLアンチパターン

新品価格
¥3,456から
(2016/5/7 17:03時点)



[書評]SQLアンチパターン4章を読んだ
の続編

5章はEAV。
エンティティアトリビュートバリューの略。
なんのこっちゃかは本書を読んで理解しました
以下、SQL

・EAVのテーブル
id key value みたいなイメージで
1, name, masterka
1, reported, 2016
1, ikemen, true
みたいなテーブル。


・このパターンの問題点
select文どうするの
reportedを必須にしてくたもできない
reportedの型を指定できない。bananaとかも入る
外部キーが使えない
keyの名前揺れ問題
等問題が多すぎる。


・EAV使いたかったら
cassandraとか
mongodbとか
hadoopとか
redis等の
リレーショナルDBでないものを使いましょう。
この章のテーブル構成見てそう思った


・解決策1
あえてリレーショナルDBでやる場合
列を増やしまくって冗長なテーブルを1つにする
確かにこれが単純で一番わかりやすい


・解決策2
データごとにテーブルを複数作る。
これも単純


・解決策3
共通テーブル1つと
クラスごとに必要なデータを別テーブルにして
joinする。
共通テーブルは外部キー持つだけ


・解決策4
テーブルのカラムの一つをjson等にする等
デメリットとしては検索キーとしては使えなくなる


本章も非常に面白かったです。
そういえばこういうイケテナイDB考えますよね
そういうときはmysql使うわない選択肢もあるわけだ。
redisかcassandraやっぱり勉強しようかな
まだまだ続く
タグ:SQL
posted by マスタカ at 17:07 | Comment(0) | TrackBack(0) | | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック