Einstellungen von Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einstellungen von Tabellen

    Hallo


    Also bisher habe ich MySQL-Tabellen, wie in vielen Tutorials beschrieben, über PHP-Scripte erstellt und mir keine weiteren Gedanken gemacht.

    Heute habe ich jedoch mal etwas mit phpmyadmin 2.11.0 beschäftigt und entdeckt, dass man dort beim erstellen von Tabellen eigentlich viel mehr Einstellungen vornehmen kann als ich bisher getan habe. Zwar habe ich etwas gegoogelt, jedoch bleiben da einige Fragen nicht 100% geklärt.


    1.) ich möchte eine xhtml-Seite in utf-8 erstellen. Bei der Erstellung einer Tabelle in MySQL (dort soll der Inhalt der späteren Seite herkommen) kann ich bei Kollationen folgendes auswählen (unter utf8):
    utf8_bin, utf8_general_ci, utf8_unicode_ci sowie sprachspezifische Dinge wie z.B. utf8_slovak_ci oder ...danish_ci.
    Erste Frage: welches davon ist nun das "richtige utf8" für mein Vorhaben?
    Zweite Frage: was sollen die sprachspezifischen Optionen? ich dachte, utf8 kann alle möglichen Zeichen speichern, fast egal welche Sprache oder Sonderzeichen?
    Dritte Frage: Man kann der ganzen Tabelle eine Kollation geben, den darin enthaltenen Feldern allerdings ebenfalls. Reicht es, der Tabelle eine Kollation zu geben und die Kollationen der einzelnen Felder leer zu lassen?

    2.) Man kann dort Primärschlüssel, Unique und Index festlegen. Mit Primärschlüsseln habe ich schon gearbeitet ... man definiert ein Feld als Primärschlüssel und stellt dazu auto_increment ein ... als Folge bekommen alle Einträge eine Nummer, welche eindeutig ist und sich bei jedem Eintrag erhöht.
    Das hört sich für mich jedoch eher nach einer Aufgabe für unique an. Was ist der unterschied, was kann der Primärschlüssel, was unique nicht kann (oder eben andersrum)?
    gebe ich das in der Suche von mysql AB ein, kommt für mich keine wirkliche Erklärung:

    http://dev.mysql.com/doc/refman/5.1/...imary-key.html

    3.) Reicht für eine kleine Seite MyISAM? So wie ich das gelesen habe, unterstützt InnoDB z.B. Transaktionssicherheit (was auch immer das bedeuten mag) und Relationen. Unter letzerem kann ich mir etwas vorstellen, doch was sind die wirklichen Vorteile, die für mich interessant sein könnten?


    Danke
    Zuletzt geändert von INC.; 20.10.2007, 18:42.

  • #2
    Erste Frage: welches davon ist nun das "richtige utf8" für mein Vorhaben?
    Das weiß niemand. Und wenn es einer wissen kann, dann nur du.

    Zweite Frage: was sollen die sprachspezifischen Optionen? ich dachte, utf8 kann alle möglichen Zeichen speichern, fast egal welche Sprache oder Sonderzeichen?
    Du meinst die Kollationen? Was verrät dir denn der Name?

    gebe ich das in der Suche von mysql AB ein, kommt für mich keine wirkliche Erklärung:
    Kein wunder, ist ja auch das falsche Kapitel. http://dev.mysql.com/doc/refman/5.1/...ate-table.html

    3.) Reicht für eine kleine Seite MyISAM?
    IMHO Ja.

    Kommentar


    • #3
      1.) ich möchte eine xhtml-Seite in utf-8 erstellen. Bei der Erstellung einer Tabelle in MySQL (dort soll der Inhalt der späteren Seite herkommen) kann ich bei Kollationen folgendes auswählen (unter utf8):
      Die Kollation hat mit der Enkodierung erstmal nichts zutun. Die Kollation ist die Reihenfolge der Datensortierung. Für UTF-8 nimmst du am besten nimmst du am besten utf8_uniceode_ci. (näheres siehe Verbindungszeichensatz und Sortierfolge)
      Zweite Frage: was sollen die sprachspezifischen Optionen? ich dachte, utf8 kann alle möglichen Zeichen speichern, fast egal welche Sprache oder Sonderzeichen?
      Die Sortierung ist in verschiedenen Sprachen unterschiedlich, das ä steht im Deutschen an einer anderen Stelle als in den Skandinavischen Sprachen zum Beispiel.
      Das hört sich für mich jedoch eher nach einer Aufgabe für unique an. Was ist der unterschied, was kann der Primärschlüssel, was unique nicht kann (oder eben andersrum)?
      Der Primärschlüssel hat mit unique allein nichts zutun sondern mit der Indizierung. Diese wird verwendet um bei Abfragen nicht immer alle Datensätze durchgehen zu müssen (siehe Index). Der Primärschlüssel definiert in diesem Fall einen Hauptschlüssel der für alle Datensätze eindeutig ist. Unique benutzt du wenn du verhindern willst das Daten irgendwo doppelt eingetragen werden, das hat mit Index und Schlüssel nichts zutun.
      3.) Reicht für eine kleine Seite MyISAM? So wie ich das gelesen habe, unterstützt InnoDB z.B. Transaktionssicherheit (was auch immer das bedeuten mag) und Relationen. Unter letzerem kann ich mir etwas vorstellen, doch was sind die wirklichen Vorteile, die für mich interessant sein könnten?
      MyISAM reicht normalerweise, Transaktionssicherheit heißt du kannst einige Querys an den Server schicken und erst wenn alle Querys gültig beim Server angekommen sind diese Querys in einem Stück in die Datenbank überführen (z.B. nützlich für Nested Sets wenn du mehrere Einträge verändern musst um einen einzufügen).
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        Re: Einstellungen von Tabellen

        Original geschrieben von INC.
        3.) Reicht für eine kleine Seite MyISAM? So wie ich das gelesen habe, unterstützt InnoDB z.B. Transaktionssicherheit (was auch immer das bedeuten mag) und Relationen. Unter letzerem kann ich mir etwas vorstellen, doch was sind die wirklichen Vorteile, die für mich interessant sein könnten?
        Also ich würde in jedem Fall direkt InnoDB bei Neuentwicklungen verwenden, aber nach der Frage mit den Keys, gehe ich ehrlich davon aus, dass dein Wissen um Datenbank zu minimal ist um irgendwie produktiv mit den InnoDB-Features irgendwas tun zu können, geschweige denn richtig zu entscheiden, wann InnoDB die falsche Storage-Engine ist...
        Dementsprechend würde ich dir dazu raten erstmal mit MyISAM "anzufangen", und wenn du wirklich Interesse an solch Dingen hast, dich in InnoDB einzulesen und dass dann, wenn genügend Wissen akkumuliert wurde, einzusetzen. Weil vorher hat das sowieso keinen Sinn~

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X