Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL多ID引用_Mysql - Fatal编程技术网

MySQL多ID引用

MySQL多ID引用,mysql,Mysql,我有两张桌子,第一张是一张桌子 CREATE TABLE `breeds` ( `breedID` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(50) NOT NULL, PRIMARY KEY (`breedID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 第二个表是所有者表 CREATE TABLE `owners` ( `ownerID` int(11) NOT NULL AUTO_INCR

我有两张桌子,第一张是一张桌子

CREATE TABLE `breeds` (
 `breedID` int(11) NOT NULL AUTO_INCREMENT,
 `Name` varchar(50) NOT NULL,
 PRIMARY KEY (`breedID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
第二个表是所有者表

CREATE TABLE `owners` (
 `ownerID` int(11) NOT NULL AUTO_INCREMENT,
 `First` varchar(36) NOT NULL,
 `Last` varchar(36) NOT NULL,
 `breeds` int(11) DEFAULT NULL,
 PRIMARY KEY (`ownerID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我希望所有者表通过在“品种”列中显示所拥有的品种来反映其拥有的品种,但我希望所有者能够拥有多个品种。如何实现这一点?

多对多关系需要三个表,而不是两个表。您需要添加下表:

CREATE TABLE `ownerBreeds` (
 `ownerBreedID` int(11) NOT NULL AUTO_INCREMENT,
 `breedID` int(11) NOT NULL,
 `ownerID` int(11) NOT NULL,
 PRIMARY KEY (`ownerBreedID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

并从
所有者
表中删除
品种
列。这将允许拥有多个品种的所有者以及多个所有者拥有的品种。

您需要一个联接表,一个将多个所有者与多个品种关联起来的中间表。您需要一个连接表。明智的做法是在
breedID
ownerID
@BenM上添加外键约束。