Mysql
 sql >> Database >  >> RDS >> Mysql

Migliori pratiche per i bit flag in PHP

Nel tuo modello , l'oggetto ha 8 proprietà booleane. Ciò implica 8 colonne booleane (TINYINT per MySQL) nella tabella del database e 8 metodi getter/setter nel tuo oggetto. Semplice e convenzionale.

Ripensa al tuo approccio attuale. Immagina cosa dirà il prossimo ragazzo che deve mantenere questa cosa.

CREATE TABLE mytable (myfield BIT(8));

OK, sembra che qui ci saranno dei dati binari.

INSERT INTO mytable VALUES (b'00101000');

Aspetta, qualcuno mi dica di nuovo cosa rappresentano ciascuno di questi 1 e 0.

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

Cosa?

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

WTF!? WTF!?

si pugnala in faccia

-- nel frattempo, in un universo alternativo in cui le fate giocano con gli unicorni e i programmatori non odiano i DBA... --

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

Felicità e sole!