状況によります
カテゴリはいくつありますか、どのくらいの頻度で更新する必要がありますか?
列挙型を追加する前のアプローチを採用しましたが、クラスに静的メソッドを記述し、そこに有効な名前を格納しました
class Item{
public static function get_categories()
{
// only works in php >=5.4 otherwise use return array('Category1'...);
return [
'Category1' => 'Category1',
'Category2' => 'Category2',
'Category3' => 'Category3'
];
}
}
上記を実行すると、Item ::get_categories()によって配列に簡単にアクセスできます。これは、データベースのENUMフィールドの値に対応している必要があります。さらにカテゴリを追加する必要がある場合は、それらをデータベースに追加してから、この関数に追加してください。これを使用して、ユーザーの選択を検証し、JavaScriptオプションを生成できます。
しかし!!!!
テーブルにデータを入力するシードについて言及しましたが、これではENUMを簡単に更新することはできません。
なので、ENUMを使用します
1)。セットアップは簡単です2)。 2つのテーブルを結合するよりも少し簡単です(ただし、それらを学習すると、JOINSはエースになります)3)。 (ご指摘のとおり)セカンダリテーブルを使用した場合は、最初にそのテーブルから値を検索してから挿入する必要があります。または、カテゴリがドロップダウンで使用された場合は、カテゴリIDとその名前を使用してドロップダウンにデータを入力します。 (私はこのようにします)
最終的な考え
両方の方法(ルックアップテーブルとENUM)のパフォーマンスは、サイトが非常に混雑していない限り、違いに気付くことさえあります。両方の方法で各バージョンのカテゴリテーブルを更新する必要がありますが、ALTERTABLEの代わりにINSERTステートメントを使用する方が少し簡単です
どちらの方法を選択しても、気に入らない場合は、コードを更新するのは非常に簡単です。
これがお役に立てば幸いです
Keep It Simple Stupid K.I.S.S
を忘れないでください