私はこれを作成するためにPHPMyAdmin(mySQL)を使用しています。SQLはbとbをaに参照します
私は2つのテーブル、アルバムと写真があります。もちろん、写真はアルバムの一部とすることができ、そのために写真からアルバムへの外部キーを使用します。
今、アルバムの表に写真を置いて、その写真をアルバムの表紙として使用できるようにしたいと考えています。私は外部キーを追加しようとしましたが、それは私に外部キー制約を与えます。
ここには、私が何を意味するのかを理解するための表があります(写真=写真)。赤い線は私が達成したいことを示しています。
は、私は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フォト
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
写真テーブルの '' 'tinyint(1)' ''に1を追加するのはなぜですか?それ以外の場合は0にしてください。さらに、カバー写真のキーを使ってアルバムにコラムを追加してください。関連する写真の記録が削除された場合、またはその写真のアルバムIDが変更された場合は、その列を消去するトリガーを2つ設定することができます。 –
@SloanThrasherそうですね。私のやり方は間違っているのか悪いのか? –
'Albums.FotoID'をnullにすることで、" album cover "をオプションにすることができます。空のアルバムを挿入し、後で「カバー」への参照を設定することができます。 (個人的には、私は写真上の「カバーフラッグ」から遠ざかります;恐ろしいアイデアではなく、拘束できないフラッグフィールドのアイデアを熱望していません)。 – Uueerdo