Problem beim erstellen von Tabellen

Katzenbach

Benutzer
Beiträge
6
Guten Tag zusammen,

ich bin erst seit zwei tagen auf dem Gebiet der Datenbanken. Leider blieb mir nicht viel Zeit mich in die ganzen Details einzuarbeiten, weswegen ich mich direkt in die Thematik gestürzt habe.
Ich muss zwei Tabellen erstellen (Code wird mit eingefügt). Mir wird die ganze Zeit gesagt das die andere Tabelle nicht existiert. Liegt das daran das wir hier ein prozessuales Vorgehen haben und die zweite Tabelle noch nicht erstellt worden ist, womit er diese dann nicht referenzierten kann?
Ich füge am besten die Fehlanzeige mit ein. Und zur Information: Die Tabellen Lieferant und Kategorie stehen schon.

Falls ihr mir irgendwie helfen könnt wäre ich sehr dankbar.

Code:
CREATE TABLE Kleidung
(
Kl_Id INT,
Ka_Id INT,
Mo_Id INT,
L_Id INT,
Kl_Name VARCHAR(15),
Kl_Geschlecht VARCHAR(15),
Mo_Preis NUMBER(10, 2),
PRIMARY KEY (Kl_Id),
FOREIGN KEY(L_Id) REFERENCES Lieferant,
CONSTRAINT Ka_Id FOREIGN KEY(Ka_Id) REFERENCES Kategorie (Ka_Id),
CONSTRAINT Mo_Id FOREIGN KEY(Mo_Id) REFERENCES Modell (Mo_Id));

CREATE TABLE Modell
(
Mo_Id INT,
Kl_Id INT,
Mo_Farbe VARCHAR2(20),
Mo_Schnitt VARCHAR2(20),
Mo_Groeße VARCHAR2(20),
PRIMARY KEY (Mo_Id),
FOREIGN KEY (Kl_Id) REFERENCES Kleidung);

--------------------------------

Fehler beim Start in Zeile : 70 in Befehl -
CREATE TABLE Kleidung
(
Kl_Id INT,
Ka_Id INT,
Mo_Id INT,
L_Id INT,
Kl_Name VARCHAR(15),
Kl_Geschlecht VARCHAR(15),
Mo_Preis NUMBER(10, 2),
PRIMARY KEY (Kl_Id),
FOREIGN KEY(L_Id) REFERENCES Lieferant (L_Id),
CONSTRAINT Ka_Id FOREIGN KEY(Ka_Id) REFERENCES Kategorie (Ka_Id),
CONSTRAINT Mo_Id FOREIGN KEY(Mo_Id) REFERENCES Modell (Mo_Id))
Fehler bei Befehlszeile : 82 Spalte : 48
Fehlerbericht -
SQL-Fehler: ORA-00942: Tabelle oder View nicht vorhanden
00942. 00000 - "table or view does not exist"
*Cause:
*Action:

Fehler beim Start in Zeile : 84 in Befehl -
CREATE TABLE Modell
(
Mo_Id INT,
Kl_Id INT,
Mo_Farbe VARCHAR2(20),
Mo_Schnitt VARCHAR2(20),
Mo_Groeße VARCHAR2(20),
PRIMARY KEY (Mo_Id),
FOREIGN KEY (Kl_Id) REFERENCES Kleidung)
Fehler bei Befehlszeile : 92 Spalte : 33
Fehlerbericht -
SQL-Fehler: ORA-00942: Tabelle oder View nicht vorhanden
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
 
Werbung:
Code:
CREATE TABLE Modell
(
Mo_Id INT,
Kl_Id INT,
Mo_Farbe VARCHAR2(20),
Mo_Schnitt VARCHAR2(20),
Mo_Groeße VARCHAR2(20),
Constriant abcdefg_pk PRIMARY KEY (Mo_Id);

CREATE TABLE Kleidung
(
Kl_Id INT,
Ka_Id INT,
Mo_Id INT,
L_Id INT,
Kl_Name VARCHAR(15),
Kl_Geschlecht VARCHAR(15),
Mo_Preis NUMBER(10, 2),
PRIMARY KEY (Kl_Id),
FOREIGN KEY(L_Id) REFERENCES Lieferant,
CONSTRAINT Ka_Id FOREIGN KEY(Ka_Id) REFERENCES Kategorie (Ka_Id),
CONSTRAINT Mo_Id FOREIGN KEY(Mo_Id) REFERENCES Modell (Mo_Id));

Alter Table Modell add constraint dein_fk_was_auch_immer FOREIGN KEY (Kl_Id) REFERENCES Kleidung(kl_id);
Natürlich musst du die Bezeichner anpassen :)

Mal ganz davon agesehen dass du da niemals was eintragen kannst... Da der FK Check immer fehlschlagen wird...
 
Okay Leute mit ALTER TABLE hat es nun super funktioniert! :) aber jetzt bekomme ich bei meiner letzten Tabelle (Beleg) den Fehler das ein CONSTRAINT schon verwendet wurde..
Was nun?

Code:
CREATE TABLE Mitarbeiter
(
M_Id INTEGER,
M_Name VARCHAR2(30),
M_Vorname VARCHAR2(30),
M_Abteilungen VARCHAR2(50),
M_Berufstaetigkeit VARCHAR2(50),
M_Email VARCHAR2(60),
M_Telefon NUMBER(20),
PRIMARY KEY (M_Id)
);

CREATE TABLE Kunde
(
K_Id INT,
M_Id INT,
K_Name VARCHAR2(30),
K_Vorname VARCHAR2(30),
K_Email VARCHAR2(60),
K_Passwort VARCHAR2(30),
K_Adresse VARCHAR2(60),
K_Ort VARCHAR2(30),
K_Geburtstag DATE,
K_PLZ NUMBER(10),
K_Telefon NUMBER(20),
PRIMARY KEY (K_Id),
CONSTRAINT M_ID FOREIGN KEY (M_Id) REFERENCES Mitarbeiter (M_Id)
);

