Eindeutige ID, nicht PK etc
bernd
- datenbank
0 suit0 bernd0 Harlequin0 Vinzenz Mai
0 Vinzenz Mai
Hallo,
hoffentlich ist die Kategorie richtig. Könnte auch in PHP reinpassen.
Ich trage in meine Datenbank 4 Felder je Datensatz ein. (ID, Name, Ort, Farbe)
Ich möchte gern vor oder während des Eintrags aus den Feldern für Name und Ort eine absolut eindeutige ID erzeugen. (Nennt man das Hash?) (Dazu werde ich noch eine Extraspalte anlegen)
Was mir spontan einfällt ist MD5(). Das mach ich aber dann vorher in PHP. Gibt es so etwas auch auf Datenbankseite? Welche Möglichkeiten gibt es überhaupt bei ordentlicher Geschwindigkeit?
Also so stell ich mir dann das Ergebniss vor:
Inhalt von Name: "Meier"
Inhalt von Ort: "Musterstadt"
wird zu: "fd8hg8guergu4gu89erge489" oder so ähnlich...
Es muss aber unbedingt eindeutig sein bspw. kann Meier auch Eimer sein, deswegen unbedingt einmalig.
Ich hoffe ich konnte darstellen, was ich überhaupt will ;)
Vielen Dank.
hoffentlich ist die Kategorie richtig. Könnte auch in PHP reinpassen.
wieso, es geht doch um datenbanken?
Ich trage in meine Datenbank 4 Felder je Datensatz ein. (ID, Name, Ort, Farbe)
Ich möchte gern vor oder während des Eintrags aus den Feldern für Name und Ort eine absolut eindeutige ID erzeugen. (Nennt man das Hash?) (Dazu werde ich noch eine Extraspalte anlegen)
nein, das nennt man "id" - wenn du schon ein feld mit der id hast, warum verwendest du es nicht entsprechend
Was mir spontan einfällt ist MD5(). Das mach ich aber dann vorher in PHP. Gibt es so etwas auch auf Datenbankseite? Welche Möglichkeiten gibt es überhaupt bei ordentlicher Geschwindigkeit?
falscher ansatz
Also so stell ich mir dann das Ergebniss vor:
Inhalt von Name: "Meier"
Inhalt von Ort: "Musterstadt"
wird zu: "fd8hg8guergu4gu89erge489" oder so ähnlich...
Es muss aber unbedingt eindeutig sein bspw. kann Meier auch Eimer sein, deswegen unbedingt einmalig.Ich hoffe ich konnte darstellen, was ich überhaupt will ;)
ja, den sinn begreife ich allerdings nicht
was spricht gegen eine id, wie sie normalerweise verwendet wird?
ggf. möchtest du auch diesen thread studieren
Hallo,
wieso, es geht doch um datenbanken?
Man weiß ja nie.
nein, das nennt man "id" - wenn du schon ein feld mit der id hast, warum verwendest du es nicht entsprechend
Weil in einer anderen Abfrage diese ID nicht bekannt ist, aber sehr wohl die beiden Inhalte der betreffenden Felder. Meine Hoffnung war nun ein Schlüssel der die Suche beschleunigt. Es ist doch bestimmt ein Unterschied über die gesamte Tabelle (bzw. 2 Spalten) zu suchen oder eben nur nach einem konkretem Schlüssel in einer Spalte. Oder liege ich falsch?
Was mir spontan einfällt ist MD5(). Das mach ich aber dann vorher in PHP. Gibt es so etwas auch auf Datenbankseite? Welche Möglichkeiten gibt es überhaupt bei ordentlicher Geschwindigkeit?
falscher ansatz
Welche Frage ist damit beantwortet? ALle? Eine? Welche?
ja, den sinn begreife ich allerdings nicht
Siehe oben
was spricht gegen eine id, wie sie normalerweise verwendet wird?
Gar nichts.
ggf. möchtest du auch diesen thread studieren
Nein. Vielen Dank. Habe ich schon. Hilft mir leider nicht.
Grüße
Yerf!
Weil in einer anderen Abfrage diese ID nicht bekannt ist, aber sehr wohl die beiden Inhalte der betreffenden Felder. Meine Hoffnung war nun ein Schlüssel der die Suche beschleunigt.
Sag doch gleich, dass du einen Index suchst... ;-)
Gruß,
Harlequin
Hallo,
nein, das nennt man "id" - wenn du schon ein feld mit der id hast, warum verwendest du es nicht entsprechend
Weil in einer anderen Abfrage diese ID nicht bekannt ist, aber sehr wohl die beiden Inhalte der betreffenden Felder. Meine Hoffnung war nun ein Schlüssel der die Suche beschleunigt. Es ist doch bestimmt ein Unterschied über die gesamte Tabelle (bzw. 2 Spalten) zu suchen oder eben nur nach einem konkretem Schlüssel in einer Spalte. Oder liege ich falsch?
Dazu ist keine weitere Spalte notwendig, sondern nur ein entsprechender Index. Wenn die Daten nicht eindeutig sind, dann kann der Index auch nicht eindeutig sein. Benötigst Du einen eindeutigen Index, dann müssen die Daten auch eindeutig sein.
falscher ansatz
Welche Frage ist damit beantwortet? ALle? Eine? Welche?
ja, den sinn begreife ich allerdings nicht
Siehe oben
Ich kann es nur bestätigen: "Falscher Ansatz". Du benötigst keine weitere Spalte sondern nur einen Index. Sowas bieten alle mir bekannten Datenbankmanagementsysteme - auch einen Index, der mehr als eine Spalte umfasst.
Freundliche Grüße
Vinzenz
Hallo Bernd,
Ich trage in meine Datenbank 4 Felder je Datensatz ein. (ID, Name, Ort, Farbe)
Ich möchte gern vor oder während des Eintrags aus den Feldern für Name und Ort eine absolut eindeutige ID erzeugen.
wenn die Kombination von Name und Ort nicht eindeutig ist, dann geht dies nicht. Dann benötigst Du eine weitere (nachvollziehbare) Information, die die Eindeutigkeit herstellt.
(Nennt man das Hash?)
Nein, die Bildung eines Hashwertes wäre dann eine Möglichkeit (von Kollisionen abgesehen), wenn die Kombination von Name und Ort eindeutig wäre. Wenn Du dies erzwingen willst, dann sorge dafür, dass in beiden Spalten NULL-Werte nicht erlaubt sind und versieh' die Kombination der beiden Spalten mit einem eindeutigen (UNIQUE) Index.
(Dazu werde ich noch eine Extraspalte anlegen)
wozu?
Was mir spontan einfällt ist MD5(). Das mach ich aber dann vorher in PHP.
Wenn ja, warum?
Gibt es so etwas auch auf Datenbankseite?
Wenn Dein Datenbankmanagementsystem (Access, DB2, dBase, Firebird, FoxPro, Informix, MS SQL-Server, MySQL, Oracle, PostgreSQL, SQLite ...) das bietet. Welches verwendest Du (in welcher Version)?
Ich hoffe ich konnte darstellen, was ich überhaupt will ;)
ich habe verstanden, was Du willst - aber nicht wozu.
Freundliche Grüße
Vinzenz