SQL将a和b引用到

时间:2017-06-20 21:06:11

标签: mysql phpmyadmin

我使用PHPMyAdmin(所以mySQL)来创建它。

我有2张桌子,相册和照片。当然,照片可以是相册的一部分,为此,我使用从照片到相册的外键。

但是现在我想能够在相册表中放一张照片,这样我就可以将这张照片作为我相册的封面。我试过添加一个外键,但这给了我一个外键约束。

以下表格有助于理解我的意思(foto = photo)。红线表示我想要实现的目标。

enter image description here

我不擅长SQL,所以感谢任何帮助。

SQL专辑:

CREATE TABLE `Albums` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Album_Naam` varchar(255) NOT NULL,
`Aanmaakdatum` datetime NOT NULL,
`FotoID` int(11) DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `FotoID` (`FotoID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1

SQL Photo

CREATE TABLE `Foto` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Foto_Naam` varchar(255) NOT NULL,
`AlbumID` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `AlbumID` (`AlbumID`),
CONSTRAINT `Foto_ibfk_1` FOREIGN KEY (`AlbumID`) REFERENCES `Albums` (`ID`) 
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1

1 个答案:

答案 0 :(得分:1)

通过使引用字段可为空,可以使外键成为可选项;字段中的NULL值不违反对其强制执行的外键约束。这可以用来表示纯粹的可选关系,或者在这个问题的情况下,推迟在半循环依赖中设置值。

请注意,要从相册中删除封面照片,相册首先需要将其设置为另一张照片的封面参考,或者为空。同样,要删除相册,您需要将其删除Foto,因此请先将其设置为空。