2011-06-24 9 views
1

私はmySQLとPHPMyAdminを使用しています。PHP管理者と1対多の関係

DBに3つのテーブルとフィールドがあります。

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の間に1対多の関係を作成したいと思います。

また、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