Brei Geschrieben 23. April 2005 Teilen Geschrieben 23. April 2005 Hallo, welchen Datentyp nehm ich für Mysql her, wenn ich in einem Feld nur 0 bzw. 1 darstellen möchte? Boolean oder sowas hab ich nicht gefunden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 23. April 2005 Teilen Geschrieben 23. April 2005 Es gibt den Datentyp Enum. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
NurrE Geschrieben 23. April 2005 Teilen Geschrieben 23. April 2005 Mal ne Frage: warum könnte man hier nicht char nehmen? Und die Länge auf "1" setzen? Ist das "suboptimal" wegen der Speichergröße oder einfach nur unsauber, weil man auch anderes als 0 und 1 speichern könnte? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 24. April 2005 Teilen Geschrieben 24. April 2005 ENUM kannst du zuweisen was du möchtest. ENUM("1","0","XXX") Wenn Du eine Zahl in eine ENUM speichern, wird die Zahl als Index behandelt und der gespeicherte Wert ist das Aufzählungselement mit diesem Index... nachzulesen : klick mich Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 25. April 2005 Autor Teilen Geschrieben 25. April 2005 Da wär mir das mit char(1) fast lieber. Was spricht dafür bzw. dagegen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 25. April 2005 Teilen Geschrieben 25. April 2005 Es gibt Boolean, allerdings ist das nur ein Alias für Tinyint (0..255). Das würde ich auch nehmen, weil es der kleinste Zahlentyp ist. Boolean-Felder sind für die Zukunft mal vorgesehen. EDIT: siehe: http://www.faqts.com/knowledge_base/view.phtml/aid/951/fid/69 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 25. April 2005 Autor Teilen Geschrieben 25. April 2005 aha, aber prinzipiell kann ich doch auch char(1) nehmen? laut mysql-Dokumentation geht auch folgendes (gefällt mir persönlich nicht besonders): char(0) NULL Dann gibts die Möglichkeiten NULL und "" Eine CHAR(0), die nicht als NOT NULL definiert ist, belegt nur 1 Bit und kann 2 Werte annehmen: NULL oder "". quelle: http://dev.mysql.com/doc/mysql/de/column-types.html Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 25. April 2005 Teilen Geschrieben 25. April 2005 aha, aber prinzipiell kann ich doch auch char(1) nehmen? Natürlich, du kannst fast alles nehmen. Kommt drauf an was drin stehen soll. Als Zahlenwerte würd ich Tinyint nehmen, da MySQL ab 4.1 Boolean Werte (True, False) nach 1, 0 ausflöst. Damit kannst du also direkt im SQL schon ohne umwandlung die Werte nutzen. http://dev.mysql.com/doc/mysql/en/boolean-values.html Hm, ok...würde mit 'J'/'N' auch gehen... ich ziehe auf jedenfall die Tinyint Lösung vor. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 25. April 2005 Teilen Geschrieben 25. April 2005 also ich wuerde CHAR(1) verwenden: zum einen belegt dies auch nur genau ein Byte und der weitaus triftigere Grund: ich bewahre mir kompatibilitaet, falls man die anwendung mal auf eine andere Datenbank portieren möchte... Tinyint usw entsprechen keinem standard, char hingegen schon Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brei Geschrieben 25. April 2005 Autor Teilen Geschrieben 25. April 2005 ziehe auf jedenfall die Tinyint Lösung vor. ich mittlerweile auch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 25. April 2005 Teilen Geschrieben 25. April 2005 ich bewahre mir kompatibilitaet, falls man die anwendung mal auf eine andere Datenbank portieren möchte... Tinyint usw entsprechen keinem standard, char hingegen schon Boolean Felder entsprechen im Normalfall 0 bzw. 1, also nichts anderem als Tinyint (Zahlen halt). Booleanfelder werden selten Characterfelder sein. Ausserdem ist Tinyint nur ein Integer mit eingeschränktem Bereich (anderswo teilweise auch Byte genannt). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 25. April 2005 Teilen Geschrieben 25. April 2005 Boolean Felder entsprechen im Normalfall 0 bzw. 1, also nichts anderem als Tinyint (Zahlen halt). Booleanfelder werden selten Characterfelder sein. Ausserdem ist Tinyint nur ein Integer mit eingeschränktem Bereich (anderswo teilweise auch Byte genannt). Das mag sein, ich arbeite so selten mit Spieledatenbanken. Trotzallem kann mir jeder erzaehlen was er will, ein Datenbankentwurf aus meiner Hand ist immer SQL-92 kompatibel...... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The_red_one Geschrieben 26. April 2005 Teilen Geschrieben 26. April 2005 Ich bin zwar aus der Oracle-Welt, aber vielleicht gibts bei "euch" auch so was wie nen Check-Constraint. So kann man die noch variabel beschriftbaren Int oder Char-Felder auf 0 und 1 bzw. "0" und "1" beschränken. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. April 2005 Teilen Geschrieben 26. April 2005 Das mag sein, ich arbeite so selten mit Spieledatenbanken. Deine Polemik kannst du getrost im Heise-forum ablassen. Die Zahl der Installationen, die Zahl der Webspace-Anbieter mit MySQL etc. sprechen für sich und gegen deine "Spielereien". Trotzallem kann mir jeder erzaehlen was er will, ein Datenbankentwurf aus meiner Hand ist immer SQL-92 kompatibel...... Das ändert aber nichts daran, dass ein Boolean-Wert kein character-Wert ist. Ein Integerfeld ist allemahl näher dran (0 = false, alles andere = true). Für die Anwendung spielt es keine Rolle ob das Feld jetzt max. einen Wert von 255 oder von 65535 oder sonstwas enthält. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 26. April 2005 Teilen Geschrieben 26. April 2005 Deine Polemik kannst du getrost im Heise-forum ablassen. Die Zahl der Installationen, die Zahl der Webspace-Anbieter mit MySQL etc. sprechen für sich und gegen deine "Spielereien". Was soll der erste Satz bitteschön ?!? Hab ich Dich bloed angemacht ?!? nein, also... und zurueck zum Thema: Das mag sein, dass eine Unmenge an Webspaceanbietern MySQL anbieten... aber für was ? um Daten fuer ein Forum oder Gaestebuch oÄ zu sichern... Aber bei komplizierteren Abfragen geht die MySQL nun mal in die Knie... deshalb 'Spieledatenbank'..... Das ändert aber nichts daran, dass ein Boolean-Wert kein character-Wert ist. Ein Integerfeld ist allemahl näher dran (0 = false, alles andere = true). Für die Anwendung spielt es keine Rolle ob das Feld jetzt max. einen Wert von 255 oder von 65535 oder sonstwas enthält. Sry, aber Du hast nicht gerafft, was ich da geschrieben habe... bitte nochmal lesen gruss / zirri Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 26. April 2005 Teilen Geschrieben 26. April 2005 Aber bei komplizierteren Abfragen geht die MySQL nun mal in die Knie... deshalb 'Spieledatenbank'..... Wenn dem so wäre, würde es nicht so weit verbreitet sein. Wenn etwas in die Knie geht ist es eine zu schlecht (nicht ausreichend) mit Hardware ausgestattet Maschine und nicht die DB. Falls Transaktionen o.ä. gewünscht sind auf InnoDB Tabellen umsteigen... Es gibt wenige Datenbanken die den komfort von MySQL übertrumpfen können. Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. April 2005 Teilen Geschrieben 26. April 2005 Das mag sein, dass eine Unmenge an Webspaceanbietern MySQL anbieten... aber für was ? um Daten fuer ein Forum oder Gaestebuch oÄ zu sichern... Aber bei komplizierteren Abfragen geht die MySQL nun mal in die Knie... deshalb 'Spieledatenbank'..... Es gibt ausser Webspace anbietern genug andere, die MySQL benutzen. Auch wir haben schon eine Anwendung auf MySQL Basis verkauft und die wird auch benutzt, Tag für Tag und nicht nur mit Gästebüchern. Ich könnte mir auch sehr gut vorstellen (bin mir sogar sehr sicher), dass dieses Forum mit MySQL im Rücken läuft. (und hier gibt es nicht nur 2-3 Gästebucheinträge am Tag) Und ein Zitat von der MySQL-Homepage (Startseite): Wir verwenden MySQL, um die hohen Anforderungen der Mobilfunk-Anbieter bezüglich Skalierbarkeit und Verfügbarkeit zu erfüllen. Der kompetente und hilfsbereite MySQL-Support ist eine wertvolle Ergänzung.†Ralf Holighaus, Netzwert AG Sowas als Spiele-DB zu bezeichnen, weil man selbst nur seine "Profisysteme" kennt und keinen Blick über den Tellerrand wagt, das bezeichne ich als Heise-Forum-Flame-War würdig. Denn dort liest du in dem Zusammenhang genau dasselbe, was du hier sagst. EDIT: Tut mir leid, falls das etwas böse und aggressiv rüberkommt... is nich so gedacht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 26. April 2005 Teilen Geschrieben 26. April 2005 vorneweg: es ist nicht so, dass ich nur mit highend-DBS arbeite, bspw. sind auch mehrere Mysqls im Einsatz. Ich könnte mir auch sehr gut vorstellen (bin mir sogar sehr sicher), dass dieses Forum mit MySQL im Rücken läuft. (und hier gibt es nicht nur 2-3 Gästebucheinträge am Tag) tut mir leid, aber das sind in meinen Augen 'Spieledaten' - auch wenn wir es schaffen wuerden 500000 Beitraege am Tag zu schreiben.... gruss / zirri Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.