Announcement

Collapse
No announcement yet.

Allgemeine Frage zu DB-Design

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Allgemeine Frage zu DB-Design

    Hey Leute,

    ich hab eine kurze Frage und zwar was wird im allgemeinen als schöner angesehen:

    1.
    Man versucht Fremdschlüssel genau so zu bennen wie die zugehörigen Primärschlüssel um die Tabellen leicht durch "natural joins" verknüpfen zu können

    2.
    Man gibt den Fremdschlüssel anschauliche Namen, hat jedoch später mehr Arbeit bei "joins"


    Beispiel:
    ----------


    Gegeben sein folgende Entitäten:

    1. Person(P_ID,Name, Hund,....) P_ID Primärschlüssel
    2. Tier(T_ID,Name,...) T_ID Primärschlüssel

    wobei Hund ein Fremdschlüssel auf die Entität "Tier" ist.
    Wird es allgemein als schöner angesehen "Hund" zu lassen oder sollte man anstatt "Hund" besser "T_ID" wählen?

    Gruß

  • #2
    Hallo,

    warum nennst du den Titel so dass sofort ersichtlich ist dass es sich um eine Frage zu Fremdschlüsseln handelt?

    In deinem Beispiel macht die Spalte Hund ja keinen Sinn wenns sie auf eine Tier-Tabelle verweist. Was wäre wenn jemand einen Löwen hat?
    Wenn die Spalte TierId heißt ist es schlüssig. Würde sie nur Tier heißen dann erwartet man auch keine Id sondern ein Tier.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hey

      Mann kann in MySQL ja einfach sagen, dass das Attribut "Hund" eine Referenz auf ein Attribut (z.B. wie hier den Primärschlüssel) von "Tier" ist und es werden dann die Fremdschlüsselintegritätsbedinungen wie gewöhnlich geprüft.
      Es wird nicht zwingend vorausgesetzt, dass Fremdschlüssel ("Hund") und Attribut/Primärschlüssel ("T_ID") der referenzierten Entität ("Tier") den selben Namen haben.
      Deswegen war ich mir jetzt auch nicht sicher, was i.a. als schöner angesehen wird.


      Mit dem Attribut "Hund" in "Person" will ich z.B. jedem Hundebesitzer seinen Hund zuordnen. War jetzt ein schnell überlegtes Beispiel ohne tieferen Hintergrund mit dem Zweck die Sache etwas zu veranschaulichen :-)

      Gruß

      Comment


      • #4
        Hallo,

        es geht ja nicht unbedingt darum was schöner ist oder nicht (zumindest nicht bei Datenbanken ) sonder was praktischer und logischer ist.
        Originally posted by gfoidl
        Wenn die Spalte TierId heißt ist es schlüssig. Würde sie nur Tier heißen dann erwartet man auch keine Id sondern ein Tier.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Ok Danke

          Wie bennen ich denn dann am besten Attribute in einem Referenztypen, der eine Entität mit sich selbst in Beziehung setzt.

          Bsp:

          Person(ID,....)
          ist_Vater_von(ID_1, ID_2) (verbindet Personen mit Personen)

          Ich hab sie hier einfach mal "ID_1" und "ID_2" genannt was aber denke ich nicht ideal ist. Was wäre hier die praktischste Lösung?

          Gruß

          Comment


          • #6
            Hallo,

            da jede Person einen Vater und eine Mutter hat* könntest du hier VaterId und MutterId verwenden. 2x PersonId geht ja nicht und sagt ja auch nix aus.


            * zumindest nach dem klassischen Ideal


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Ok also Zusammenfassend kann man sagen, dass man, wenn möglich, für den Fremdschlüssel die Bezeichnung des referenzierten Attributs beibehalten soll und falls dies nicht möglist ist ein sinnvoller Name gewählt werden soll oder?


              Gruß

              Comment


              • #8
                Hallo,

                ein sinnvoller Name ist immer gut. Stell dir vor das System läuft gut und nach 1 Jahr musst du was ändern. Sind die Namen gut und intuitiv gewählt ist es dann auch noch klar was für was steht. Andernfalls kann schwierig werden, v.a. wenn es keine Kommentare und/oder Doku gibt. Sinnvolle Benamung kann somit auch als Ersatz für Kommentare verwenden werden. Oder anders ausgedrückt: sinnvolle Namen sind automatisch Kommentare.

                So wie oben ist halt meine Vorgehensweise.


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment

                Working...
                X