Laden...

MySQL-DB, Reorganisation von PrimaryKeys

Erstellt von UltraEdit vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.489 Views
U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 5 Jahren
MySQL-DB, Reorganisation von PrimaryKeys

verwendetes Datenbanksystem: <MySQL>

Hallo Zusammen,
ich gerne eine Frage zur MySQL-Datenbank-Planung:

Ich hatte am Anfang eine ArtikelTabelle und eine OrderZeilenTabelle:
(der PrimaryKey(PK) war ArtikelNr, der Join war über Artikel.ArtikelNr = OrderZeilen.ArtikelNr)
(somit konnte ich sicherstellen, das keine ArtikelNr DOPPELT vergeben werden konnte)

Nun hab ich eine neue Anforderung:
Eine Zweigstelle(Branch) soll nun dazu kommen:
Die KANN tlw. die GLEICHEN ArtikelNr'n haben(aber auch andere Preise, oder Lieferdaten)

Somit MUSS ich ja nun wohl:

  • die ArtikelNr'n als PK in den OrderZeilen wegmachen und auf eine Artikel.ID(UQ, AI) umstellen?
  • die Artikel.ArtikelNr UND die Artikel.Branch ZUSAMMEN als PK anlegen?
    (damit es pro Branch KEINE DOPPELTEN Artikel geben kann)

Ist das soweit richtig?(s. screenshot)

Das Zusammenspiel von UQ und PK ist mir nicht wirklich klar?!

Für ein paar Tipps bedanke ich mich im Voraus...

Viele Grüße
UltraEdit

16.834 Beiträge seit 2008
vor 5 Jahren

Ich würde die ID als PK nehmen und über ArtikelNummer und Branch nen Unique Constraint setzen.
Alles andere macht für mich hier wenig Sinn.

U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 5 Jahren

hab ich versucht:

ID - ArtikelNr - Branch
0001 - 10010 - 1
3202 - 10010 - 2
0002 - 10020 - 1

Wenn ich ArtikelNr und Branch zum UQ mache, knallt es schon.

16.834 Beiträge seit 2008
vor 5 Jahren

Ja, und wir können alle Hellsehen, was das Problem - inkl. Fehlermeldung - ist.
Richtig 😉

U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 5 Jahren

Ja, das war ja meine Frage/bzw. Problem:
Wenn ich "ArtikelNr UND Branch" ZUSAMMEN zum UQ mache, knallt es ja...
(Die werden wohl EINZELN betrachtet).

16.834 Beiträge seit 2008
vor 5 Jahren

Dann hast Du nen Constaint je Column gemacht statt über beide. Logisch, nich?
Das wird vermutlich auch so in Deiner Fehlermeldung stehen, die Du uns nicht zeigst (und wir nicht hellsehen können).

U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 5 Jahren

Ach so, ja stimmt, die Fehlermeldung hab ich nie gezeigt.
Die war "1062 - duplicate entry"...
Was mir ja auch klar ist: Der Artikel 10010 ist ja schon 2x drin.
(In jeder Branch soll der natürlich vorkommen dürfen.)

Was mein Problem war: Wenn ich im Editor in der Spalte "UQ" 2 Haken setzte(auf ArtikelNr UND Branch), warf er den Fehler.
(In der PK Spalte funktioniert das aber so) - Von daher dachte ich ich bin auf Abwegen.

Nun hab ich das "manuell" gemacht und die DB hatte nix zu meckern.

Ist das denn soweit richtig, bzw. macht man das so?(s. Bild)

Der PRIMARY Key ist nun die ID.

Vielen Dank und Grüße...
UltraEdit