C# Primary Key Foreign Key "Untertabelle" erstellen?
Hallo, ich bin gerade dabei eine Anwendung zu programmieren, welche Daten in eine Datenbank speichert und die Datensätze dann im grid anzeigt. Ich habe eine Tabelle in der Datenbank die heißt "Person" und eine die heißt "Adresse". In der "Person" Tabelle soll eine Adresse drin sein und in der "Adresse" Tabelle weitere Adressen die man hinzufügt. Ich habe ein datagridview für die einzelnen Personen die man beliebig per button click erstellen/löschen/bearbeiten kann. Es gibt ein zweites datagridview für die Adressen die eine Person hat. Ich selektiere also eine Person im einen datagridview und kann dann im anderen zu dieser Person eine weitere Adresse hinzufügen.
Wie mache ich das mit dem primary/foreign key? (bin noch Anfänger :D) Ich selektiere z.B. den Datensatz mit dem Vorname "Test" und kann dann unten rechts auf den Button "Anschrift hinzufügen klicken, dort öffnet sich dann ein Dialog in dem man Eingaben in Textboxen macht (Vorname,Name etc...). Dann soll im unteren Datagridview eine weitere Adresse für die selektierte Person angezeigt werden. Wie klappt das mit dem foreign key? Ich habe einen primary key in der "Person" Tabelle (oberes grird) und will diesen primary key als foreign key in der "Adresse" Tabelle. Wie stelle ich das an?
2 Antworten
Einfach gesagt musst du ja nur zwei Tabellen haben:
Person und Adresse
Beispiel Person:
1 Felix Baum
Beispiel Adresse:
1 DieStrasse 34 3242 Berlin 1
2 AndereStrasse 23 3323 Frankfurt 1
Somit hast du zwei Adressen, die per Foreign Key an einen Primary Key einer Person gebunden sind.
Wenn du eine Adresse hinzufügen möchtest, erstellt du einen neuen Eintrag in der Tabelle "Adresse" und setzt dem Foreign Key auf den Primary Key der Person.
Um dann alle Adressen einer Person abzufragen, machst du eine SQL Abfrage, die alle Adressen anzeigt wo der Primary Key von der Tabelle "Person" = Foreign Key der Tabelle "Adresse" ist.
Alle Adressen gehören in die Adressentabelle, alle Personen in die Personentabelle. Die Einträge in der Adressentabelle enthalten den Primärschlüssel der jeweiligen Person als Fremdschlüssel. Wenn Du unterscheiden willst zwischen erster und weiterer Adressen, musst die Adressen entsprechend kennzeichnen, entweder nummerieren: 1, 2, 3, 4 ... oder markieren: A, B, B, B...
So wie Du das vorhast, ist es chaotisch. Wie Du das am Bildschirm anzeigst, ist der Datenbank egal. Das steht Dir frei.