SQL mappage entre plusieurs tables

C'est un SQL question de conception. Tout d'abord, le programme d'installation. J'ai trois tables:

  1. Un, qui est automatiquement renseigné en fonction d'une requête sur un serveur lié. Les données de ce tableau ne peut pas être modifié;
  2. B, qui a seulement une douzaine de lignes, contenant les noms des collections de Comme;
  3. AtoB, qui est la table de mappage par qui Que sont organisés en collections nommées, avec les clés étrangères sur deux colonnes;

SQL mappage entre plusieurs tables

Par exemple, contient:

  1. Girafe
  2. Chouette
  3. Tigre

Et B contient:

  1. Seattle Zoo
  2. San Jose Zoo

Et AtoB contient:

1,1 (Girafe à Seattle)

2,1 (Hibou à Seattle)

3,1 (Tigre à Seattle)

2,2 (Hibou à San Jose)

Maintenant, le problème:

J'ai été invité à inclure dans certaines de ces collections éléments ne trouve pas dans A. Donc, j'ai créer une table, C, avec la même identité et le Nom de colonnes, et de le remplir. En accord avec l'exemple précédent, disons que C contient:

  1. Dragon

La question est, comment puis-je inclure des éléments de C dans AtoB? Que faire si j'ai besoin d'inclure un Dragon dans la région de Seattle Zoo?

Mon premier instinct, naïf, était de créer une vue V contenant de l'union de A et de C, et la modification de AtoB être VtoB. C'est là que ma naïveté a payé: on ne peut créer une clé étrangère à vue.

Je soupçonne qu'il y a une norme, corriger moyen d'une ou plus d'UNE OU C avec un B.

OriginalL'auteur Justin R. | 2010-01-11