1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Schlüsselkandidaten bestimmen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von savanluffy, 4 März 2018.

  1. savanluffy

    savanluffy Neuer Benutzer

    Hallo ich hätte zu dieser Aufgabe eine Frage:


    upload_2018-3-4_21-15-20.png


    Bei der Nummer a steht das 2 Schlüssekandidaten sind. Aber für mich sind es 3: Angebot#,A# UND Lieferant# weil ja der Liefarnt das gleiche Artikel nur einmal anbieten darf. Wie kommt man auf 2?
     
  2. drdimitri

    drdimitri Datenbank-Guru

    Für mich ist es sogar nur ein Schlüssel: Angebot#.
    Der Aufgabenersteller möchte aber (fälschlicherweise) A# und Lieferant# hören, denn nur so wird die sichergestellt, dass ein Lieferant nur einmal einen bestimmten Artikel anbieten kann.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    die beste Lösung wäre, auf Angebot# zu verzichten und einen PK über Lieferant# und Artikel# zu bilden.
     
  4. drdimitri

    drdimitri Datenbank-Guru

    Würd ich nicht machen. Es hat sich immer bewährt, wenn ein PK rein syntetisch ist und es gibt keinen Vorteile einen PK aus bereits existierenden Feldern zu rekrutieren.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    • Platzersparniss
    • durchsetzung eines gegebenen constraints

    Man könnte auch eine unique not null drauf machen, dann hast aber 2 indexe zu pflegen. Mehr Platz, mehr Aufwand bei schreibenden Operationen.
     
  6. drdimitri

    drdimitri Datenbank-Guru

    Und jetzt kommt die neue Anforderung (sowas kann in einem lebenden System durchaus vorkommen), dass ein Artikel durch einen Lieferanten mehrfach angeboten werden kann.
    Das wars mit dem PK. Wenns jetzt ggf. auch noch FK Verknüpfungen gibt, kannst das auch noch alles aufwändig migrieren.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden