SQLアンチパターン - ジェイウォーク
- 22. 解決策
id title
1 俺のブログ
2 私のブログ
blog_id user_id
1 10000
1 10001
1 10002
2 20000
2 10001
2 10002
id name
10000 太郎
10001 一郎
10002 二郎
20000 n郎
これ
PK
blogs usersauthors
- 23. 解決策 : 交差テーブル
参照で死なない
シンプルなクエリ、indexも利用できる
集約関数も利用できる(countとか)
更新で死なない
素直にupdate, insert, deleteするだけ
妥当性検査、参照整合性で死なない
カラムの型、外部キー制約
最大編集人数とかにも変な制約はつかない
アプリで制約するのもblog_idでcountするだけ
- 24. 解決策 : 交差テーブル
id title
1 俺のブログ
2 私のブログ
blog_id user_id
1 10000
1 10001
1 10002
2 20000
2 10001
2 10002
id name
10000 太郎
10001 一郎
10002 二郎
20000 n郎
blogs usersauthors
「俺のブログ」の編集者の名前
- 25. 解決策 : 交差テーブル
id title
1 俺のブログ
2 私のブログ
blog_id user_id
1 10000
1 10001
1 10002
2 20000
2 10001
2 10002
id name
10000 太郎
10001 一郎
10002 二郎
20000 n郎
blogs usersauthors
「一郎」が編集しているブログ
- 26. 解決策 : 交差テーブル
id title
1 俺のブログ
2 私のブログ
blog_id user_id
1 10000
1 10001
1 10002
2 20000
2 10001
2 10002
id name
10000 太郎
10001 一郎
10002 二郎
20000 n郎
blogs usersauthors
「俺のブログ」から「二郎」を外す