2011-06-24 67 views
1

我正在使用mySQL和PHPMyAdmin。php我的管理員一對多關係

我在我的數據庫中有三個表格和字段;

T_users; 
F_uID - varchar - (PK) 
F_Forename - text 
F_Surname - text 

T_candidates; 
F_bookingRef - int - auto increment - (PK) 
F_sessionID - int 
F_uID - varchar 

T_TrainingSessions; 
F_sessionID - int - auto increment - (PK) 
F_sessionDesc - text 
F_sessionDate - date 

我想創建T_Users.F_uID和T_candidates.F_Uid之間的一個一對多的關係。

我還想創建一個T_TrainingSessions.F_sessionID和T_candidates.F_sessionID之間的一對多關係。

但是,當我在PHPMyAdmin的任何表結構部分中單擊'關係視圖'時,我只能從下拉列表中選擇主鍵字段!

從我的閱讀中,我認爲這可能與索引有關,但我沒有設置索引的知識或經驗。

任何幫助將非常感激。

:)

+0

您正在使用什麼引擎?例如:InnoDB,MyISAM – Jrod

+0

您好Jrod - 我正在使用InnoDB – user469453

回答

1

你可以從是具有唯一值主鍵或字段的字段做外鍵。

如果您不能創建關係

T_Users.F_uID<---->>T_candidates.F_Uid 
T_TrainingSessions.F_sessionID<---->>T_candidates.F_sessionID 
(one<---->>many) 

也許你正試圖創建反向關係。

試試這個:

CREATE TABLE T_users (
    F_uID VARCHAR(SIZE) NOT NULL, 
    F_Forename TEXT NOT NULL, 
    F_Surname TEXT NOT NULL, 
    PRIMARY KEY(F_uID) 
) 
TYPE=InnoDB; 


CREATE TABLE T_TrainingSessions (
    F_sessionID INT AUTO_INCREMENT NOT NULL, 
    F_sessionDesc TEXT NOT NULL, 
    F_sessionDate DATE NOT NULL, 
    PRIMARY KEY(F_sessionID) 
) 
TYPE=InnoDB; 

CREATE TABLE T_candidates (
    F_bookingRef INT AUTO_INCREMENT NOT NULL, 
    F_sessionID INT NOT NULL, 
    F_uID VARCHAR(SIZE) NOT NULL, 
    PRIMARY KEY(F_bookingRef) 
    INDEX FKIndex1(F_sessionID), 
    INDEX FKIndex2(F_uID), 
    FOREIGN KEY(F_uID) 
    REFERENCES T_users(F_uID) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION 
    FOREIGN KEY(F_sessionID) 
    REFERENCES T_TrainingSessions(F_sessionID) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION 
) 
TYPE=InnoDB; 
+0

嗨,是的 - T_Users.F_uID將永遠是唯一的,T_TrainingSessions.F_sessionID也一樣。 T_candidates.F_Uid和T_candidates.F_sessionID可能包含許多重複項。如果沒有太多的麻煩,你能否通過你會經歷的過程來談論我? :) – user469453

+0

你在phpmyadmin中設置外鍵字段是唯一的嗎?當您查看錶格的結構時,會顯示字段,並在操作列下方有幾個圖標。應該有一個圖標,它看起來像一張帶有U的表格。確保已經爲外鍵字段設置了這一點。 – Jrod

+0

嗨,我可以看到你指的圖標。爲了澄清,你說我應該設置T_candidates.F_Uid和T_candidates.F_sessionID爲唯一。這些字段不包含唯一的數據 - 這會導致問題還是我錯過了某些內容? – user469453

相關問題