2019-11-17 RDBのアンチパターン RDBのアンチパターン 強すぎる制約はよくない 弱い制約 NOTNULL(必須) 外部キー 強すぎる制約 ENUM型とかドメインと呼ばれる型定義をできる機能 MySQLだとここ1年くらいで出た8系以外はCHECK制約ができない テーブルにJSON型を多用しないほうが良い理由 varcharなどのTEXT型突っ込むのはなしで、JSON型を使うようにとのこと 使うこと自体は否定していなかった。スキーマレスな場面では便利 JSON内の属性について NOTNULLにしづらい CHECK制約をつければできるがメンテが大変) MySQL8より前はCHECK制約ないCloudSQL5.7だから不可 内部の値をバリデーションができない Emailや電話番号 外部キー制約ができない JSON文字列を外部キーにはできないな 使っても良いケース JSONの属性で検索することがない アプリ側で複雑な検索をさせるのはよくないという思想 UPDATEが頻繁に発生しない JSON内の属性に対してのUPDATEをしない INSERTのみの場合はよい 数千程度のレコード なぜ数千だとよいかは不明