Announcement

Collapse
No announcement yet.

ORACLE Tabelle mit Foreign Keys

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ORACLE Tabelle mit Foreign Keys

    Hallo, kann mir jemand helfen, komme hier nicht mehr weiter..
    Ich muss die Tabelle Lager erstellen mit Foreign Keys.

    ES kommt andauernd die Fehlermeldung "ORA-00904: "KNR": ungültiger Bezeichner "

    Habe folgendes eingegeben:

    CREATE TABLE Lager
    (
    PNR INTEGER CONSTRAINT lager_pnr_fk REFERENCES
    Prod(pnr),
    ORT VARCHAR2(10),
    MENGE NUMBER(3),
    CONSTRAINT lager_knrpnr_pk
    PRIMARY KEY (knr, pnr),
    CONSTRAINT lager_ort_fk FOREIGN KEY(ort)
    REFERENCES t(ort)
    );


    Das sind die Tabellen die ich bereits erstellt habe.

    Tabelle Kunde
    KNR FIRMA STATUS ORT
    1 Adelmeyer 20 Mannheim
    2 Bellaria 30 Bonn
    3 Danninger 30 Hamburg
    4 Distel 10 Bonn
    5 Enrico

    Habe in Tabelle Kunde KNR als Primary Key definiert



    Tabelle Produkte (kurz: Prod)
    PNR BEZ PREIS
    10 Ski 850
    20 Tretboot 911
    30 Drachen 800
    40 Segelboot 999
    50 Flossen 60
    60 Surfbrett 1820

    Auch in der Tabelle Produkte habe ich PNR als Primary Key dediniert



    Und so soll es aussehen hinterher:

    Lagerplatz (kurz: Lager)
    PNR ORT MENGE
    10 Berlin 30
    20 Berlin 20
    20 Mannheim 10
    30 Mannheim 103
    30 Berlin 94
    40 Berlin 9
    40 Mannheim 13
    50 Berlin 119
    50 Mannheim 312


    Das Attribut PNR entspricht demselben Attribut in der Relation Produkt. Der einzige Unterschied ist, dass einzelne Produktnummern hier öfter als einmal vorkommen können, allerdings pro Lagerort einmal.
    Das Attribut ORT beschreibt den Lagerort eines Produkts. Einträge bis zu zehn Zeichen sind erlaubt.
    Die Kombination der Werte für die Attribute PNR und ORT darf in dieser Relation jeweils nur einmal vorkommen.
    Das Attribut MENGE beschreibt die Stückzahl des jeweiligen Produktes, die an einem Lagerort verfügbar ist. Für dieses Attribut kann eine bis zu vier Stellen lange ganze Zahl eingegeben werden.



    Wenn ihr mir helfen könntet, wäre ich euch sehr dankbar

    eure Caro

  • #2
    Du definierst in der Tabelle Lager einen Primärschlüssel über die Spalten knr und pnr. Die Spalte knr existiert aber in dieser Tabelle Lager gar nicht, daher die Fehlermeldung.

    kuemmelchen

    Comment


    • #3
      Hi Kuemmelchen, danke für die schnelle Antwort, doch was muss ich denn dann schreiben bzw. wo und was ergänzen?

      danke
      caro

      Comment


      • #4
        Produktnummern hier öfter als einmal vorkommen können, allerdings pro Lagerort einmal.
        Den Primärschlüssel würde ich nur über die Spalte ort definieren.
        Die Kombination der Werte für die Attribute PNR und ORT darf in dieser Relation jeweils nur einmal vorkommen.
        Da der Ort Primärschlüssel ist, kann pro Ort nur ein PNR angegeben werden. Ein anderer Ort kann aber die selbe PNR besitzen.

        kuemmelchen

        Comment


        • #5
          Könntest Ihr mir meinen Code ergänzen, weil ich es versuche und es klappt nicht

          danke
          eue Caro

          Comment


          • #6
            Code:
            CREATE TABLE Lager
            (
            PNR INTEGER CONSTRAINT lager_pnr_fk REFERENCES Prod(pnr),
            ORT VARCHAR2(10),
            MENGE NUMBER(3),
            CONSTRAINT lager_ort_pk PRIMARY KEY (ort)
            );
            kuemmelchen

            Comment


            • #7
              Danke Kuemelchen, das mit der Tabelle hat geklappt, doch wenn ich jetzt die Werte in die Tabelle eingebe, dann erscheint mir ein Fehler.

              Den ersten Wert habe ich ganz normal eingegeben mit:
              INSERT INTO Lager (PNR, ORT, MENGE)
              VALUES (10, ‘Berlin‘, 30);

              doch wenn ich den zweiten Wert eingebe

              INSERT INTO Lager (PNR, ORT, MENGE)
              VALUES (20, ‘Berlin‘, 20);

              dann kommt dieser Fehler..
              FEHLER in Zeile 1:
              ORA-00001: Unique Constraint (STUDENT1_25.LAGER_ORT_PK) verletzt

              Comment


              • #8
                Originally posted by carolina_maria View Post
                Danke Kuemelchen, das mit der Tabelle hat geklappt, doch wenn ich jetzt die Werte in die Tabelle eingebe, dann erscheint mir ein Fehler.

                Den ersten Wert habe ich ganz normal eingegeben mit:
                INSERT INTO Lager (PNR, ORT, MENGE)
                VALUES (10, ‘Berlin‘, 30);

                doch wenn ich den zweiten Wert eingebe

                INSERT INTO Lager (PNR, ORT, MENGE)
                VALUES (20, ‘Berlin‘, 20);

                dann kommt dieser Fehler..
                FEHLER in Zeile 1:
                ORA-00001: Unique Constraint (STUDENT1_25.LAGER_ORT_PK) verletzt
                Hallo,

                Du hast ja auch auf den Ort einen Unique Constraint

                "
                "
                CREATE TABLE Lager
                (
                PNR INTEGER CONSTRAINT lager_pnr_fk REFERENCES Prod(pnr),
                ORT VARCHAR2(10),
                MENGE NUMBER(3),
                CONSTRAINT lager_ort_pk PRIMARY KEY (ort)
                );

                Da Du Berlin schon hast, wird dieser verletzt.

                Gehe mal bei Dir von einer n:m Beziehung aus.
                Füe den Fall brauchst Du eine 'Zwischentabelle'

                Imho
                ORT und Produktnummer als FK aus den jeweiligen Tabellen und den Bestand auch in dieser Zwischentabelle führen

                Gruß

                Martin
                Zuletzt editiert von Martin R.; 06.12.2011, 16:19.

                Comment


                • #9
                  Ich glaube nicht, dass der Primary Key Constraint auf Ort so gewollt war, oder?
                  Wieso soll in einer Lagertabelle nur jeweils ein eindeutiger Ort erlaubt sein?
                  Wieso überhaupt ein Ort in der Lagertabelle?

                  Dein ursprünglicher Versuch sieht auch ganz anders aus, das bist Du an der KNR hängen geblieben.

                  Wie soll Dein gesamtes Modell aussehen? Schreib doch mal Tabellennamen und geplante Bezüge hier auf.

                  Hast Du eigentlich die Erklärungen zu Deiner ersten Frage gelesen? Scheinbar nicht, zumindest hast Du nicht reagiert. Obwohl es da schon eine Menge hilfreiche Erklärungen gibt. Sie sind hier gelandet:
                  http://entwickler-forum.de/showthread.php?t=69925

                  Wenn Dir hier jemand einzelne Bröckchen anfertigt, nach dem Motto "mach, dass es geht", hilft das Deinem Verständnis nicht.
                  Willst Du es verstehen oder brauchst Du nur eine fertige Hausarbeit?
                  Gruß, defo

                  Comment


                  • #10
                    Hallo,

                    Originally posted by carolina_maria View Post
                    Könntest Ihr mir meinen Code ergänzen, weil ich es versuche und es klappt nicht ...
                    Das ist nicht der richtige Weg! Was hast du versucht? Was klappt nicht? Welche Fehlermeldungen gibt es?
                    Einfach zu sagen geht nicht, macht ihr mal, ist hier nicht! Das ist ein Forum für Entwickler keine Hausaufgabenhilfe!

                    Beim nächsten Versuch hier einfach nur Code abzustauben mach ich den Thread zu!

                    Originally posted by kuemmelchen View Post
                    Den Primärschlüssel würde ich nur über die Spalte ort definieren.
                    Autsch! Nutzdaten haben in einem Primärschlüssel nichts zu suchen, dieser sollte rein technischer Natur sein!

                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment

                    Working...
                    X