php我的管理员一对多的关系

时间:2011-06-24 14:21:25

标签: mysql foreign-keys phpmyadmin admin

我正在使用mySQL和PHPMyAdmin。

我的数据库中有三个表格和字段;

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的任何表结构部分中单击“关系视图”时,我只能从下拉列表中选择主键字段!

从我的阅读中,我认为这可能与索引有关,但是我没有设置索引的知识或经验。

非常感谢任何帮助。

:)

1 个答案:

答案 0 :(得分: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;