Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-добри практики за битови флагове в PHP

Във вашия модел , обектът има 8 булеви свойства. Това предполага 8 булеви (TINYINT за MySQL) колони във вашата таблица на базата данни и 8 метода за получаване/задаване във вашия обект. Прост и конвенционален.

Преосмислете сегашния си подход. Представете си какво ще каже следващият човек, който трябва да поддържа това нещо.

CREATE TABLE mytable (myfield BIT(8));

Добре, изглежда, че тук ще се случват някои двоични данни.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Доставчици на членство/роли в ASP.NET за MySQL?

  2. MySQL ISNULL() Обяснено

  3. Как да направя тиха инсталация на mysql в inno настройка?

  4. Поддържане на реда в MySQL IN заявка

  5. Свържете се с mysql на Amazon EC2 от отдалечен сървър