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

PHPのビットフラグのベストプラクティス

    モデル 、オブジェクトには8つのブールプロパティがあります。これは、データベーステーブルに8つのブール(MySQLの場合はTINYINT)列があり、オブジェクトに8つのgetter/setterメソッドがあることを意味します。シンプルで従来型。

    現在のアプローチを再考してください。このことを維持しなければならない次の男が何を言っているか想像してみてください。

    CREATE TABLE mytable (myfield BIT(8));
    

    OK、ここでいくつかのバイナリデータが発生するようです。

    INSERT INTO mytable VALUES (b'00101000');
    

    待って、誰かがそれらの1と0のそれぞれが何を表すのかをもう一度教えてくれます。

    SELECT * FROM mytable;
    +------------+
    | mybitfield |
    +------------+
    | (          | 
    +------------+
    

    なに?

    SELECT * FROM mytable WHERE myfield & b'00101000' = b'00100000';
    

    WTF !? WTF!?

    顔を突き刺す

    -一方、妖精がユニコーンと遊ぶ代替宇宙では、プログラマーはDBAを嫌いではありません...-

    SELECT * FROM mytable WHERE field3 = 1 AND field5 = 0;
    

    幸せと太陽の光!



    1. 複数のデータベースに付与します。 MySQL

    2. OracleとSQLServerのスペースの処理の違い

    3. メモリ効率の高い組み込みのSqlAlchemyイテレータ/ジェネレータ?

    4. MySQLステートメントキャンセルタイマーを停止できませんでした