2017-03-01 109 views
0

我有兩個表的第一個是品種表MySQL的多個ID參考

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 

我想要的主表,以反映孕育它擁有通過顯示品種列中的品種ID,但我希望擁有者能夠擁有多個品種。我將如何做到這一點?

+1

您需要一個連接表,這是一個將許多所有者與許多品種關聯的中間表。 – tadman

+0

你需要有一個[關聯表](https://en.wikipedia.org/wiki/Associative_entity) – BenM

回答

0

取代兩個表格,您需要三個以獲得多對多的關係。您需要將以下表中添加:

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 

owners表並刪除breeds列。這將允許擁有多個品種的所有者以及由多個所有者擁有的品種。

+1

在'breedID'和'ownerID'上添加外鍵約束是明智的做法。 – BenM

+0

@BenM這將是。 – wogsland