Hi!
Ja ENUM... ich habs auch mal benutzt, aber mir sind da einige Sachen bei aufgefallen, die gegen ENUM und boolsche Werte sprechen:
ENUM verhällt sich vom Prinzip her wie eine weitere Tabelle, die mit dem jeweiligen Feld verknüpft ist.
Daher gibt es für jeden ENUM-Wert einen Index. Dieser Index wird in der Tabelle abgelegt. Wie über einen versteckter JOIN wird bei der Abfrage das richtige Ergebniss geliefert.
Man kann das nachvollziehen, wenn man ein ENUM-Feld mal testweise aufbaut, ein paar daten einpflegt und dann auf einen int-Feld umstellt. Dann sind nämlich nicht mehr 0 und 1 in den Spalten sondern deren Indizes. Und diese beginnen bei 1! (Also wäre Wert0 = Index1 und Wert1 = Index2.)
Also muss hier doch mehr passieren, als einfach nur den Wert zurückgeben, der in der Tabelle steht...
Das grösste Manko ist für mich bei ENUM, dass man nicht wirklich "boolisch" (<- hört sich komisch an

) abfragen kann. Denn, wenn z.B. auf TRUE überprüfen will würde ich logischer weise "WHERE meinfeld = 1" schreiben. Damit fragt man aber nicht den Wert 1 ab sonder, den Index 1! Und das wäre dann nämlich der Wert 0! Man kann also wirklich nur korrekt abfragen, wenn man den Wert in quotes setzt "WHERE meinfeld = '1'" und ihn wie eine Art String übergibt... Das ist für mich nicht WAHR oder FALSCH.
Das also nurmal so am Rande, ich hoffe ihr versteht das Wirrwar

MySQL selber stellt kein "echtes" boolean-Feld zur Verfügung. Aber mit dem tinyint(1) kann man soetwas realisieren. Laut Doku gibt es nämlich ein synonym mit dem Namen BOOL, dass genau für tinyint(1) steht. ->
http://www.mysql.com/doc/en/Column_types.html
Schönen Gruss
Jan