CREATE TABLE `tdetail` ( 
  `UserID` int(20) NOT NULL COMMENT '用户ID', 
  `ProjectID` int(11) default NULL COMMENT '项目ID', 
  `SubProjectID` int(11) default NULL COMMENT '子项目ID', 
  `Level` int(11) default NULL  , 
  PRIMARY KEY  (`UserID`), 
  KEY `idx_userid` (`UserID`), 
  CONSTRAINT `tdetail_ibfk` FOREIGN KEY (`UserID`) REFERENCES `tuserinfo` (`UserID`) ON DELETE cascade ON UPDATE cascade 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; 
你的PK设的还是 userid啊。按照常理的项目参与一个工程师可以参加一个项目中的多个子项目。你的PK可以是
PRIMARY KEY  (`UserID`,ProjectID,SubProjectID),