Benny: Datenbankschema: Einfache Aufgabe! kleines Problem?

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

  1. 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

  2. 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

  3. 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

    1. 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.

      --
      Vergesst Chuck Norris.
      Sponge Bob kann unter Wasser grillen!
  4. 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...), 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