Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najlepsze praktyki dotyczące flag bitowych w PHP

W Twoim modelu , obiekt ma 8 właściwości logicznych. Oznacza to 8 kolumn logicznych (TINYINT dla MySQL) w tabeli bazy danych i 8 metod pobierających/ustawiających w obiekcie. Prosty i konwencjonalny.

Przemyśl swoje obecne podejście. Wyobraź sobie, co powie następny facet, który musi się tym zająć.

CREATE TABLE mytable (myfield BIT(8));

OK, wygląda na to, że będziemy mieć tutaj trochę danych binarnych.

INSERT INTO mytable VALUES (b'00101000');

Zaczekaj, ktoś mi jeszcze raz powie, co oznacza każda z tych jedynek i zer.

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

Co?

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

WTF!? WTF!?

uderza się w twarz

-- tymczasem w alternatywnym wszechświecie, w którym wróżki bawią się jednorożcami, a programiści nie nienawidzą DBA... --

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

Szczęście i słońce!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie unii i kolejności według klauzuli w mysql

  2. Zagnieżdżone kursory w Mysql

  3. Wstaw po obcięciu, zacznij od 1; ale wstawiaj po usunięciu wznawia z poprzedniej wartości

  4. zaznaczanie wierszy, które wystąpiły więcej niż trzy razy

  5. Facebook nie może zeskrobać metadanych po przeniesieniu Wordpressa na nowy serwer