# pair-1a レビュー 2021/04/14 ###### tags: `ペアレビュー` ### nakano - 昔はNULLにindexは効かなかった - OracleにNULLの変換関数4つ以上ある - NULL AND '' -> 0 なぜ - 文字列が false に判定されているからっぽい - ドキュメントと食い違っている -> PR出す? - nakano&ishihara san - issue_assingee と assigneeの関係は? - ishihara-san - NULLをなくすために中間テーブルはよくやるのか? - 多対多だから中間テーブルはわかる - assigneeが複数アサインできてしまう - アサイン履歴を取得できるようになるので便利な点もある - フラグがいっぱいあるテーブル、機能が増えるたびにカラムを増やす vs 中間テーブルに隠蔽 - (中間テーブルの場合)機能テーブルに何が入っているのかがぱっと見でわからない - 機能はいっぱい増えるわけではない - booleanなのでパフォーマンス的に問題はない - 取得が煩雑になるのを防ぐため、あえてアンチパターンを取った - 実装しやすさ・使ってもらいかた・解決したい課題 - エンジニアが追加するため、動的にプランを追加できる必要がない - redashよく使う - redashでビューを作ることが多い - ビューでアクセス権を絞るのはアンチパターン? - 本当の意味でのアクセス制限にはなっていないのでは - 間違えてビューを作ってしまう可能性がある - そもそものデータベース設計を見直すべき - noteの漏洩 -> そもそもテーブルをわけておけばよかった - セキュリティ周りでViewは使うことあるの? - nakano-san - 実務でビューをセキュリティ目的で利用していますか? - 以前は、unixtimestampの際に使うと聞きましたが、、、 - nakano-san - posgreはマテリアルビューの差分更新ができなさそう - oracleはできる ### ishihara - NULLの並び替えはDBによって違う - Oracle: 最大値, MySQL, PostgreSQL: 最小値 - MySQLでは Order by A IS NULL, A; で NULLS FIRSTを実現できる - 制約はあるがビューに直接insertもできる - カラム削除の影響 - furukawa: カラム消すことはあまりなさそう - nakano: 一年に一度くらいカラム削除祭りがある - nakano: railsが削除したテーブルをキャッシュしている事がある -> アプリケーション側でignoreする ### furukawa - 中間テーブルの命名どうするの?? - nakano-san - dbdiagram - リレーションもホバーすれば出る - 各DB用にCREATE文をexportできる - 複合主キーにした理由 - (furukawa) 使えたから - 複合主キーは値が衝突する? - furukawa-san