Все предметы, которые вы указали, имеют отношение один к одному; другими словами, у вас, вероятно, не будет двух разных URL для одного заголовка или идентификатора изображения.
Однако, другой момент, который необходимо учитывать, заключается в том, могут ли какие-либо поля быть пустыми довольно часто; Например, у многих из них нет класса или семьи? Если это так, вы можете поместить эти данные в отдельную таблицу и связать их с помощью идентификатора:
CREATE TABLE `image` (
`imgId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`imgTitle` varchar(255) DEFAULT NULL,
`imgURL` varchar(255) DEFAULT NULL,
`imgDate` datetime DEFAULT NULL,
PRIMARY KEY (`imgId`),
KEY `date` (`imgDate`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `imageAddendum` (
`imgId` int(11) NOT NULL DEFAULT '0',
`imgClass` varchar(255) DEFAULT NULL,
`imgFamily` varchar(255) DEFAULT NULL,
PRIMARY KEY (`imgId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Затем вы получите свои данные, используя LEFT JOIN, что позволит получить данные в изображении, даже если в imageAddendum не было строки:
SELECT i.imgId, i.imgTitle, i.imgURL, i.imgDate, ia.imgClass, ia.imgFamily
FROM image i LEFT JOIN imageAddendum ia using ( imgId );