collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 45
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13797
  • stats Beiträge insgesamt: 63470
  • stats Themen insgesamt: 8600
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Anonymisieren eines Feldes  (Gelesen 288 mal)

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 145
Anonymisieren eines Feldes
« am: Oktober 11, 2017, 11:17:14 »
Ich habe eine db mit der Tabelle tblProbanden und dem Endlosformular frmProbanden. Der Inhalt des Feldes [Probandenname] (String) soll mit klick auf den Button [Befehl200] durch eine 20stellige Zufallsfolge von Zeichen ersetzt werden. (Alle Buchstaben und alle Ziffern) Doppelte Werte sollen nicht zugelassen werden.

Hintergrund ist, dass die Probanden-Namen nach einer bestimmen Zeit anonymisiert werden sollen, ohne dass die Messergebnisse verloren gehen.

Welches Design und welche Befehle für Befehl200 würdet Ihr mir für diesen Zweck empfehlen?

Carl
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 360
Re: Anonymisieren eines Feldes
« Antwort #1 am: Oktober 11, 2017, 11:28:26 »
Welches Design und welche Befehle für Befehl200 würdet Ihr mir für diesen Zweck empfehlen?

Diese zufällige Folge von Zeichen beinhaltet semantisch keine Information, deshalb kann man sie sich gleich sparen. Deshalb wäre der Wert NULL angemessen, unter der Voraussetzung, daß der Probandenname nicht Schlüsselfeld oder Teil des Schlüsselfelds ist.

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Anonymisieren eines Feldes
« Antwort #2 am: Oktober 11, 2017, 11:31:44 »
Hallo,
ich halte das Vorhaben auch für überflüssig. Da jeder Datensatz einen Primärschlüssel haben sollte, genügt es das Feld mit dem Namen einfach zu leeren (NULL, wie gesagt).
Da die Beziehungen über den Primärschlüssel laufen (sollten) gehen keine Messergebnisse verloren.
Gruß
Klaus
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 850
Re: Anonymisieren eines Feldes
« Antwort #3 am: Oktober 11, 2017, 11:48:07 »
Carl, wenn Du ernsthaft mit Access arbeiten willst, solltest Du Steuerelementnamen wie Befehl200 nicht zulassen - taufe das Steuerelement ordentlich, z. Bsp. in ctlAnonymisiereProband (ohne weitere Typisierung, was ich mittlerweile bevorzuge) oder in cmdAnonymisiereProband oder btnAnonymisiereProband o.ä. und verwende dann durchgängig gleiche Präfixe für gleiche Steuerelementtypen.

Zum Problem: sollte man sich einer Hashfunktion bedienen, die eindeutige Werte liefert. Das Ergebnis stellt je nach verwendetem Algorithmus ein unterschiedlich langer Zahlenwert dar, der i.d.R. nicht zum Ausgangswert zurückzuführen ist.

Diese Zahl kann man dann auch in Zeichfolgen weiter codieren - siehe z. Bsp. Base64 oder Base32 - eine Hexadezimaldarstellung tuts aber auch, wobei bei letzterer alle Namen gleich lang wären.

Wenn Du Dich für eine Methode entscheiden solltest, kann ich gerne Links auf entsprechenden Code posten.
Grüße von der (⌒▽⌒)
 

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 145
Re: Anonymisieren eines Feldes
« Antwort #4 am: Oktober 13, 2017, 07:22:58 »
Das mit den Benennungen werde ich berücksichtigen.

Die Idee mit dem Leeren des Feldes hatte ich deshalb verworfen, weil ich in den Formularen aus Platzgründen das Feld ID nicht anzeige. Und optisch sieht es komisch aus, wenn Namen-Felder leer sind. Ganz zu schweigen beim Datenexport mehrerer Tabellen in eine SPSS-Datei beispielsweise, wo dann die ID's mehrfach vorkommen. Da soll zur Identifikation des Datensatzes dann das Namensfeld dienen.

Hashen wollte ich vermeiden, weil es beispielsweise viele Leute mit dem Namen Müller gibt. Dann müsste ich erst ein Zusatzfeld mit [ID]+[PbnName], um das dann zu hashen.

Private Sub PbnNameAnonymisieren_Click()
Welcher Code muss hier stehen, damit die Schaltfläche in das Feld [PbnName] eine 12stellige Zufallskombination einträgt, die Buchstaben und Ziffern enthalten darf?
End Sub

Carl
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Anonymisieren eines Feldes
« Antwort #5 am: Oktober 13, 2017, 15:41:53 »
Hallo Carl,
Vielleicht so (Luftcode)
Public Function ZufallsString() As String
Const strValidChars "StringMitGültigenZeichen"
Dim L As Integer
Dim z As Integer
Dim strResult As String

L = Len(strValidChars)
For z = 1 To 12
      Randomize
      strResult = strResult & Mid$(strValidChars, L*Rnd(L)+1, 1)
Next z

ZufallsString = strResult

End Function
Natürlich musst du hier oder beim Aufruf noch eine Prüfung bezügl. Eindeutigkeit einfügen.

gruss ekkehard
« Letzte Änderung: Oktober 13, 2017, 15:48:06 von Beaker s.a. »
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Anonymisieren eines Feldes
« Antwort #6 am: Oktober 13, 2017, 17:29:55 »
Hallo,
Zitat
Und optisch sieht es komisch aus, wenn Namen-Felder leer sind. Ganz zu schweigen beim Datenexport mehrerer Tabellen in eine SPSS-Datei beispielsweise, wo dann die ID's mehrfach vorkommen. Da soll zur Identifikation des Datensatzes dann das Namensfeld dienen.
Da machst Du einen Denkfehler. Die ID darf ja auch nicht mehrfach vorkommen. Und wenn Du mehrfache IDs hast so hast Du eine Abfrage mit mehreren Tabellen. Dann nutzt Dir das verfälschen auch nichts, dann bei mehreren Müllern hast Du ja auch wieder das Problem der Eindeutigkeit. Das Feld taugt dann dazu auch nicht.

Ich würde das Feld leeren und über eine Abfrage in diesem Feld die ID eintragen. Dann ist es nicht leer.
Da sich an der eigentlichen ID nichts ändert, bleiben alle Zuordnungen erhalten. Da das Namensfeld geleert wurde ist die Anonymität 100% gesichert.
Völlig problemlos.
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Carl

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 145
Re: Anonymisieren eines Feldes
« Antwort #7 am: Oktober 15, 2017, 14:30:10 »
Hm ... okay.

Wieso über eine Abfrage? ich dachte an einen Button im Formular, der auf klick den Fildinhalt verändert. Hast Du da einen code im Kopf?
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: Anonymisieren eines Feldes
« Antwort #8 am: Oktober 15, 2017, 16:24:44 »
Me.Name = Me.ID
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Carl

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Anonymisieren eines Feldes
« Antwort #9 am: Oktober 15, 2017, 16:34:13 »
Hallo,
wenn es nur wenige Datensätze sind kannst Du das natürlich mit einem Button machen. Code siehe obigen Beitrag von ekkehard.
Wenn Du mehrere Datensätze ändern willst, dann eine Aktualisierungsabfrage.
Gruß
Klaus