나는 간단 할 수있는 질문이 있습니다 테이블단일 테이블 또는 여러 테이블 - 정상화
이미지 세부 사항을위한 하나의 테이블 image_details와 image_paths를 조인하는 다른 테이블과 이미지 경로에 조인하는 다른 테이블 이미지 크기.
또는 모든 이미지 크기를 이미지 테이블에 넣는 것이 가장 좋습니다. 실제로는 하나의 이미지가 있지만 크기가 다릅니다. 최적화를위한 최상의 옵션을 찾고 있습니다. 모든 이미지에는 각 이미지 크기가 있으므로 특정 크기가 아닌 일부 이미지의 경우 중복성이 없습니다. 다른 크기를 추가 할 경우 다른 테이블을 사용하는 것이 가장 좋았는지 확실하지 않았습니다. 그러나 나는
Image_table 새 이미지 크기 이미지 테이블에 다른 열을 추가 할 수
CREATE TABLE IF NOT EXISTS `warrington_main`.`image` (
`id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT ,
`user_id` BIGINT(20) UNSIGNED NOT NULL ,
`alias_title` VARCHAR(255) NOT NULL ,
`address_id` BIGINT(20) NULL ,
`geolocation_id` BIGINT(20) NULL ,
`camera_id` MEDIUMINT(8) NULL ,
`title` VARCHAR(100) NOT NULL ,
`description` VARCHAR(2000) NOT NULL ,
`main_image` VARCHAR(50) NOT NULL ,
`thumbnail_image` VARCHAR(50) NOT NULL ,
`thumbnail_image_medium` VARCHAR(50) NOT NULL ,
`thumbnail_image_small` VARCHAR(50) NOT NULL ,
`thumbnail_image_gallery` VARCHAR(50) NOT NULL ,
`hits` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0' ,
`show_comment` ENUM('0','1') NOT NULL ,
`feature_in_gallery` ENUM('0','1') NOT NULL ,
`created_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`date_taken` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`updated_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`updated_by` BIGINT(20) UNSIGNED NOT NULL ,
`approved` ENUM('Inprocess','Yes','No') NOT NULL DEFAULT 'Inprocess' ,
`visible` ENUM('0','1') NOT NULL DEFAULT '0' ,
`account_type_created` ENUM('S','Y', 'G', 'FL', 'FB') NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `alias_title` (`alias_title` ASC) ,
INDEX `title` (`title` ASC) ,
INDEX `approved` (`approved` ASC) ,
INDEX `visible` (`visible` ASC) ,
INDEX `feature_in_gallery` (`feature_in_gallery` ASC) ,
INDEX `fk_image_image_user1_idx` (`user_id` ASC) ,
INDEX `fk_image_camera1_idx` (`camera_id` ASC) ,
INDEX `fk_image_address1_idx` (`address_id` ASC) ,
INDEX `fk_image_geolocation1_idx` (`geolocation_id` ASC) ,
INDEX `fk_image_user1_idx` (`updated_by` ASC) ,
CONSTRAINT `fk_image_image_user1`
FOREIGN KEY (`user_id`)
REFERENCES `warrington_main`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_image_camera1`
FOREIGN KEY (`camera_id`)
REFERENCES `warrington_main`.`camera` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_image_address1`
FOREIGN KEY (`address_id`)
REFERENCES `warrington_main`.`address` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_image_geolocation1`
FOREIGN KEY (`geolocation_id`)
REFERENCES `warrington_main`.`geolocation` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_image_user1`
FOREIGN KEY (`updated_by`)
REFERENCES `warrington_main`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 23162
DEFAULT CHARACTER SET = utf8
데이터의 중복성은 어디에 있습니까? – Prescott
크기가 단일 표로 제공되는 경우 여러 행이 동일한 이미지 정보를 갖기 때문에 이미지 데이터가 중복됩니다. – SiB
어쩌면 내가 잘못 읽은 것 같습니다. 그의 한 테이블 솔루션은 다음과 같이 보일 것입니다 :'ImageID | 세부 사항 1 | Detail2 .. | SmallImageURL | MediumImageURL ...'각 ImageID는 모든 ImageURL을 갖습니다. 리던던시가 없더라도 모든 값이 다른 경우 – Prescott