2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQLアンチパターン:サーティワンフレーバー (31 のフレーバー)

Posted at

SQLアンチパターンを読み始めたので、1つ1つ書いてのメモです

目的

  • 目的:列を特定の値に限定する

アンチパターン

  • MySQLには、enumがあり、値の定義ができる

  • 制約を追加または削除するための構文は無い

  • 新たな値セットで列を再定義するしか方法はない

  • 値の1つを廃止する場合、過去のデータをどうするか?

  • データベースによって、定義方法が異なる

用いてもいいパターン

  • enumの値が変わらない場合
  • on/off、左/右

解決策

  • 限定する値をデータで指定する
  • 参照テーブルを用意する

まとめ

列に入力する値を限定するときは、値セットが固定されている場合はメタデータを、流動的な場合は データを用いましょう。

感想

これは、やったことなかった。というか、そんなことできるの知らなかった...

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?