在我第一次接受大量滥用行为后,我问了这个问题,我已经平静下来,我正在尝试再次尝试更具体。
我为Uni做了一个作业,这是以下提示中的一个问题:
Write Create Table SQL statements for the relational schema that you have created
Place the text in the specified location in the file: ASS1_SQL.TXT
• All tables must have primary keys.
• All tables must have appropriate foreign key constraints.
• Each foreign key column must have identical column name, datatype and size of the primary key
that it refers to
• Add any NOT NULL constraints as dictated by the ERD
• The following columns data types and sizes must be used
suppid, stkid number(2)
suppname, stkname varchar2(30)
sellprice, purchaseprice number(6,2)
我对此的回应是:
CREATE Table SUPPLIER(
suppid Number(2) NOT NULL,
suppname varchar2(30),
stkid Number(2) NOT NULL,
citycode Number(2) NOT NULL,
Primary Key (suppid),
Foreign Key (citycode) references CITY
)
CREATE Table STOCKITEM(
stkid Number(2) NOT NULL,
stkname varchar2(30) ,
sellprice Number(6,2) ,
purchaseprice Number(6,2) ,
suppid Number(2) ,
Primary Key (stkid) ,
whid Number(2) NOT NULL,
suppid Number(2) Foreign Key references SUPPLIER ,
whid Number(4) Foreign Key references WAREHOUSE
)
在您说我指向我尚未创建的表(并标记我的问题)之前,请注意我已在数据库中创建WAREHOUSE
和CITY
表我已经在使用了。
此代码可以工作并创建表。但是,我在10分中得到0分,没有任何解释。上面的代码从最初稍微改进了(我相信)我修复了NOT NULL属性。
Do my NOT NULL and FOREIGN KEY Constraints seem to have the right syntax?
可以在https://www.dropbox.com/sh/eohlj5h073kwp4u/Ot08kbdY7Q
的pdf中找到ERD在投票之前请先咨询我,我可以调整一下。我是这个网站的新手,请给我一个机会
答案 0 :(得分:1)
您的外键语法不正确。
试试这个:
CONSTRAINT fk1 FOREIGN KEY (suppid)
REFERENCES STOCKITEM(suppid)
将语法更改为与上述类似。
此外,您的主键应在任何变量之前声明。
最后,oracle中的主键语法如下所示:
CONSTRAINT pk PRIMARY KEY (suppid));
CREATE Table SUPPLIER(
suppid Number(2) NOT NULL,
suppname varchar2(30),
stkid Number(2) NOT NULL,
citycode Number(2) NOT NULL,
CONSTRAINT pk1 PRIMARY KEY (suppid),
CONSTRAINT fk1 FOREIGN KEY (citycode) References ParentTable(primary_key_column)
)
CREATE Table STOCKITEM(
stkid Number(2) NOT NULL,
stkname varchar2(30) ,
sellprice Number(6,2) ,
purchaseprice Number(6,2) ,
suppid Number(2) ,
whid Number(2) NOT NULL,
CONSTRAINT pk2 PRIMARY KEY (stkid),
CONSTRAINT fk2 FOREIGN KEY (suppid) References SUPPLIER(primary_key_column),
CONSTRAINT fk3 FOREIGN KEY (whid) References WAREHOUSE (primary_key_column)
)
当然,您需要将上面示例中的* primary_key_column *更改为您的列名。
答案 1 :(得分:0)
这是错误的:
Foreign Key (citycode) references CITY
因为它没有引用该表中的字段。
此外,这些似乎顺序错误:
Primary Key (stkid) ,
whid Number(2) NOT NULL,
我总是在我的钥匙前宣布我的所有字段。