AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eindeutiger Zahlenwert für einen String

Ein Thema von musicman56 · begonnen am 12. Aug 2011 · letzter Beitrag vom 12. Aug 2011
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 14:05
Ein Hash ist nunmal nicht ein-eindeutig, wie wäre es mit einer GUID?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 14:07
Falls der Zweck des Hashs lediglich die Eindeutigkeit sein soll, wieso dann nicht einen Unique Index über die relevanten Felder bilden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 14:12
Ein Unique Index über alle Felder frisst entsprechend viele Resourcen. Eine synthetische ID (Generator / AutoInc oder die vorgeschlagene GUID) ist sparsamer im Verbrauch.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 14:21
Damit sichert man aber keine Eindeutigkeit der Kombination der Feldwerte, deshalb mein "Falls...".
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#5

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 14:22
Ein Hash ist nunmal nicht ein-eindeutig, wie wäre es mit einer GUID?
Eine GUID ist es aber auch nicht.

Mit den 128 Bit ist es, im Gegensatz zum ELF-Hash oder CRC32 mit ihren 32 Bit, einfach nur "etwas" unwahrscheinlicher daß sich Werte/Hashs gleichen können.



Um es kurz zu machen:
100%ig eindeutig wäre nur ein vollständiger Binärvergleich, bzw. ein Unique-Index über alles.
Oder du legst dir eine neue Spalte an, welche als Unique-Index entweder fortlaufende (einfacher) oder zufällige Werte (z.B. aus der Einfügezeit und den Daten berechnet, gibt es den wert schon, wird ein anderer zufällig gewählt).

Wenn keine der Daten (der anderen Felder) doppelt sein dürfen und du keinen Index willst, dann wirst du wohl beim einfügen vorher prüfen müssen, ob es das nicht schon gibt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Aug 2011 um 15:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 15:02
Schau mal, ob Dich das weiter bringt (insb. #8).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 15:14
Nochmal: welche Absicht steckt dahinter? Geht es lediglich darum, ein eindeutiges Feld zu haben? Dann würde ja ein künstlicher Schlüssel (AutoInc oder derartige Geschichten) vollkommen ausreichen. Soll aber sichergestellt sein, dass ein Hans Meier mit der KtoNr 123546 und BLZ 11122233 nur einmal vorkommen kann, ist IMO ein Unique Index über die 3 Spalten die beste Variante.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#8

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 16:16
Hallo,

@stahli

Vielen Dank für den "adler"-Tipp. Bei 10.000 Testdatensätzen immer noch 7 Doubletten. Mit der ersten Methode waren es 11. Aber, der Weg scheint erfolgversprechender zu sein. Werde mal weiter testen.

@DeddyH

Zitat:
Soll aber sichergestellt sein, dass ein Hans Meier mit der KtoNr 123546 und BLZ 11122233 nur einmal vorkommen kann, ist IMO ein Unique Index über die 3 Spalten die beste Variante.
Das ist das Ziel. Aber, er (der Hans Meier) kommt natürlich öfter vor, auch eventuell mehrmals am Tag. Darum: Konto-Nr + Bankleitzahl + Verwendungszweck alleine reichen eben nicht aus. Brauche mindestens noch das Datum + Betrag + Auszug-Nummer + Auszug-Seite + Datum/Zeit der Importdatei + Importdatei-Zeilen-Nummer bzw. Datensatz-Nummer dazu. Weil...könnte ja beispielsweise sein, dass eine Auszahlung an einem Geldautomaten am selben Tag zweimal mit demselben Betrag enthalten ist.

Diese Variante würde einen ziemlich großen/langen Unique-Index ergeben, und das möchte ich nach Möglichkeit vermeiden.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 16:54
Es gibt keine 100% Lösung dafür soviel Infos in 4 oder 8 oder 16 Bytes eindeutig "komprimiert" zu speichern.

Du benötigst mindestens eine Umsetztabelle In der du für jede "Quellfelder" eine selbst generierte (GUID oder AutoInc-Feld) vergiebst du du dann in deinem weitern DB-Modells als Schlüsssel verwendest.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#10

AW: Eindeutiger Zahlenwert für einen String

  Alt 12. Aug 2011, 17:02
Zu Not Hashes mit zwei verschiedenen Algorithmen machen, oder Hash + GUID. Wenn bei verschiedenen Daten beide Hashes auch noch gleich sind, na dann Prost
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz