# SQL Doppelte Zuweisung von Personalnummern



## Plauzi92 (15. Mrz 2021)

Hi Leute,
ich stehe gerade ziemlich auf dem Schlauch. Mal angenommen ich habe eine Datenbank mit Personalnummern und den entsprechenden Namen und durch irgendeinen Fehler werden einer Personalnummer mehrere Personen zugeordnet, wie kann ich das dann abfragen? Das Problem ist, dass die Einträge mehrfach auftauchen können. Das heißt ein Mitarbeiter kann mit Namen und Personalnummer mehrfach enthalten sein. Beispielsweise bei einer Art Stechuhr. 
Wäre letzteres nicht der Fall könnte ich einfach schauen ob eine Personalnummer mehrfach vorkommt, so geht es jetzt aber leider nicht. 

Bin dankbar für jeden Tipp


----------



## Plauzi92 (15. Mrz 2021)

Hat sich erledigt, ich kann beim hinzufügen eines Mitarbeiters ja einfach überprüfen ob die Nummer mit einem anderen Namen schon vorhanden ist.. Wie gesagt, ich stand auf dem Schlauch..


----------



## Dukel (15. Mrz 2021)

Noch besser wäre es gar nicht zulassen: unique constraint


----------



## Plauzi92 (15. Mrz 2021)

Geht leider nicht. Das tatsächliche Projekt sieht auch etwas anders aus, das hier war nur ein Beispiel um es verständlicher zu machen. Es soll nicht ausgeschlossen werden, dass es passiert, sondern es soll festgestellt werden falls es passiert. 
Aber danke dir für die Antwort


----------



## mihe7 (15. Mrz 2021)

Plauzi92 hat gesagt.:


> das hier war nur ein Beispiel um es verständlicher zu machen.


Eigentlich macht es das ziemlich unverständlich, denn warum sollte man Fehler zulassen? Was ist denn der tatsächliche Anwendungsfall?


----------



## LimDul (15. Mrz 2021)

Die Lösung ist "eigentlich" einfach. Ein saubere normalisiertes Schema.

Dann gibt es *eine* Tabelle die einem Mitarbeiter eine Personalnummer zuordnet. In dieser Tabelle darf es pro Personalnummer nur einen Eintrag geben.

Die Tabelle mit den Stechuhreinträgen hat natürlich mehrere Einträge pro Personalnummer - aber dort stehen keine Mitarbeiterinformationen (wie z.B. Name) drin, die stehen ja schon in der Mitarbeitertabelle drin.

Ein Datenbankschema was Verletzungen solcher Art zulässt hört sich inhärent falsch modelliert an.


----------



## Plauzi92 (15. Mrz 2021)

mihe7 hat gesagt.:


> Eigentlich macht es das ziemlich unverständlich, denn warum sollte man Fehler zulassen? Was ist denn der tatsächliche Anwendungsfall?


Die Datenbank dient im Moment lediglich als eine Art WhiteBox-Test für ein Programm zur Nutzererkennung. Im Moment werden bestimmte Gesichtsmerkmale inklusive dem zugehörigen Namen gespeichert. Um zu testen ob es funktioniert wollte ich natürlich wissen ob mehrere Nutzer die gleichen Gesichtsmerkmale haben. In dem Fall können sie später nicht eindeutig zugeordnet werden. Aber für eben diesen Test sollen sie natürlich trotzdem gespeichert werden, mit dem Hinweis, dass diese Merkmale schon vorhanden sind. Das Beispiel mit den Personalnummern habe ich lediglich gewählt damit direkt klar ist was ich abfragen möchte. Außerdem können die Leute mehrfach vorkommen, weil die Personen logischerweise mehrfach an den Tests teilnehmen. Ich hoffe das ist einigermaßen verständlich formuliert


----------

