Datenbankschema: Einfache Aufgabe! kleines Problem?
Benny
- datenbank
Also ich möchte eine kleine Adressverwaltung als ASP.Net MVC Application programmieren. Mit Datenbanken hab ich allerdings so meine Probleme. Also ich Habe mir folgendes überlegt:
Tabellen:
Kontakte - kontakt_id(PK),adressen_id(FK), Anrede, Vorname, Nachname
Adressen - adressen_id(PK), Straße, Hausnummer, PLZ, Ort
Telefonnummern - kontakt_id(FK),Typ (also z.B. Handy,privat...), Nummer
Ein Kontakt soll immer einer Adresse zugeordnet sein. Eine Adresse kann mehreren Kontakten zugeordnet sein. Ein kontakt kann 1-n Telefonnummern haben. Was mich nun interessiert ist ob die Schlüssel so richtig gesetzt sind und das Schema so passt oder ob man es anders machen würde. Wäre euch für eine kurze Hilfe sehr dankbar.
Mit freundlichen Grüßen
Benny
Hallo
Ein Kontakt soll immer einer Adresse zugeordnet sein. Eine Adresse kann mehreren Kontakten zugeordnet sein. Ein kontakt kann 1-n Telefonnummern haben. Was mich nun interessiert ist ob die Schlüssel so richtig gesetzt sind und das Schema so passt oder ob man es anders machen würde. Wäre euch für eine kurze Hilfe sehr dankbar.
Unter diesen Voraussetzungen passt das denke ich schon so. Aber ich denke, wenn man es gescheit machen will sollte man in der Regel mehrere Adressen pro Kontakt zulassen.
Ich würde also vorschlagen:
Kontakte-Tabelle: kontakt_id, Anrede, ...
Adressen-Tabelle: adressen_id, Typ (Home, Office etc.), Straße, ...
Kontakt-Adressen-Zuordnungs-Tabelle: kontakt_id, adressen_id
So kann ein Kontakt 1-n Adressen haben, eine Adresse kann aber auch 1-n Kontakten zugeordnet sein.
Eventuell würde das sogar für die Telefonnummern Sinn machen. Z.B. wenn eine Sekretärin 2 Chefs hat. Dann hat Chef 1 und Chef 2 die gleiche Nummer "Sekreteriat".
Gruß
Alex
Was mich nun interessiert ist ob die Schlüssel so richtig gesetzt sind und das Schema so passt oder ob man es anders machen würde.
Ich würde das anders machen.
Kontakt: ID (PK), Anrede, ...
Adresse: ID (PK), KontaktID (FK), Strasse, ...
Telefon: ID (PK), AdressID (FK), KontaktID (FK), Nummer, ...
Ob Du in der Telefontabelle 2 Fremdschlüssel benötigst, weißt nur Du alleine. Gib aber allen Deinen Tabellen eine Spalte mit eigenen primären Schlüsseln mit. Das lohnt immer.
Gruß, Tritop
Hallo,
nur aus Spass oder soll das Teil auch richtig benutzt werden?
Bei letzterem fehlt vielleicht noch Postfach mit PLZ und Ort falls abweichend oder Packstation.
Kay
Moin!
Bei letzterem fehlt vielleicht noch Postfach mit PLZ und Ort falls abweichend oder Packstation.
Auf alle Fälle sollte deine Adresstabelle mehr Felder enthalten. Ein Postfach oder eine andere Hausnummer sind eine andere Adresse, allerdings dürfte nicht jede Adresse mit den Feldern auskommen. Ich empfehle mindestens Name, Strasse, Adresse1, Adresse2, Stadt, PLZ. Und komm gar nicht erst auf die Idee die PLZ alz Zahl zu behandeln. Wenn die Möglichkeit besteht, daß dort nicht nur Deutsche Adressen eingepflegt werden, nimm auch ein ausreichend großes Feld. Da würd ich spontan mal 10 Zeichen sagen. Die restlichen Felder sollten auch ausreichend groß sein. Spar nicht mit Platz.
Also ich danke euch erst einmal für eure Antworten. An der Idee möchte ich nichts verändern. Es soll also dabei bleiben, dass ein Kontakt nur einer Adresse zugeordnet werden kann. WIe erstelle ich denn nun die Datenbank in Visual Studio? Also ich habe eine Datenbank angelegt und die einzelnen Tabellen mit den Datenfeldern erstellt. Die Primärschlüssel kommte ich ebenfalls festlegen. Ich weiß jetzt leider nicht wie ich die Fremdschlüssel definieren...?
Also ich möchte eine kleine Adressverwaltung als ASP.Net MVC Application programmieren. Mit Datenbanken hab ich allerdings so meine Probleme. Also ich Habe mir folgendes überlegt:
Tabellen:
Kontakte - kontakt_id(PK),adressen_id(FK), Anrede, Vorname, Nachname
Adressen - adressen_id(PK), Straße, Hausnummer, PLZ, Ort
Telefonnummern - kontakt_id(FK),Typ (also z.B. Handy,privat...), NummerEin Kontakt soll immer einer Adresse zugeordnet sein. Eine Adresse kann mehreren Kontakten zugeordnet sein. Ein kontakt kann 1-n Telefonnummern haben. Was mich nun interessiert ist ob die Schlüssel so richtig gesetzt sind und das Schema so passt oder ob man es anders machen würde. Wäre euch für eine kurze Hilfe sehr dankbar.
Mit freundlichen Grüßen
Benny