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

フォーラムの権限を実装するにはどうすればよいですか

    パーミッションビットマスクは、各桁がオンまたはオフのパーミッションを表すバイナリとして表される場合に最もよく理解されます。したがって、権限X、Y、およびZが存在し、XとZにしかアクセスできない場合、101 1番目と3番目の権限が付与されているが、2番目の権限は付与されていないことを表します。 2進数101 10進数の5に相当します 、それがデータベースに保存されることになります。単一の小さな整数は、文字列やいくつかの小さな整数よりもはるかに効率的に格納できるオブジェクトです。

    編集: 既存の変換関数を活用して、非常に迅速な実装を実現することがいかに簡単であるかを実感しました。これがサンプルです。

    <?php
    function bitmask_expand($n) {
      // 9 returns array(1, 0, 0, 1)
      return str_split(base_convert($n, 10, 2));
    }
    
    function bitmask_compact($a) {
      // array(1, 0, 0, 1) returns 9
      return (int) base_convert(implode($a), 2, 10);
    }
    
    $ns = range(0, 7);
    foreach($ns as $n) {
      print_r($b = bitmask_expand($n));
      echo bitmask_compact($b), "\n\n";
    }
    

    文字列との間でプルバックするのではなく、ループを使用するとパフォーマンスが向上する可能性がありますが、これは原理を非常に明確に示しています。



    1. SQL Serverで「datetimeoffset」を「date」に変換します(T-SQLの例)

    2. 重複キー更新のMySQL

    3. MySQLの予約可能性、重複する日付範囲

    4. StrongLoop:EmbedsManyとhasManyおよびbelongTo