Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

目的

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

アンチパターン

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

    • 制約を追加または削除するための構文は無い
    • 新たな値セットで列を再定義するしか方法はない
    • 値の1つを廃止する場合、過去のデータをどうするか?
    • データベースによって、定義方法が異なる

用いてもいいパターン

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

解決策

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

まとめ

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

感想

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away