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のみの場合はよい

    数千程度のレコード

  • なぜ数千だとよいかは不明