Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Práticas recomendadas para sinalizadores de bits em PHP


No seu modelo , o objeto tem 8 propriedades booleanas. Isso implica 8 colunas booleanas (TINYINT para MySQL) em sua tabela de banco de dados e 8 métodos getter/setter em seu objeto. Simples e convencional.

Repense sua abordagem atual. Imagine o que o próximo cara que tem que manter essa coisa vai dizer.
CREATE TABLE mytable (myfield BIT(8));

OK, parece que vamos ter alguns dados binários acontecendo aqui.
INSERT INTO mytable VALUES (b'00101000');

Espere, alguém me diga novamente o que significa cada um desses 1s e 0s.
SELECT * FROM mytable;
+------------+
| mybitfield |
+------------+
| (          | 
+------------+

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

WTF!? WTF!?

se apunhala na cara

-- enquanto isso, em um universo alternativo onde fadas brincam com unicórnios e programadores não odeiam DBAs... --
SELECT * FROM mytable WHERE field3 = 1 AND field5 = 0;

Felicidade e sol!