SQL Datenbank Tabelle erstellen

L

labelleamelie

Mitglied
Hallo, kann mir jemand sagen warum der Fehler auftritt, habe nach Lösungen gesucht aber nichts hat geholfen.

CREATE TABLE Land(
LandID INTEGER NOT NULL,
LandName VARCHAR2(30) NOT NULL,
CONSTRAINT size_Land CHECK (LandName >= 2),
CONSTRAINT Land_pk PRIMARY KEY(LandName)
);

CREATE TABLE Adresse(
AdrID INTEGER NOT NULL,
LandID INTEGER NOT NULL,
PLZ INTEGER NOT NULL,
HausNr INTEGER NOT NULL,
Straße VARCHAR2(30) NOT NULL,
Stadt VARCHAR2(30) NOT NULL,
CONSTRAINT Adresse_pk PRIMARY KEY (AdrID),
CONSTRAINT Adresse_fk FOREIGN KEY (LandID) REFERENCES Land (LandID)
);

Fehlermeldung:

Fehler beim Start in Zeile: 8 in Befehl -
CREATE TABLE Adresse(
AdrID INTEGER NOT NULL,
LandID INTEGER NOT NULL,
PLZ INTEGER NOT NULL,
HausNr INTEGER NOT NULL,
Straße VARCHAR2(30) NOT NULL,
Stadt VARCHAR2(30) NOT NULL,
CONSTRAINT Adresse_pk PRIMARY KEY (AdrID),
CONSTRAINT Adresse_fk FOREIGN KEY (LandID) REFERENCES Land (LandID)
)
Fehlerbericht -
ORA-02270: kein entsprechender Primär- o. eindeutiger Schlüssel für diese Spaltenliste
02270. 00000 - "no matching unique or primary key for this column-list"
*Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement
gives a column-list for which there is no matching unique or primary
key constraint in the referenced table.
*Action: Find the correct column names using the ALL_CONS_COLUMNS
catalog view
 
kneitzel

kneitzel

Top Contributor
In Land ist der Primary Key LandName, auf LandId ist kein Index.

Wenn Adresse nun aber auf LandID referenzieren soll, dann muss da ein unique oder Primary key drauf sein. Also einfach noch ein unique index hinzu fügen.
 
J

Joreyk

Bekanntes Mitglied
du versuchst grad eine M : N also viel zu viele beziehung aufzubauen nur so wie du das gerade versuchst lässt es deine DB nicht zu
weil bei einem Foreign Key wie oben genannt ein unique oder primary key braucht

eine n : m beziehung braucht eine "zwischen Tabelle" mit der du sie umsetzen kannst
 
L

labelleamelie

Mitglied
Habe noch eine Fehlermeldung, die ich nicht beheben kann. Ich habe bereits folgendes probiert: Buchung_fk umbenannt, UNIQUE entfernt, CHECK umgeschrieben.

CREATE TABLE Buchung(
BuchungsNR INTEGER NOT NULL ,
FWID INTEGER NOT NULL,
Email VARCHAR2(30) NOT NULL UNIQUE,
BuchDatum DATE NOT NULL,
StartDatum DATE NOT NULL,
EndDatum DATE NOT NULL,
RechnnungsNr INTEGER NOT NULL UNIQUE,
RechnungsDatum DATE NOT NULL,
Rechnungsbetrag FLOAT NOT NULL,
BewDatum DATE NOT NULL,
Ranking INTEGER NOT NULL,

CONSTRAINT Buchung_pk PRIMARY KEY(BuchungsNR),
CONSTRAINT Buchung_fk FOREIGN KEY (FWID) REFERENCES FerienWhng(FWID),
CONSTRAINT Buchung_fk FOREIGN KEY (Email) REFERENCES Kunde(Email),
CONSTRAINT size_Buchung CHECK (Ranking >= 1 AND Ranking <=5 ),
CONSTRAINT size_Buchung CHECK (EndDatum >= (Startdatum +2))
);



Fehlerbericht -
ORA-02264: Name wurde bereits für einen vorhandenen 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.
 
kneitzel

kneitzel

Top Contributor
du versuchst grad eine M : N also viel zu viele beziehung aufzubauen
Wo siehst du eine n:m Beziehung?

CONSTRAINT Buchung_fk FOREIGN KEY (FWID) REFERENCES FerienWhng(FWID),
CONSTRAINT Buchung_fk FOREIGN KEY (Email) REFERENCES Kunde(Email),
Hier versuchst Du zwei foreign keys mit dem selben Namen zu erstellen.
CONSTRAINT size_Buchung CHECK (Ranking >= 1 AND Ranking <=5 ),
CONSTRAINT size_Buchung CHECK (EndDatum >= (Startdatum +2))
Und hier noch einmal bei den checks ...

Generell wäre meine Empfehlung, da Namen zu verwenden, die etwas mehr aussagen:
Java:
CONSTRAINT Buchung_FWID_FerienWhng_FWID_fk FOREIGN KEY (FWID) REFERENCES FerienWhng(FWID),
CONSTRAINT Buchung_Email_Kunde_Email_fk FOREIGN KEY (Email) REFERENCES Kunde(Email),
Also sozusagen das Pattern: <Tabelle>_<Feld>_<Zieltabelle>_<Feld>_fk
Dann hast Du unterschiedliche Namen und kannst auch am Namen erkennen, was es für ein Index ist.

Und das zweite wäre ähnlich:
Java:
CONSTRAINT Buchung_Ranking_size_check CHECK (Ranking >= 1 AND Ranking <=5 ),
CONSTRAINT Buchung_EndDatum_StartDatum_check CHECK (EndDatum >= (Startdatum +2))
Hier ist die Regel etwas wie: <Tabelle>_<Felder>_<ggf. Beschreibung>_check

