Mysql 一个表需要与另两个表连接时出现的问题

Mysql 一个表需要与另两个表连接时出现的问题,mysql,sql,database,Mysql,Sql,Database,我有一个带有3列的表,其中存储了预订时段(bookID、bookedfrom、bookedfor)。 还有一个存储用户凭据的表(crID、电子邮件、密码)。 还有第三个存储终端用户的表(enduserID、name、lastname) 其目的是bookingslots表的bookedfrom列引用credentials表的crID和endusers表的enduserID 因此,我们有一列分别引用两个表中的两列 此外,endusers表引用了credentials表。 你看重点是当网站的注册用户,

我有一个带有3列的表,其中存储了预订时段(bookID、bookedfrom、bookedfor)。 还有一个存储用户凭据的表(crID、电子邮件、密码)。 还有第三个存储终端用户的表(enduserID、name、lastname)

其目的是bookingslots表的bookedfrom列引用credentials表的crID和endusers表的enduserID

因此,我们有一列分别引用两个表中的两列

此外,endusers表引用了credentials表。 你看重点是当网站的注册用户,他们的凭据将保存在凭据表中,姓名等其他数据将保存在最终用户表中。预订表中的bookedfrom col将引用凭据表中的crID-…可以选择为非注册用户进行预订,这意味着凭证表中不会有任何条目,只有endusers表中的条目,因此bookedfrom列还必须引用andusers表

话虽如此,我担心我们可能会有插入异常。如果在预订老虎机表中,bookID可能会引用crID为6,而enduserID为6

你觉得怎么样?上述模式是否存在任何问题…如所述…以下是sql代码:

CREATE  TABLE IF NOT EXISTS `appointments`.`appointments` (
`AppointId` INT NOT NULL AUTO_INCREMENT ,
`bookedFrom` INT(11) NOT NULL ,
`bookedFor` INT(11) NOT NULL ,
PRIMARY KEY (`AppointId`) ,
UNIQUE INDEX `bookedFrom_UNIQUE` (`bookedFrom` ASC) ,
UNIQUE INDEX `bookedFor_UNIQUE` (`bookedFor` ASC) ,
CONSTRAINT `fk_appointments_credentials1`
FOREIGN KEY (`bookedFrom` )
REFERENCES `appointments`.`credentials` (`crID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_appointments_credentials2`
FOREIGN KEY (`bookedFor` )
REFERENCES `appointments`.`credentials` (`crID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_appointments_end_users1`
FOREIGN KEY (`bookedFrom` )
REFERENCES `appointments`.`end_users` (`crID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

CREATE  TABLE IF NOT EXISTS `appointments`.`credentials` (
`crID` INT(11) NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(255) NULL ,
`password` VARCHAR(100) NULL ,
`hash` VARCHAR(32) NULL ,
PRIMARY KEY (`crID`) ,
UNIQUE INDEX `email_UNIQUE` (`email` ASC) )
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8


CREATE  TABLE IF NOT EXISTS `appointments`.`end_users` (
crID` INT(11) NOT NULL AUTO_INCREMENT ,
name` VARCHAR(100) NULL DEFAULT NULL ,
lastname` VARCHAR(100) NULL DEFAULT NULL ,
PRIMARY KEY (`crID`) ,
CONSTRAINT `fk_end_users_credentials1`
FOREIGN KEY (`crID` )
REFERENCES `appointments`.`credentials` (`crID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

“插入异常”是什么意思?一个表中的自动增量字段不能是另一个表的外键。如果凭证和最终用户之间有1对1的对应关系,它们应该只是一个表。你是说我应该合并最终用户和凭证?我试图找到一个解决办法,因为我说过很多代码都是基于这种设计编写的。您说过引用的表不能包含自动递增字段,并且不能是另一个表中的外键。是的,但该字段是主键。它将如何随着记录的添加而递增?