Hallo,
vor einiger Zeit begann ich, DB-Anwendungen nach dem DRY-Prinzip aufzubauen. Dabei hole ich mir alle Informationen über Tabellen, Spalten, Indizes und Fremdschlüsselbeziehungen direkt aus der DB statt sie in der Anwendung nochmal zu modellieren.
Bis dahin hatte ich noch "tinyint(1) unsigned not null" für boolean-Spalten benutzt, leider ist dabei nicht anwendungsseitig feststellbar, ob es sich dabei nicht doch um eine normale Ziffer handelt.
Inzwischen nutze ich seit längerem "set('true') not null" und das hat einige Vorteile. Wenn es ganz normal selektiert wird, liefert es "true" oder "", was in PHP auf bool gecastet den korrekten Wert liefert. Selektiert man es in einem numerischen Kontext, liefert es 1/0, was auch ziemlich sinnvoll ist. Beim Schreiben kann man ebenfalls 1/0 reinschreiben oder auch das was PHP aus booleans in einem String-Kontext macht: '1'/''.
Der einzige Nachteil dieser Variante ist, dass man in PHPMyAdmin erst mal wissen muss, wie man das Flag wieder löscht. Dazu braucht man die Strg-Taste. Außerdem könnte man denken, wenn dort true dasteht, wäre es schon gesetzt, was natürlich nur stimmt, wenn das Wörtchen auch farbig hinterlegt ist.
Welche Varianten nutzt ihr, um boolean Werte abzubilden?
Gruß,
Amica
vor einiger Zeit begann ich, DB-Anwendungen nach dem DRY-Prinzip aufzubauen. Dabei hole ich mir alle Informationen über Tabellen, Spalten, Indizes und Fremdschlüsselbeziehungen direkt aus der DB statt sie in der Anwendung nochmal zu modellieren.
Bis dahin hatte ich noch "tinyint(1) unsigned not null" für boolean-Spalten benutzt, leider ist dabei nicht anwendungsseitig feststellbar, ob es sich dabei nicht doch um eine normale Ziffer handelt.
Inzwischen nutze ich seit längerem "set('true') not null" und das hat einige Vorteile. Wenn es ganz normal selektiert wird, liefert es "true" oder "", was in PHP auf bool gecastet den korrekten Wert liefert. Selektiert man es in einem numerischen Kontext, liefert es 1/0, was auch ziemlich sinnvoll ist. Beim Schreiben kann man ebenfalls 1/0 reinschreiben oder auch das was PHP aus booleans in einem String-Kontext macht: '1'/''.
Der einzige Nachteil dieser Variante ist, dass man in PHPMyAdmin erst mal wissen muss, wie man das Flag wieder löscht. Dazu braucht man die Strg-Taste. Außerdem könnte man denken, wenn dort true dasteht, wäre es schon gesetzt, was natürlich nur stimmt, wenn das Wörtchen auch farbig hinterlegt ist.
Welche Varianten nutzt ihr, um boolean Werte abzubilden?
Gruß,
Amica
Kommentar