Das sind natürlich nur Anhaltspunkte und davon weiche ich auch teilweise ab. Aber eine Benennung in der Art macht aus meiner Sicht durchaus Sinn.

Edit: Natürlich sind dabei die maximalen Längen zu beachten. Du darfst nicht über 30 Bytes kommen (Oracle DB < 12.2) oder eben 128 Bytes (Oracle DB 12.2+). Bei der Version ist die Kompatibilitätseinstellung wichtig, nicht nur die installierte Datenbank-Software Version. https://docs.oracle.com/en/database...tml#GUID-75337742-67FD-4EC0-985F-741C93D918DA

Edit2: Und die Namen von Constraints müssen in der Datenbank unique sein, daher ist das Mindeste immer an einer definierten Stelle die Tabelle eindeutig einzufügen. Also wie ich z.B. immer am Anfang.
 
Zuletzt bearbeitet:
L

labelleamelie

Mitglied
Wo siehst du eine n:m Beziehung?


Hier versuchst Du zwei foreign keys mit dem selben Namen zu erstellen.

Und hier noch einmal bei den checks ...

Generell wäre meine Empfehlung, da Namen zu verwenden, die etwas mehr aussagen:
Java:
CONSTRAINT Buchung_FWID_FerienWhng_FWID_fk FOREIGN KEY (FWID) REFERENCES FerienWhng(FWID),
CONSTRAINT Buchung_Email_Kunde_Email_fk FOREIGN KEY (Email) REFERENCES Kunde(Email),
Also sozusagen das Pattern: <Tabelle>_<Feld>_<Zieltabelle>_<Feld>_fk
Dann hast Du unterschiedliche Namen und kannst auch am Namen erkennen, was es für ein Index ist.

Und das zweite wäre ähnlich:
Java:
CONSTRAINT Buchung_Ranking_size_check CHECK (Ranking >= 1 AND Ranking <=5 ),
CONSTRAINT Buchung_EndDatum_StartDatum_check CHECK (EndDatum >= (Startdatum +2))
Hier ist die Regel etwas wie: <Tabelle>_<Felder>_<ggf. Beschreibung>_check

Das sind natürlich nur Anhaltspunkte und davon weiche ich auch teilweise ab. Aber eine Benennung in der Art macht aus meiner Sicht durchaus Sinn.

Edit: Natürlich sind dabei die maximalen Längen zu beachten. Du darfst nicht über 30 Bytes kommen (Oracle DB < 12.2) oder eben 128 Bytes (Oracle DB 12.2+). Bei der Version ist die Kompatibilitätseinstellung wichtig, nicht nur die installierte Datenbank-Software Version. https://docs.oracle.com/en/database...tml#GUID-75337742-67FD-4EC0-985F-741C93D918DA

Edit2: Und die Namen von Constraints müssen in der Datenbank unique sein, daher ist das Mindeste immer an einer definierten Stelle die Tabelle eindeutig einzufügen. Also wie ich z.B. immer am Anfang.
Vielen Dank!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
J Tabelle synchronisieren mit Datenbank Datenbankprogrammierung 7
M Ausgabe in Tabelle der MySQL-Datenbank mit Java Datenbankprogrammierung 4
S Datenbank-Tabelle in SWING/AWT ausgeben Datenbankprogrammierung 28
M Tabelle von einer Datenbank in eine Andere Datenbankprogrammierung 4
T Tabelle in datenbank einfügen Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
M wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 24
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 5
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
L Appabsturz mit Datenbank Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L Datenbank sichern Datenbankprogrammierung 8
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
J Datenbank VPS Server Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
S Datenbank/Java true/false Datenbankprogrammierung 8
J JUNIT und CRUD-Datenbank Datenbankprogrammierung 4
F Datenbank/Datenabgleich/Wiederholungsabfrage Datenbankprogrammierung 12
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
C datenbank verbindung config Datenbankprogrammierung 23
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H Datenbank Export mit Java Datenbankprogrammierung 3
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
S SQL-Statement Datenbank Zeitbereich durchsuchen Datenbankprogrammierung 2
L Messenger App - Wie am besten auf Datenbank zugreifen? Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
M portable Datenbank Datenbankprogrammierung 2
S Name aus der Datenbank bekommen Datenbankprogrammierung 2
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
MaxG. Datenbank werte vergleichen Datenbankprogrammierung 5
MaxG. Access Datenbank Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
K SQLite Datenbank in App integrieren: Vor Auslesen schützbar? Datenbankprogrammierung 6
K Java Datenbank auslesen Datenbankprogrammierung 8
M MySQL Anbindung und Abfrage an die Datenbank Datenbankprogrammierung 2
P Neo4J Graphen-Datenbank HTML-Dokument importieren Datenbankprogrammierung 0
D Multi User Datenbank Anwendung Datenbankprogrammierung 5
H Oracle Erreichbarkeit der Datenbank Datenbankprogrammierung 8
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
N MySQL Datenbank lokal Datenbankprogrammierung 3
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
B Derby/JavaDB Client-Server-Architektur mit Datenbank Datenbankprogrammierung 6
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
K MySQL Datenbank untersuchen Datenbankprogrammierung 3
C "Abfrageschleife" auf Datenbank anweden Datenbankprogrammierung 13
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
I Access Datenbank in Table einlesen lassen Datenbankprogrammierung 2
T PostgreSQL Datenbank updaten Datenbankprogrammierung 3
L H2 100000 Entries in Datenbank einfügen Datenbankprogrammierung 10

Ähnliche Java Themen


Oben