データベースに int(11) の列があります
その列は整数です。ストレージレベルでは、「11」は意味がありません。
ユーザー名の大きなテーブルがあり、誰かが 'John Smith' を 40 回入力しようとしたとします。何をしたいですか?誰かに他のすべての亜種と比較してもらいたいですか? 「Johnathan」、「Jonathon」、「John」、「Jhon」などの異体字を識別して確認しますか? 大きな決定ですが、レビューが必要な ID 番号の処理方法には影響しません。
何らかの理由でレビューが必要な行を特定するには、それらのキーを別のテーブルに置く方がはるかに優れています。
create table review_sets (
set_id integer not null,
set_created timestamp not null default now(),
rationale varchar(100) not null default 'Duplicate of existing user?',
primary key (set_id),
unique (set_created)
);
create table review_ids (
set_id integer not null,
user_id integer not null,
primary key (set_id, user_id),
foreign key (set_id) references review_sets (set_id),
foreign key (user_id) references users (user_id) -- Not shown.
);
列 review_sets.rationale を使用すると、スペルの問題を、支払いの遅延やサイトの悪用などと区別できます。review_ids のテーブルを使用すると、可能なすべてのバリエーションではなく、いくつかのバリエーションに ID を制限できます。(しかし、それがどれほど役立つかはわかりません。)
レビュー担当者、レビューが完了した時間、およびそのレビュー担当者が下した決定を識別する列を追加することができます。アプリケーションによっては、決定に達した後で行を削除するだけでよい場合があります。