J'ai une table my_table avec ces champs: id_a, id_b. Cette table peut donc référencer soit une ligne de table_a avec id_a, soit une ligne de table_b avec id_b. Si je référence une ligne de table_a, id_b est NULL. Si je référence une ligne de table_b, id_a est NULL.Comment résoudre le problème de la clé A/B?
Actuellement, je pense que c'est ma seule/meilleure option que j'ai, donc dans ma table (qui a beaucoup plus d'autres champs, btw) Je vais vivre avec le fait que toujours un champ est NULL.
Si cela vous intéresse: Si id_a est spécifié, je suis lié à un jeu d'enregistrements "type de données" dans ma base de métadonnées, qui spécifie un type de données particulier. comme varchar (40), par exemple. Mais si id_b est spécifié, je suis lié à un jeu d'enregistrements de définition de relation qui spécifie des détails sur une relation (quand c'est 1: 1, 1: n, liant quoi, avec quelles contraintes, etc.). Les champs sont appelés un peu mieux, bien sûr;) ... essayez simplement de simplifier le problème. Edit: Si c'est important: MySQL, dernière version. Mais je ne veux pas limiter autant que possible ma conception au code spécifique de MySQL.
Y a-t-il de meilleures solutions?
wow, merci! est ce SQL standard, ou devrais-je coller ma conception à MySQL en utilisant ceci? – openfrog
Ceci est standard 'SQL', mais' MySQL' ne supporte pas tout cela. Les 'CHECKs' ne fonctionneront pas du tout dans' MySQL', et 'FOREIGN KEYs' ne fonctionnera que dans les tables' InnoDB'. Dans tous les autres moteurs principaux, tout ce qui précède fonctionne correctement. – Quassnoi