2016-03-30 29 views
0

Bu yüzden benim tablodaki yabancı anahtarların olması gereken sorun, yabancı anahtar olmadan çalıştırdığımda tabloları oluşturur. hata im altta yayınlanacak, Sadece SQL ile aşina olmaya çalışıyorum.Yabancı anahtar-SQL geliştirici

CREATE TABLE Player 
(
Player_ID VARCHAR(20) NOT NULL, 
Fname VARCHAR(15), 
Sname VARCHAR(15), 
DOB NUMBER(3), 
Height NUMBER(3), 
Weight NUMBER(3), 
Position VARCHAR(15), 
Team_ID VARCHAR(20) NOT NULL, 

CONSTRAINT Player_primary_key PRIMARY KEY (Player_ID), 
CONSTRAINT Player_foreign_key FOREIGN KEY(Team_ID) REFERENCES TEAM(Team_ID) 
); 


CREATE TABLE Team 
(
Team_ID VARCHAR(20) NOT NULL, 
Tname VARCHAR(20), 
Tlocation VARCHAR(20), 
Coach VARCHAR(20), 
Gameswon NUMBER(10), 
Gameslost NUMBER (10), 

CONSTRAINT Team_primary_key PRIMARY KEY (Team_ID) 
); 


CREATE TABLE Match 
(
Match_ID VARCHAR(20) NOT NULL, 
Hometeam VARCHAR(20), 
Awayteam VARCHAR(20), 
Score NUMBER (10), 
Mdate NUMBER(10), 
Mtime NUMBER(10), 

CONSTRAINT Match_primary_key PRIMARY KEY (Match_ID), 
CONSTRAINT Match_foreign_keyHome FOREIGN KEY (Team_ID) REFERENCES HOST(Team_ID), 
CONSTRAINT Match_foreign_keyAway FOREIGN KEY (Team_ID) REFERENCES TEAM(Team_ID) 
); 

CREATE TABLE HOST 
(
Team_ID VARCHAR(20) NOT NULL, 
Match_ID VARCHAR(20) NOT NULL, 

CONSTRAINT Host_Foriegn_Key_Team FOREIGN KEY (Team_ID) REFERENCES TEAM(Team_ID), 
CONSTRAINT Host_Foriegn_Key_Match FOREIGN KEY (Match_ID) REFERENCES MATCH(Match_ID) 
); 

cevap

0

Eh ilk hata henüz Takım tablosunu tanımlanmamış olmasına ilişkili gibi görünmektedir. Kullandığınız beri: Maç masa için

CONSTRAINT Player_foreign_key FOREIGN KEY(Team_ID) REFERENCES TEAM(Team_ID) 

bunu Tablonuzdaki yok olsa bile team_id ile yabancı anahtar yaratıyor.

CONSTRAINT Match_foreign_keyAway FOREIGN KEY (Team_ID) REFERENCES TEAM(Team_ID) 

Ve son hata MATCH için bir kod örneği olarak koyduğunuzda maviye dönmesi neden olan bir SQL komutu aslında: Yani hatayı atıyor yüzden. Bunun bir tablo adı aradığını, ancak bir tane vermediğinizi varsaydığını düşünüyorum. Bu sadece son hata için tahminim.

1) Bu nedenle, önce Player'ı oluşturmak yerine önce Ekip tablonuzu oluşturabilirim.

CONSTRAINT Match_foreign_keyHome FOREIGN KEY (Hometeam) REFERENCES HOST(Team_ID), 

Sonra Awayteam için Match_foreign_keyAway için team_id değiştirecek:
2) Sonra muhtemelen Hometeam için Match_foreign_keyHome için team_id değiştirecek

CONSTRAINT Match_foreign_keyHome FOREIGN KEY (Awayteam) REFERENCES HOST(Team_ID), 
+0

teşekkürler bunun için çok, yapılan birkaç aptalca hatalar işaret ettiğin maçla, bunun için çok yeni, bu yüzden tekrar teşekkürler, ayrıca bir dahaki sefere düzeni için özür dilerim. –

+0

Oluşturulan tablolar, tüm verileri doğru şekilde kontrol etmek için yarın verileriyle test edebilecek kadar iyi. –

+0

Böylece, tüm tablolarınızı sorunsuz bir şekilde oluşturdunuz. Bunu duymak güzel. Eşleşme tablonuzu yeniden adlandırdınız mı, karşılaştığınız sorunu nasıl düzelttiniz? – Dresden