Mysql
 sql >> Base de données >  >> RDS >> Mysql

Meilleures pratiques pour les drapeaux de bits en PHP

Dans votre modèle , l'objet a 8 propriétés booléennes. Cela implique 8 colonnes booléennes (TINYINT pour MySQL) dans votre table de base de données et 8 méthodes getter/setter dans votre objet. Simple et conventionnel.

Repensez votre approche actuelle. Imaginez ce que dira le prochain qui devra entretenir cette chose.

CREATE TABLE mytable (myfield BIT(8));

OK, on ​​dirait que nous allons avoir des données binaires ici.

INSERT INTO mytable VALUES (b'00101000');

Attendez, que quelqu'un me redise ce que signifient chacun de ces 1 et 0.

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

Quoi ?

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

WTF ! ? WTF ! ?

se poignarder au visage

-- pendant ce temps, dans un univers alternatif où les fées jouent avec les licornes et les programmeurs ne détestent pas les DBA... --

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

Bonheur et soleil !