1

初めて多くの虐待に対処した後、私はこの質問をしましたが、落ち着いて、もう一度やり直して、より具体的にしようとしています.

私は Uni の割り当てを行いましたが、これは質問の 1 つに対する次のプロンプトでした。

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?

ERD は、https://www.dropbox.com/sh/eohlj5h073kwp4u/Ot08kbdY7Qの PDF にあります。

この質問に投票する前に、まず私に相談してください。調整できます。私はこのウェブサイトを初めて使用するので、機会をください

4

2 に答える 2

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* を列名に変更する必要があります。

于 2013-04-24T01:58:14.747 に答える
0

これは間違っています:

Foreign Key (citycode) references CITY

そのテーブルのフィールドを参照していないためです。

また、これらは間違った順序で表示されます。

Primary Key (stkid) , 
whid Number(2) NOT NULL,

私は常にキーの前にすべてのフィールドを宣言します。

于 2013-04-24T01:56:48.340 に答える