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

TommyS

Benutzer
Beiträge
9
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.
 
Werbung:
Hallo erstmal danke für die Antwort.

Naja ich muss noch diese Begriffe googlen. Aber findest du die Tabelle ist gut aufgebaut?
 
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.
 
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?
 
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
 
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.
 
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.
 
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.
 
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.
 
Werbung:
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.
 
Zurück
Oben