MySQL Primary Key
Betty
- datenbank
Hallo,
ich habe eine Spalte mit nummern dieser art: 19-2-33-5
Kann ich dieses als Primären Schlüssel nehmen?
Kann MySQL diese Zahlen sortieren?
Danke!
Hallo,
Hallo
Kann ich dieses als Primären Schlüssel nehmen?
Solange sie einzigartig (unique) sind - ja.
Kann MySQL diese Zahlen sortieren?
Primaries glaube ich nicht (bin aber auch nicht sicher) es sei denn du meinst beim Abrufen, das geht natürlich
"SELECT * FROM MeineTabelle ORDER BY MeinPrimaerSchluessel ;"
yo,
Kann ich dieses als Primären Schlüssel nehmen?
Solange sie einzigartig (unique) sind - ja.
kleine ergänzung, pk haben zwei constraints, unique und immer wieder gerne vergessen not null.
Ilja
echo $begrüßung;
ich habe eine Spalte mit nummern dieser art: 19-2-33-5
Kann ich dieses als Primären Schlüssel nehmen?
Wenn es eindeutig ist ... Was ist aber mit Korrekturen? Jemand kann so eine Zahl falsch eingegeben haben. Nach einer Korrektur hängen dann die Referenzen in der Luft. Außerdem nimmt ein Integer-Wert weniger Speicher in Anspruch als so ein String.
Kann MySQL diese Zahlen sortieren?
Nur als Zeichenfolge. Eine so genannte natürliche Sortierung, bei der die Zahlenbestandteile als solche erkannt und bewertet werden, kann MySQL nicht.
echo "$verabschiedung $name";
yo,
Außerdem nimmt ein Integer-Wert weniger Speicher in Anspruch als so ein String.
tut er das ? Um die zahl 192335 brauche ich wieviel bits ?
Nur als Zeichenfolge. Eine so genannte natürliche Sortierung, bei der die Zahlenbestandteile als solche erkannt und bewertet werden, kann MySQL nicht.
mal davon abgeshen, dass ich dir zustimme diesen wert nicht als pk zu benutzen, könnte man zur not, falls das kind schon im brunnnen gefallen ist, die '-' ersetzen, es mit einer funktiona ala CAST in einen INTEGER umwandeln und dann sortieren.
Ilja
echo $begrüßung;
Außerdem nimmt ein Integer-Wert weniger Speicher in Anspruch als so ein String.
tut er das ? Um die zahl 192335 brauche ich wieviel bits ?
Ein MEDIUMINT reicht, das wären 3 Bytes. Ich bin heute großzügig und spendiere 4 Bytes für einen INT. Als CHAR braucht dein Beispiel (mindestens) 6 Bytes, als VARCHAR 7. Abhängig von der Zeichenkodierung u.U. noch mehr.
Nur als Zeichenfolge. Eine so genannte natürliche Sortierung, bei der die Zahlenbestandteile als solche erkannt und bewertet werden, kann MySQL nicht.
mal davon abgeshen, dass ich dir zustimme diesen wert nicht als pk zu benutzen, könnte man zur not, falls das kind schon im brunnnen gefallen ist, die '-' ersetzen, es mit einer funktiona ala CAST in einen INTEGER umwandeln und dann sortieren.
_Ein_ Integer wird dabei nicht reichen, denn wenn die Werte 15-1 und 1-91 in der Reihenfolge 1-91,15-1 als richtig sortiert gelten (weil 1 kleiner als 15 ist, und erst dann der zweite und weitere Teile ausgewertet werden sollen), müsste man schon etwas Aufwand mit der Stringverarbeitung beim Sortieren betreiben. Erstes Sortierkriterium wäre die Zeichenfolge bis zum ersten '-', zweites Kriterium der Teil zwischen dem ersten und zweiten '-', usw.
echo "$verabschiedung $name";
yo,
du hast recht, was die größe der zeichen und zahlen betrifft. warum zum geier ich darauf gekommen bin, da waren meine gehirnwindungen ordentlich durcheinander.
was die sortierung der zahlen angeht, sehe ich das nicht ganz so kritisch. zum einen steht nicht fest, dass sie die zahlen wirklich auseinander pflücken will. zum anderen war die frage, ob es geht. und das würde ich auch unter mysql mit ja beantworten.
Ilja
Oha, ich hatte das ander verstanden (sie Post unten).
Ich dachte folgendes ist gemeint:
(Punkte sind zu ignorieren)
id | Wert1 | Wert2 | Wert3
===+=======+=======+=======
19 | foobar| barfoo| 0
2 .| foo . | bar . | 65
33 | . . . | value | 3
5 .|another| value | 0
Danke für den "not_null"-Hinweis, vergisst man wirklich...
ich habe eine Spalte mit nummern dieser art: 19-2-33-5
Kann ich dieses als Primären Schlüssel nehmen?
Kann MySQL diese Zahlen sortieren?
Füge am besten ein neues numerisches Datenfeld mit "auto increment" hinzu, nehme also kein existierendes für den zu erstellenden Primärschlüssel.
Zu den Fragen:
Q:Kann ich dieses als Primären Schlüssel nehmen?
A:Wenn es sicher ist, dass es keine gleichen Werte gibt in diesem Datenfeld (und auch nie geben wird, wie willst Du _das_ sicherstellen?) ja.
Q:Kann MySQL diese Zahlen sortieren?
A:Ja.