Я бы не назвал таблицу с изображениями галереей, поскольку это может означать альбом для. С моей точки зрения, схема базы данных является правильной, единственное, что я хотел бы изменить, это таблица ImageList, поскольку там Iid не требуется, Aid и Gid предполагают уникальный индекс, я бы также добавил поле для хранения порядка изображений в альбоме, а также установил все таблицы в режим InnoDB.
Вот пример схемы базы данных:
-- ----------------------------
-- Table structure for `gallery_album`
-- ----------------------------
DROP TABLE IF EXISTS `gallery_album`;
CREATE TABLE `gallery_album` (
`album_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL COMMENT 'name of the album',
`description` text COMMENT 'description of the album',
`visible` enum('0','1') NOT NULL DEFAULT '1' COMMENT 'is album visible',
`position` int(11) unsigned NOT NULL,
`date_created` datetime NOT NULL,
`date_updated` datetime NOT NULL,
PRIMARY KEY (`album_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `gallery_image`
-- ----------------------------
DROP TABLE IF EXISTS `gallery_image`;
CREATE TABLE `gallery_image` (
`image_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(30) DEFAULT NULL COMMENT 'name of the image used as image ALT attribute',
`description` varchar(100) DEFAULT NULL COMMENT 'description of the image used as image TITLE attribute',
`visible` enum('0','1') NOT NULL DEFAULT '1',
`date_created` datetime NOT NULL,
`date_updated` datetime NOT NULL,
PRIMARY KEY (`image_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `gallery_relation`
-- ----------------------------
DROP TABLE IF EXISTS `gallery_relation`;
CREATE TABLE `gallery_relation` (
`album_id` int(11) unsigned NOT NULL,
`image_id` int(11) unsigned NOT NULL,
`position` int(11) unsigned NOT NULL,
PRIMARY KEY (`album_id`,`image_id`),
KEY `image_id` (`image_id`),
CONSTRAINT `gallery_relation_ibfk_1` FOREIGN KEY (`album_id`) REFERENCES `gallery_album` (`album_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `gallery_relation_ibfk_2` FOREIGN KEY (`image_id`) REFERENCES `gallery_image` (`image_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;