SQL:使用主键和外键引用创建表(

时间:2016-11-03 15:37:31

标签: sql oracle

提前抱歉,因为这对我来说完全是业余时间。

这是我的组分配给在SQL dev中创建的数据库模式。

Database schema

我在参考FOREIGN KEYs时遇到了困难

等。 我创建了表作者,这一切都很好。我不确定aName是否应该是唯一标识符或主键。

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

然而,当我尝试制作BOOK表时,由于我在SQL中的无能而遇到麻烦(我真的很想)。

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),
);

当我尝试执行脚本时,我收到错误"缺少右括号"在我尝试引用外键的行上。我的猜测是语法错误,但我无法解决。

我无法解决的其他问题是我如何将表格DISCIPLINES中的主键书引用到BOOK表中的年份列。

同样适用于BOOK表中的Publisher与PUBLISHER表中的URL列之间的箭头。当它们都不是主键时,如何将它们互相引用?

我可能会错误地阅读架构或某些可能导致我某些困惑的部分。如果你可以帮助我或以任何方式给出某种方向,那将非常感激。

1 个答案:

答案 0 :(得分:0)

对于内联外键,您无法使用foreign key关键字。你最后还有一个悬空,

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
);

或者:

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) 
);