PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   ist das richtig ? (http://www.selfphp.de/forum/showthread.php?t=13492)

selbstlerner 15.05.2006 15:51:51

ist das richtig ?
 
Hallo, ich bin's mal wieder, ich habe heute richtig mit Mysql - Datenbank angefangen - mein Prpblem: ist das richtig ?


vielen herzlichen dank für die Antwort !


Primärschlüssel
Mit einem Primärschlüssel kann Mysql die Datensätze voneinander unterscheiden. Jeder Datensatz bekommt einen eigenen Primärschlüssel. Deshalb, muss ein Feld einen eindeutigen Wert erhalten. Dazu, muss zu den übrigen Feldern (Beispiel: Name, Ort, Strasse, Vorname) ein Feld für den Primärschlüssel erstellt werden.

die sache mit dem künstlichen feld bei einer Personaldatenbank habe ich nicht so verstanden ?

bei varchar dürfen max. 255 Zeichen ein Wert haben, im buch heißt es aber die Zeichenlänge ist Variabel (Länge der Zeichenkette variabel)

tinytext dürfen max. 255 Zeichen lang sein

text dürfen max. 60 000 Zeichen lang sein

was ist hier richtig !
(Die Angaben habe ich von: knowware,
php & Mysql, dynamische Webseiten)

wie arbeitet Mysql mit dem Primärschlüssel, wie kann ich mir das Vorstellen ?

ich bedanke mich für die ANtworten

Heinrich 17.05.2006 23:45:25

AW: ist das richtig ?
 
Hi,

du kannst die Zeichenlänge selbst (variabel) festlegen, aber halt nur bis zum jeweiligen Maximalwert. Beim Typ "Text" darfst du übrigens keine Festlegung treffen.

Du legst eine Spalte in der Tabelle an (ID), definierst diese als Primärschlüssel und gibst ihr die Eigenschaft auto_increment. Dann zählt MySQL bei jedem neuen Eintrag den Wert um eins hoch.

Gruß
Heinrich

diver-network 18.05.2006 14:03:40

AW: ist das richtig ?
 
Hi,

zum Thema Primärschlüssel:
Ein Primärschlüssel ist ein über die Tabelle hinweg eineindeutiger Schlüssel. Dieser kann aus ein (z.B. eine ID) oder mehreren zusammengesetzten Spalten (z.B. Name + Vorname) bestehen.

Die maximale Zeichenzahl der einzelnen Spaltentypen hab' ich nicht im Kopf, glaub' Dir das aber mal. In jedem Fall hat diese auch etwas mit dem von einem Datensatz verbrauchten Speicherplatz (Plattenplatz) zu tun.

Bei einem VARCHAR Feld wird nur soviel Platz benötigt, wie für die im Datensatz enthaltenen Zeichen benötigen (+ 1 Byte). Sprich: Du definierst das Feld mit VARCHAR(254), fügst aber nur ein "a" ein. Platzbedarf: 2 Byte (hoffe, das stimmt jetzt) und nicht 254 Byte.
Bei TEXT entspricht der Speicherbedarf immer dem maximal zur Verfügung stehenden Speicherplatz für die Spalte. Sprich (Beispiel): Maximal 254 Zeichen erlaubt, 1 Zeichen eingefügt: Belegter Platz auf der Platte dennoch: 254 Byte.

Welcher Spaltentyp in welchen Fällen am sinnvollsten ist kommt immer darauf an, worauf man Wert legt.
Klar ist, daß die maximale Anzahl an Zeichen, die in ein Feld eingetragen werden müssen, auch in dieses hineinpassen.
Ansonsten haben Tabellen mit variabler Satzlänge (sprich: VARCHAR) einen (leichten) Performancenachteil gegenüber Tabellen mit einer festen Satzlänge (sprich: TEXT). Dies wird man aber erst bei stark beanspruchten Datenbanken bzw. Tabellen merken.
Ansonsten hab' ich mal gelesen, daß es sinnvoll ist, Spalten mit einer variablen Länge eher ans Ende der Tabelle zu legen und nicht in die Mitte. (sprich: INT - TEXT - VARCHAR und nicht INT - VARCHAR - TEXT) Warum weiß ich aber auch nicht mehr genau.

HTH,

Andy


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:04:28 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.