Je tente d'implémenter une structure de table "extension" pour certaines statistiques que je rassemble de plusieurs sources.Dilemme MySQL: clé unique composite à travers les tables
Ma table "parent" ressemble à ceci:
`test_parent` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`actions` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
)
Ma première table "enfant" semble somethinglike ce (finalement je vais avoir une table enfant pour chaque source):
`test_child` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`test_parent_id` int(11) unsigned NOT NULL,
`external_id` int(11) NOT NULL,
`external_actions` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `test_parent_id` (`test_parent_id`)
)
CONSTRAINT `test_child_ibfk_1` FOREIGN KEY (`test_parent_id`) REFERENCES `test_parent` (`id`)
Tout cela fonctionnera très bien dans ma mise en œuvre (j'utiliserai Java/Hibernate); cependant, pour la première table enfant, j'ai besoin d'une clé composite unique pour external_id et date. Je sais que je ne peux pas avoir une clé composite unique entre les tables. Je préférerais ne pas avoir une seule table pour stocker toutes les statistiques parce que les analyses réelles que je collectionne peuvent varier considérablement selon la source. Je serais plus ouvert à se débarrasser de la table "parent".
Existe-t-il une autre façon de voir ce problème? J'espère éviter d'utiliser des déclencheurs pour imposer l'unicité, si possible.
Je préfère ne pas, tous les enfants auraient besoin de date. Mais cela peut être un compromis raisonnable entre ce que je veux idéalement et complètement axer la table parent. – smp7d