CREATE TABLE AusleihIndex
(
A_Id INT,
K_Id INT,
M_Id INT,
A_Datum_von DATE,
A_Datum_bis DATE,
FOREIGN KEY(K_Id) references Kunde,
FOREIGN KEY(M_Id) references Mitarbeiter,
PRIMARY KEY (A_Id));

CREATE TABLE Kategorie
(
Ka_Id INTEGER,
Ka_Name VARCHAR2(20),
PRIMARY KEY(Ka_Id));

CREATE TABLE Marke
(
M_ID INTEGER,
M_Name VARCHAR2(20), 
PRIMARY KEY (M_ID)
);

CREATE TABLE Lieferant
(
L_Id INTEGER,
L_Name VARCHAR2(30),
L_Telefon NUMBER(15),
PRIMARY KEY ( L_Id )
);

CREATE TABLE Kleidung
(
Kl_Id INT,
Ka_Id INT,
Mo_Id INT,
L_Id INT,
Kl_Name VARCHAR(15),
Kl_Geschlecht VARCHAR(15),
Mo_Preis NUMBER(10, 2),
PRIMARY KEY (Kl_Id),
FOREIGN KEY(L_Id) REFERENCES Lieferant
);

CREATE TABLE Modell
(
Mo_Id INT,
Kl_Id INT,
Mo_Farbe VARCHAR2(20),
Mo_Schnitt VARCHAR2(20),
Mo_Groeße VARCHAR2(20),
PRIMARY KEY (Mo_Id),
FOREIGN KEY (Kl_Id) REFERENCES Kleidung);

ALTER TABLE Kleidung ADD CONSTRAINT Ka_Id FOREIGN KEY(Ka_Id) REFERENCES Kategorie (Ka_Id);
Alter TABLE Kleidung ADD CONSTRAINT Mo_Id FOREIGN KEY(Mo_Id) REFERENCES Modell (Mo_Id);


CREATE TABLE Beleg
(
B_Id INT,
K_Id INT,
M_ID INT,
Ka_ID INT,
Mo_ID INT,
CONSTRAINT K_Id FOREIGN KEY (K_Id) REFERENCES Kunde (K_Id),
CONSTRAINT M_Id FOREIGN KEY (M_Id) REFERENCES Mitarbeiter (M_Id),
CONSTRAINT Ka_Id FOREIGN KEY (Ka_Id) REFERENCES Kategorie (Ka_Id),
CONSTRAINT Mo_Id FOREIGN KEY (Mo_Id) REFERENCES Modell (Mo_id), 
B_Von VARCHAR2(20),
PRIMARY KEY (B_Id)
);


---------------------------------
Fehlerbericht -
SQL-Fehler: ORA-02264: Name wurde bereits für ein vorhandenes CONSTRAINT verwendet
02264. 00000 - "name already used by an existing constraint"
*Cause: The specified constraint name has to be unique.
*Action: Specify a unique constraint name for the constraint.
 
Der BEZEICHNER von verschiedenen Constraints ist gleich ...
ALTER TABLE Kleidung ADD CONSTRAINT Ka_Id FOREIGN KEY(Ka_Id) REFERENCES Kategorie (Ka_Id);
Alter TABLE Kleidung ADD CONSTRAINT Mo_Id FOREIGN KEY(Mo_Id) REFERENCES Modell (Mo_Id);
Die hier von deiner Tabelle "Modell"
CONSTRAINT Ka_Id FOREIGN KEY (Ka_Id) REFERENCES Kategorie (Ka_Id),
CONSTRAINT Mo_Id FOREIGN KEY (Mo_Id) REFERENCES Modell (Mo_id)
Und die hier von deiner Tabelle "Beleg"

Du kannst nicht zwei verschiedene Cosntraints gleich benennen... Ist ja auch Unsinn :)

Edit: Den Namen "m_id" gibt es auch zweimal (Hinweis: Oracle interessiert Groß- Kleinschreibung nicht wirklich... Intern wird alles im Upper-Case gespeichert :) )

Edit Edit:
meine Constraints haben immer folgenden aufbau:
"TABELLENNAME"_"KURZFORM des Constraint-Typen"_"FORTLAUFENDE NUMMER falls notwendig"
Bspw.
modell_pk (Primary Key)
modell_fk_01 (Foreign Key 1)
modell_fk_02 (Foreign Key 2)
modell_uc_01 (Unique Constraint 1)
modell_cc_01 (Check Constraint 1)
etc...
 
Zuletzt bearbeitet:
Also die Lösung der Problems wäre jetzt das löschen der zwei Constraints in der Tabelle Beleg? Das Problem ist das ich unter Java die JDBC Schnittstelle verwende. Ich habe nur ein ERD Diagramm als einzige Informationsquelle. Und in dem ERD Diagramm kommen Ka_Id und Mo_Id als Primärschlüssel 2 mal in verschiedenen Entity-Mengen als FK aber mit diesem Schlüssel neben dem Namen (Sorry ich habe echt keine Ahnung wie die Bezeichnungen für diese Symbole sind). Deswegen dachte ich ich muss zwei mal Constraints setzen.
 
Werbung:
Du musst auch zwei Constraints setzen... Allerdings dürfen die Constraints nicht die gleichen Namen haben :) Du kannst ja auch nicht zwei Tabellen mit dem gleichen Namen anlegen...

Einmal alle Constraints droppen und neu anlegen. Vorher dann aber die Bezeichner anpassen.
 
Zurück
Oben