Je suis en train de concevoir une application web qui stocke les métriques SEO relatives aux sites web. Il existe environ 50 mesures relatives à chaque site Web qui sont calculées et stockées chaque jour. Je dois être en mesure de suivre les changements pour chacune de ces mesures au fil du temps. J'ai conçu le schéma suivant basé sur ma compréhension de la normalisation. Il semble que la table de jonction (tbl_website_metric) devienne très grande très rapidement. Je voudrais savoir si c'est le schéma optimal pour cela ou si j'ai fait des erreurs de conception.Une table de jonction est-elle la solution correcte pour stocker des données historiques pour de nombreux attributs?
CREATE TABLE `tbl_website` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(100) NOT NULL ,
`domain` VARCHAR(100) NULL ,
`url` VARCHAR(100) NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE `tbl_metric` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NOT NULL ,
`description` VARCHAR(100) NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE `tbl_website_metric` (
`id` INT NOT NULL AUTO_INCREMENT ,
`metric_id` INT NOT NULL ,
`website_id` INT NOT NULL ,
`created` TIMESTAMP NULL ,
`value` VARCHAR(45) NULL ,
PRIMARY KEY (`id`) ,
CONSTRAINT `fk_tbl_website_metric_tbl_metric1`
FOREIGN KEY (`metric_id`)
REFERENCES `tbl_metric` (`id`)
CONSTRAINT `fk_tbl_website_metric_tbl_website1`
FOREIGN KEY (`website_id`)
REFERENCES `tbl_website` (`id`))
ENGINE = InnoDB;
C'est très utile merci. Votre solution alternative ne fonctionnerait pas car les métriques sont mises à jour de façon indépendante et il est donc nécessaire d'avoir un horodatage associé à chacune d'entre elles. Êtes-vous d'accord? – Michelle
@Michell: bien oui! Si l'exigence est vraiment de maintenir des horodatages individuels pour chaque paire métrique-site Web, l'approche alternative ne fonctionne pas. J'ai pensé qu'il serait peut-être acceptable de conserver l'horodatage lorsque les mesures ont été enregistrées pour la dernière fois sur le site Web. – Abhay