---
# System prepended metadata

title: pair-1a レビュー 2021/04/14
tags: [ペアレビュー]

---

# 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
