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上添加外键约束。