Datenbanklogik

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Schangs.

    Datenbanklogik

    Hallo,

    ich habe hier eine Datenbankstruktur: (siehe Bild)



    ist die Beziehung der beiden roten Pfeile irgendwie möglich?
    auf normalem wege ging es nicht, da immer die zweite Referenz anscheinend gefehlt hat.

    Die Ausgabe, wenn ich etwas in die Tabelle "lager" schreiben wollte, war dabei immer:

    SQL-Abfrage

    1. Cannot add or update a child row: a foreign key constraint fails (`test`.`lager`, CONSTRAINT `lager_ibfk_1` FOREIGN KEY (`artikelnr`) REFERENCES `artikel` (`artikelnr`))


    Wenn jemand einen besseren Vorschlag hat, wie ich den Rabatt mit seinen Eigenschaften besser in die Datenbankstruktur einbinden kann, kann den gerne kund tun.

    Vielen Dank für eure Hilfe und

    Viele Grüße

    DenSe :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DenSe“ ()

    Hallo,

    danke für deine Antwort.

    ich habe die Tabelle Artikel und Rabatt. Diese Repräsentieren einen Artikelstamm, einmal einen normalen und einmal einen mit rabattierten Produkten.
    Nun ist mein Problem, wenn auf die Tabelle Lager einen Insert-Befehl absetze, kommt oben genannte Fehlermeldung.
    Mein Insert-Befehl lautet:

    SQL-Abfrage

    1. INSERT INTO lager VALUE(5001, 1, '2016-10-06');

    Die Fehlermeldung bezieht sich darauf, dass der Tabelle lager immer die andere Referenz fehlt.
    Gibt es da einen anderen Insert Befehl? evtl. mit inner oder outer joins? oder
    Muss ich die Struktur ändern und ich kann nicht von einem ForeignKey auf zwei PrimeKeys auf zwei verschiedene Tabellen referenzieren?
    Ich glaube die Logik dabei ist schon falsch.
    Der Rabatt sollte dem Artikel zugeordnet werden, nicht dem Artikel im Lager.

    Wenn es aber so ist, dass nur eine bestimmte Menge eines Artikels einen Rabatt bekommt, dann müsstest du die mengen des Artikels im Lager aufspalten, in Menge mit und Menge ohne Rabatt. Dann solltest du aber noch eine Lager_ID einführen und diese mit dem Rabatt referenzieren.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Gut, dann werden Artikel und rabattierte Artikel in der Tabelle "Artikel" gesplittet, dennoch muss der Rabatt dem Artikel zugeordnet werden und nicht dem Lager.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Splitten = Trennen ...
    Du hattest doch bereits geschrieben, dass du den Artikel vom rabattierten Artikel trennst.

    DenSe schrieb:

    Alle rabattierten Artikel bekommen eine andere Artikelnummer.
    z.B. normaler Artikel = 123 | rabattierter Artikel = 50123


    Damit ist doch alles in Ordnung. Viel wichtiger ist doch aber diese, meiner Aussagen:

    Manü schrieb:

    dennoch muss der Rabatt dem Artikel zugeordnet werden und nicht dem Lager.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de