考慮すべき要素の 1 つは、元のスキーマを作成した人がそれを MySQL に限定しているかどうかです。MySQL でのみ実行することを意図している場合、MySQL に適応することは理にかなっています。同じスキーマを他の DBMS で使用できるようにする場合は、関連するすべての DBMS で機能する、より一般的なスキーマ設計の方が、設計を行う担当者にとって優れている可能性があります。
そうは言っても、enum
はある程度 MySQL 固有ですが、同等のものenum
は他の DBMS で簡単に作成できます。
CREATE TABLE ...
(
...
FlagColumn CHAR(1) NOT NULL CHECK(FlagColumn IN ('y', 'n')),
...
);
さまざまな DBMS が BOOLEAN を処理する方法は、SQL 標準にもかかわらず、あなたが望むほど均一ではありません (そして、その理由は、これまでと同様に歴史です。準拠性の低いシステムでは、標準よりも前に BOOLEAN のテーマにバリエーションがありました。 、実装を変更すると、既存の顧客のコードが壊れます)。
enum
したがって、 overの使用を自動的に非難するつもりはありませんが、ブール値フラグboolean
に使用する方が適切です。boolean