Ergebnis 1 bis 6 von 6

Thema: Wann passt welcher Datentyp?

  1. #1
    bb1898 ist offline Neuer Benutzer
    Registriert seit
    18.08.2009
    Beiträge
    16

    Standard Wann passt welcher Datentyp?

    Hallo,

    ich bin dabei, ein Fallbeispiel aus einem SQL-Lehrbuch in PostgreSQL 8.4 einzurichten, damit ich eine Datenbank zum Herumspielen habe. Dabei kommen mir die im Buch gewählten Datentypen in einigen Fällen arg seltsam vor:

    1. Numerische Datentypen für Werte, mit denen nicht gerechnet werden kann und die mit '0' anfangen können: decimal(5,0) für Postleitzahlen und decimal(20,0) für Telefonnummern.

    2. Spalten für verschiedene ganzzahlige, eher kleine Werte mit Datentyp decimal(x,0), verschiedene Werte von x.

    Für beides die gleiche Frage: wozu soll das gut sein? Warum nicht integer, evtl. smallint im Fall 2, char(5) für die Postleitzahlen und char(20), evtl. auch varchar, für Telefonnummern? Von ausländischen Adressen mal völlig abgesehen, die kommen im Fallbeispiel nicht vor.

    Übersehe ich da etwas oder zeigt schon diese Frage, dass mein Respekt vor Lehrbüchern einfach zu groß ist?

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von bb1898 Beitrag anzeigen

    Übersehe ich da etwas oder zeigt schon diese Frage, dass mein Respekt vor Lehrbüchern einfach zu groß ist?
    Nein, ja.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Was für ein sogenanntes Lehrbuch ist denn das?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  4. #4
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    Zitat Zitat von bb1898 Beitrag anzeigen
    char(5) für die Postleitzahlen und char(20)
    Unabhängig von dem Lehrbuch:
    CHAR() ist fast immer die falsche Wahl. Hier werden die Werte immer auf eine feste Länge gebracht (durch auffüllen mit Leerzeichen. Aus 'A' wird also z.B. 'A ')

    Wenn die tatsächlichen Werte (die in die DB geschrieben werden) unterschiedliche Längen haben, ist VARCHAR eigentlich immer die bessere Wahl.

    Nur wenn Du 100% sicher bist, dass die Werte nie eine andere Länge annehmen (z.B. ISO Codes, deutsche(!) Postleitzahlen oder ähnliches) dann kann man auch CHAR nehmen.
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  5. #5
    bb1898 ist offline Neuer Benutzer
    Registriert seit
    18.08.2009
    Beiträge
    16

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Was für ein sogenanntes Lehrbuch ist denn das?
    Das Lehrbuch selber finde ich gar nicht so schlecht (Daniel Warner, Advanced SQL, Franzis - nicht unbedingt mein Lieblingsverlag), es beschreibt den Standard und nicht ein RDBMS, es drückt sich in weiten Teilen schön mathematisch aus und ist nicht so grässlich "praxisorientiert". Nur das Fallbeispiel ist nicht in jeder Hinsicht durchdacht - und im übrigen gibt es auch auf der beiliegenden CD kein verwendbares SQL-Skript zum Einrichten, sondern verteilte Bruchstücke innerhalb einer PDF-Datei, die man nur mit schlimmen Verrenkungen in eine Textdatei bringt. Cut and Paste ergibt nichts Lesbares.

  6. #6
    bb1898 ist offline Neuer Benutzer
    Registriert seit
    18.08.2009
    Beiträge
    16

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Unabhängig von dem Lehrbuch:
    CHAR() ist fast immer die falsche Wahl. Hier werden die Werte immer auf eine feste Länge gebracht (durch auffüllen mit Leerzeichen. Aus 'A' wird also z.B. 'A ')

    Wenn die tatsächlichen Werte (die in die DB geschrieben werden) unterschiedliche Längen haben, ist VARCHAR eigentlich immer die bessere Wahl.

    Nur wenn Du 100% sicher bist, dass die Werte nie eine andere Länge annehmen (z.B. ISO Codes, deutsche(!) Postleitzahlen oder ähnliches) dann kann man auch CHAR nehmen.
    Der Unterschied ist mir klar. Bei der kürzeren Spalte geht es genau um deutsche Postleitzahlen (und nur um ein Beispiel - im wirklichen Leben hat man dann doch nach fünf Minuten die erste ausländische Adresse). Irgendwo brauche ich ein CHAR-Feld zum Probieren, unter Linux mit UTF-8 als System-Zeichensatz und als Zeichensatz der Datenbank. Mit Firebird hat mir das Probleme gemacht.

Ähnliche Themen

  1. welcher daten typ für json
    Von atu im Forum SQL
    Antworten: 2
    Letzter Beitrag: 17.08.2010, 13:08
  2. pg_standby - ab welcher Version verfügbar
    Von klingonio im Forum Konfiguration
    Antworten: 3
    Letzter Beitrag: 12.08.2010, 08:49
  3. Frage wann ist das denn passiert:
    Von symbiont im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 07.10.2009, 15:59
  4. Wann wird der Index genutzt und wann nicht?
    Von ipConfig im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 08.09.2009, 15:42
  5. Import von DB2: Timestamp-Format passt nicht
    Von stephan im Forum Migration
    Antworten: 6
    Letzter Beitrag: 28.12.2005, 07:15

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum