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

Mehrere Einträge für Primärschlüssel??? Datenbankgestaltung

Dieses Thema im Forum "Microsoft Access" wurde erstellt von TommyS, 11 Juli 2019 um 11:36 Uhr.

  1. TommyS

    TommyS Benutzer

    Hallo,

    ich habe gerade bei der Datenbank gestaltung ein Problem. Ich habe folgende Tabellen:

    Tabelle Kunde:

    1. ID (P.Schlüssel Fortlaufend)
    2. Unternehmen
    3. Strasse
    4. PLZ
    5. ORT
    6. Kundennummer (Vom ERP System, aber nicht immer wird diese Eingetragen, deshalb die fortlaufende ID)

    Tabelle Artikel (Alle Artikel sind individuell)

    1. Artikelnummer (P.Schlüssel)
    2. Hersteller
    3. Kopfaufsätze

    Tabelle Kopfaufsatz

    1. ID (P.Schlüssel, Fortlaufend)
    2. Aufsatznr
    3. Kopfmas
    4. Koerpermas
    5. Material

    Also die Beziehung sieht folgendermaßen aus:

    Jeder Kunde hat mindestens ein Artikel kann aber auch mehrere haben
    Jedes Artikel hat mindestens einen Kopfaufsatz oder mehrere
    In Kopfaufsätze kann man bis zu 10 verschiedene aufsätze haben

    Mein Problem: Habt ihr Ideen wie ich die Tabellen am besten gestalten sollte? Mein Problem ist z.B. bei der Tabelle Kopfaufsatz kann die Aufsatznr. 1 für x verschiedene Artikel gelten.

    Also für jede Hilfe und für jeden Tipp wie ich es am besten gestalten soll die Tabellen wäre ich sehr Dankbar.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    suchst Du einen FOREIGN KEY auf die Artikel-Tabelle? Und vielleicht einen UNIQUE auf (aufsatznr, artikelnummer)?
     
  3. TommyS

    TommyS Benutzer

    Hallo erstmal danke für die Antwort.

    Naja ich muss noch diese Begriffe googlen. Aber findest du die Tabelle ist gut aufgebaut?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    dazu müßte man mehr wissen - über die Anwendung, die Datentypen, die zu erwartenden Abfragen, ...
     
  5. TommyS

    TommyS Benutzer

    Wie mache ich bei Access einen Feld Unique?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    In normalen SQL bzw. PostgreSQL:

    Code:
    test=# create table tommys(a int, b int, c int, unique(a,b));
    CREATE TABLE
    test=*# \d tommys;
                   Table "public.tommys"
     Column |  Type   | Collation | Nullable | Default
    --------+---------+-----------+----------+---------
     a      | integer |           |          |
     b      | integer |           |          |
     c      | integer |           |          |
    Indexes:
        "tommys_a_b_key" UNIQUE CONSTRAINT, btree (a, b)
    
    test=*#
    
    Access kenne & nutze ich nicht, vielleicht geht es aber ähnlich.
     
  7. TommyS

    TommyS Benutzer

    Danke erstmal. Das Problem ist bei deiner Lösung.

    Stell dir vor Artikel A (gibt es nur einmal die ID) hat eine Aufsatznummer 1, Aufsatznummer 2, Aufsatznummer 3,
    Ein anderer Artikel hat wiederrum auch Aufsatznummer 1, Aufsatznummer 2, Aufsatznummer 3. Die heißen alle so. Wie sollte ich das jetzt machen, dass es mehrere gleiche Aufsatznummern gibt in einer Tabelle? Soll ich dann die Artikelnummer als Fremdschlüssel in die Tabelle Kopfaufsatz packen für ne verbindung?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    kann Artikel A mit Aufsatz 2 mehrfach in der Tabelle vorkommen?
     
  9. TommyS

    TommyS Benutzer

    Hi,

    Nein, Artikel A hat nur einmal Aufsatz 2. Aber Artikel B kann auch Aufsatz 2 haben. Also die werden nur so nummeriert. mit 1 und 2 und 3 und bis max 10
     
  10. ukulele

    ukulele Datenbank-Guru

    Also ein Artikel kann 1 bis n Kopfaufsätze haben.

    Ich vermute die Kopfaufsätze sind immer gleich oder? Also kann der selbe Kopfaufsatz mehreren Artikeln sinnvoll zugeordnet werden? Dann hast du eine n:m-Beziehung zwischen Artikel und Kopfaufsatz, nicht 1:n wie jetzt. Das erfordert eine Zuordnungstabelle.
     
  11. TommyS

    TommyS Benutzer

    Hallo,

    die Kopfaufsätze sind nicht immer gleich. Alles ist individuell. Nur Die Namen heißen immer Aufsatz 1, Aufsatz 2 und das für alle Artikel.
     
  12. ukulele

    ukulele Datenbank-Guru

    Dann passt 1:n schon. Die Namen sind egal und dürfen natürlich gleich sein auch wenn sie je nach Artikel nicht das selbe beschreiben. Deine Tabelle Kopfaufsätze hat den Primärschlüssel und jeder Kopfaufsatz hat einen Fremdschlüssel auf Artikel.
     
  13. TommyS

    TommyS Benutzer

    Ja aber wie soll ich dann die Aufsätze zuordnen? Wenn es 10 Aufsätze sind von jeweils verschiedenen Artikeln, woher weiß ich dann welcher Aufsatz zu welchem Artikel gehört.
     
  14. ukulele

    ukulele Datenbank-Guru

    Du baust in die Tabelle Kopfaufsatz neben dem Primärschlüssel eine Spalte Artikelnummer als Fremdschlüssel. Über diese kannst du dann immer joinen, ganz klassiche 1:n-Beziehung. Die Artikelnummern sind in dieser Spalte natürlich nicht eindeutig, daher taugt der Fremdschlüssel auch nie als Primärschlüssel.

    Deine Tabelle Artikel hingegen hat keine Spalte "Kopfaufsätze". Damit müsstest du ja mehrere Einträge in einer Spalte führen, das ist da vermutlich falsch.
     
    Walter gefällt das.
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