PhpMyAdmin Tabelle: Muss der Primärschlüssel ein Integer sein oder gibt es noch eine andere Lösung?
Hallo,
ich muss über phpMyAdmin eine Datenbank erstellen. Wenn ich jedoch eine Tabelle erstellen will, kommt die Meldung:
„incorrect column specifier for column ‘Fname‘“
Im Internet habe ich gelesen, dass der Primärschlüssel (also auto increment) ein Integer sein muss. Was, wenn es im meinem Fall kein Integer sein kann?
Ich wollte fitnessstudio-name als Primärschlüssel nehmen. Gibt es keine andere Lösung?
3 Antworten
Ich würde dir raten ID's zu verwenden, aber wenn du unbedingt den Fitnessstudio Namen als ID haben willst, musst du bei fname den A_I deaktivieren (bei dir ist da ein hacken). A_I ist der Auto-Increment, und bei dem Datentyp varchar schmeißt er dir ein Fehler da er ein INT ertwartet. Wenn du A_I deaktivierst sollte es funktionieren.
Ja, du kannst es trotzdem als Primarschlüssel definieren, bei der Tabellenansicht unter dem Reiter "mehr". Auto Increment wird zwar bei ID Spalten verwendet, um die Identifikationsnummer hochzuzählen, aber nicht alle ID Spalten müssen Auto Increment haben. Auto Increment zählt einen vordefinierten INT Wert hoch, bei den meisten Fällen zählt er immer eins hoch. Bei deinem Fall zählst du ja nichts hoch, du hast einen fixen String Wert als Identifikation in der Tabelle.
Ok da hat es mein lehrer falsch erklärt, weil er auto_increment mit primärschlüssel gleichsetzte. Danke dir
Hätte noch ne frage. Wenn ich jetzt eine neue tabelle erstellen will, werden automatisch 4 spalten vorgegeben, wie kann ich da eine entfernen?
edit: hab schon gefunden
Einfach leer lassen, dann werden die Spalten nicht angelegt.
Du machst Dir da Gedanken, die unnötig sind. Einfach eine ID als INT anlegen. Das schadet überhaupt nicht. Selbst wenn Du diese Spalte nicht benutzt. Alle anderen Felder kannst Du ganz normal auslesen. :-)
Und das wird dann der primärschlüssel in jeder tabelle?
Nur dieser Tabelle. Du kannst ja weitere Tabellen hinzufügen.
und in den anderen tabellen keine IDs wenn ich die nicht brauche?
Ich glaube, dass Du das Grundverständnis über Datenbanken nicht so ganz hast, oder?
Stell Dir eine Exceltabelle vor. die allererste Spalte sind die Nummerierungen der Zeilen. Diese wird automatisch vergeben. Wenn Du mit der Exceltabelle arbeitest, interesiert dich diese Spalte auch nicht, aber dennoch gibt es sie. Das kannst Du mit einer DB und deren Tabellen genauso machen. :-)
Es ging mir darum, dass dann jeder primärschlüssel gleich hieße. In der schule setzen wir nicht immer IDs als primärschlüssel sondern auch mal anderes, halt etwas womit man es eindeutig identifizieren kann. Aber unser lehrer erklärt halt nie wirklich was
Lass Dir per Auto_Increment ID-Nummern vergeben. Du musst sie ja nicht zwangsläufig benutzen. Du kannst in einem anderen Feld die Studionamen aufführen und auch danach suchen.
Ja, ich verstehe dein Problem, wenn Du jemanden als Lehrer hast, der Dir dir Grundlagen nicht richtig erklärt.
Das mit den IDs macht man aber genau deswegen: Es ist eindeutig. Auto_Increment deswegen, damit vielleicht gelöschte IDs nicht erneut vergeben werden und es eben eindrutig ist. Einen Namen als eindeutiges Merkmal zu benutzen finde ich schwierig. Schreibweise könnte abweichen, nur ein Beispiel.
Du solltest IMMER eine ID nutzen ... als INT!
Alles andere macht keinen Sinn und funktioniert in der Regel auch nicht!
Also lege noch eine ID-Spalte mit Auto_Increment an! Fertig!
In jeder tabelle eine ID? Aber im Zusammenhang mit dem fitnessstudio macht es doch wenig sinn
Aber es bleibt als primärschlüssel? Weil unser lehrer meinte, dass der primärschlüssel auto_increment ist