我試圖設計一個數據庫,我正在使用PHP的一個小項目。我沒有太多的使用數據庫的經驗(正如你很快會注意到的那樣),所以現在我已經把自己放在了很深的一端。err(150) - 設計基本關係數據庫的麻煩
我正在開發一個數據庫,它將成爲我用PHP編寫的基本統計系統的基礎。我得出結論,我將需要(至少)3張桌子。
TOURNAMENT
- >一個比賽有很多場比賽
tournamentID SMALLINT UNSIGNED PRIMARY KEY,
MATCH
- >一場比賽有很多玩家
tournamentID SMALLINT UNSIGNED,
matchID SMALLINT UNSIGNED,
PLAYER
- >一個球員有很多比賽,很多比賽,
tournamentID SMALLINT UNSIGNED,
matchID SMALLINT UNSIGNED,
playerID SMALLINT UNSIGNED,
我試圖創建該數據庫:
<?php
//Connect
$link = mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("stats") or die(mysql_error());
//Drop old tables
mysql_query('DROP TABLE PLAYERS');
mysql_query('DROP TABLE MATCHES');
mysql_query('DROP TABLE TOURNAMENT');
echo('Old tables dropped<br \>');
//Create new tables
// TOURNAMENT
mysql_query('CREATE TABLE TOURNAMENT(
tournamentID SMALLINT UNSIGNED PRIMARY KEY,
)') or die(mysql_error());
echo('TOURNAMENT created...<br />');
// MATCHES
mysql_query('CREATE TABLE MATCHES(
tournamentID SMALLINT UNSIGNED,
matchID SMALLINT UNSIGNED,
PRIMARY KEY (tournamentID, matchID),
FOREIGN KEY (tournamentID) REFERENCES TOURNAMENT(tournamentID)
)') or die(mysql_error());
echo('MATCH created...<br />');
// PLAYERS
mysql_query('CREATE TABLE PLAYERS(
tournamentID SMALLINT UNSIGNED,
matchID SMALLINT UNSIGNED,
playerID SMALLINT UNSIGNED,
PRIMARY KEY (tournamentID, matchID),
FOREIGN KEY (tournamentID) REFERENCES TOURNAMENT(tournamentID),
FOREIGN KEY (matchID) REFERENCES MATCHES(matchID)
)') or die(mysql_error());
echo('PLAYERS created...<br />');
echo('Blank tables created');
mysql_close();
當我執行的PHP腳本,我收到犯錯150,我覺得有話跟我的主鍵/在球員表的外鍵引用:
Old tables dropped
TOURNAMENT created...
MATCH created...
Can't create table 'stats.players' (errno: 150)
我已經做了一些閱讀,看着以前的一些問題,但我真的不明白擺在首位的實際問題(原因的錯誤發生)。顯然,我的數據庫的設計是不正確的,但我不知道我應該如何處理改進和修復它。
請幫忙。
什麼是您收到確切的錯誤? –
無法創建表'stats.players'(errno:150) – anditpainsme
這不太有用,是不是?嘗試創建球員表_without_在tournamentID/matchID上定義的主鍵。通常,err150涉及FK列與其引用的鍵之間的數據類型不匹配。 –