sql >> データベース >  >> RDS >> Mysql

phpのカテゴリ名をmysqlテーブルに保存するための最良の方法

    状況によります

    カテゴリはいくつありますか、どのくらいの頻度で更新する必要がありますか?

    列挙型を追加する前のアプローチを採用しましたが、クラスに静的メソッドを記述し、そこに有効な名前を格納しました

    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

    を忘れないでください


    1. 致命的なエラー:未定義の関数sqlsrv_connect()の呼び出し

    2. PostgreSQLでの並列unnest()とソート順

    3. SQLで月末日を取得する

    4. IRIFieldShieldでCassandraをマスクする方法