Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa menerapkan hak istimewa forum?

Bitmask izin paling baik dipahami ketika direpresentasikan sebagai biner, dengan setiap digit mewakili izin yang aktif atau nonaktif. Jadi jika izin X, Y, dan Z ada, dan saya hanya memiliki akses ke X dan Z, 101 akan menyatakan bahwa saya memiliki izin pertama dan ketiga yang diberikan kepada saya, tetapi bukan yang kedua. Bilangan biner 101 setara dengan angka desimal 5 , jadi itulah yang akhirnya disimpan dalam database. Satu bilangan bulat kecil adalah objek yang jauh lebih efisien untuk disimpan daripada string atau beberapa bilangan bulat kecil.

EDIT: Saya menyadari betapa mudahnya memanfaatkan fungsi konversi yang ada untuk mendapatkan implementasi yang cukup cepat. Ini contohnya.

<?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";
}

Anda mungkin mendapatkan kinerja yang lebih baik jika menggunakan loop, daripada menarik kembali ke dan dari string, tetapi ini menggambarkan prinsip dengan cukup jelas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate:Secara otomatis membuat/memperbarui tabel db berdasarkan kelas entitas

  2. Bagan untuk diperbarui dari pilihan tarik-turun

  3. Cara Membalikkan Insinyur Database di MySQL Workbench

  4. Bagaimana cara json_encode array dengan aksen Prancis?

  5. RoR:bagaimana cara menguji aplikasi saya terhadap banyak basis data?