2016-11-03 5 views
0

leider im Voraus, da diese auf meinem Teil völlig Amateur Stunde istSQL:. Erstellen von Tabellen mit Primärschlüssel und Fremdschlüssel refering (

Dies ist das Datenbankschema meiner Gruppe zugeordnet ist in SQL Entwickler erstellen

.

Database schema

ich Schwierigkeiten habe, um Fremdschlüssel Bezug

etc. I Tisch Autor bin zu schaffen und es ist alles gut. ich bin ein wenig unsicher, ob vielleicht aName soll eine eindeutige Kennung sein oder ein Primärschlüssel

CREATE TABLE AUTHOR 
(
aName varchar (60), 
book varchar (60) PRIMARY KEY 
); 

Allerdings, wenn ich versuche, die BOOK Tabelle I in Schwierigkeiten in SQL wegen meiner Unfähigkeit führen zu machen (ich bin wirklich tho versuchen).

CREATE TABLE BOOK 
(
ISBN INTEGER PRIMARY KEY, 
year integer CHECK (yearBETWEEN 1900 AND 2016), 
title varchar (60) FOREIGN KEY REFERENCES FORFATTER (BOK), 
publisher utgiver varchar (90), 
); 

Wenn ich das Skript, das ich einen Fehler „fehlende rechte Klammer“ auf der Linie erhalten auszuführen, wo ich den Fremdschlüssel zu verweisen bin versucht. Ich rate, dass das ein Syntaxfehler ist, aber ich kann es nicht herausfinden.

Etwas anderes kann ich meinen Kopf nicht herum ist, wie ich den Primärschlüssel Buch aus der Tabelle DISCIPLINES in das Jahr Spalte in dem Buch Tabelle verweisen.

Das Gleiche gilt für wie Pfeil zwischen Verlag in der Buch-Tabelle und die URL-Spalte in der Tabelle PUBLISHER. Wie kann ich sie aufeinander beziehen, wenn keiner von ihnen Primärschlüssel ist?

Es ist möglich, dass ich das Schema falsch oder einige Teile gerade lese, die Führung zu einigen meiner Verwirrung haben könnte. Wenn Sie mir helfen oder irgendeine Art von Richtung geben könnten, wäre das sehr zu begrüßen.

Antwort

0

Für einen Inline-Fremdschlüssel, können Sie nicht das foreign key Schlüsselwort verwenden. Sie haben auch ein , am Ende baumelt:

CREATE TABLE BOOK 
(
    ISBN INTEGER PRIMARY KEY, 
    year integer CHECK (year BETWEEN 1900 AND 2016), 
    title varchar (60) REFERENCES FORFATTER (BOK), 
    publisher utgiver varchar (90) --<<< remove the comma here 
); 

Alternativ:

CREATE TABLE BOOK 
(
    ISBN INTEGER PRIMARY KEY, 
    year integer CHECK (year BETWEEN 1900 AND 2016), 
    title varchar (60), 
    publisher utgiver varchar (90), --<< for this syntax you need the comma 
    foreign key (title) REFERENCES FORFATTER (BOK) 
); 
+0

wirkt wie ein Zauber, danke! – Peter

Verwandte Themen