C'est une mauvaise conception. Créez simplement une clé primaire à 2 colonnes et des clés étrangères à 2 colonnes. Il s'agit d'un anti-modèle fondamental appelé "encodage des informations dans des clés" qui (ainsi) sont appelées clés "intelligentes", "intelligentes" ou "concaténées". Une bonne clé est une clé "stupide".
De plus, il n'y a pas besoin pour ce faire.
De nombreux SGBD autorisent les "colonnes calculées" dont les valeurs sont automatiquement calculées à partir d'autres colonnes. Pour en faire une clé primaire ou une clé étrangère, vous auriez généralement besoin qu'elle soit "persistante", c'est-à-dire qu'elle occupe de la mémoire comme une colonne normale au lieu d'être calculée en cas de besoin comme une vue. MySQL ne les a pas, mais 5.7.5 a certaines fonctionnalités où elles sont appelées "colonnes générées", qui peuvent être "stockées". Mais ne faites pas ça pour les PK ou les FK !
Le problème de conception réel est la gestion de database/SQL subtypes/hierarchies/inheritance/polymorphism .