2017-10-07 4 views
0

Je suis assez nouveau à SQL et j'essaye de faire quelques relations et rencontrer ce qui suit.Relation many-to-many-to-many en SQL?

J'ai 3 tables - Personnes - PHONENUMBERS - PhoneNumberCategories

personnes et PHONENUMBERS est explicite et je pense que je PhoneNumberCategories utilise pour indiquer si un numéro de téléphone est pour le bureau, la maison, mobile, fax, etc.

Maintenant j'ai fait une 4ème table pour faire cette relation many-to-many-to-many. Ce tableau a 4 colonnes:

  • ID
  • PersonID
  • PhoneNumberID
  • PhoneNumberCategoryID

Et j'avons mis en place 3 relations ici. Une pour toutes les colonnes sauf la colonne ID. Cela semble fonctionner, mais cela me donne un sentiment étrange. Quelqu'un peut-il me dire si je suis sur la piste de l'écriture ou si je me trompe à ce sujet.

La raison pour laquelle je veux ceci est la suivante. Bien sûr, je dois associer une personne à un numéro de téléphone. Cependant, je peux avoir un numéro de téléphone qui est le bureau général (ce serait le numéro 'OfficeGeneral' ligne), et donc lié à moi parce que je travaille là. J'ai aussi un bureau direct (Et ce serait le numéro 'OfficeDirect'). Ceci est bien sûr également lié à moi. Le numéro général est cependant lié à toutes les personnes du bureau en tant que «OfficeGeneral». Sauf pour la réceptionniste, ici, il serait lié comme «OfficeDirect». Et c'est la raison pour laquelle je suis venu avec cette relation plusieurs-à-plusieurs. Je ne peux pas en trouver beaucoup sur le web. Et c'est une raison suffisante pour douter si c'est la bonne façon de s'y prendre. Quoi qu'il en soit, ce n'est qu'un exemple. Je voudrais m'assurer que je suis flexible et que je puisse attraper autant d'exceptions que possible. Je suis certain qu'une fois que la base de données sera utilisée, les gens viendront avec des situations que je n'ai pas prévues. Les gens sont bons à ce que j'ai appris au cours des années.

Précisions en réponse au commentaire ci-dessous:

  • personne peut avoir plus de 1 PhoneNumber.
  • PhoneNumber peut avoir plus de 1 personne.
  • Personne avec PhoneNumber peut avoir plus de 1 PhoneNumberCategory (téléphone privé utilisé pour le téléphone et le fax.)
  • Plusieurs personnes peuvent être associées au même PhoneNumber avec différentes PhoneNumberCategories. (c'est-à-dire qu'OfficeMain est pour moi OfficDirect pour réceptionniste.)

Dans l'attente d'avoir de vos nouvelles.

Répondre

1

Votre modèle a l'air bien. Votre description n'est peut-être pas.

Person et PhoneNumber ont une relation plusieurs à plusieurs. Cette relation, à son tour, est 1-many avec PhoneNumberCategory - à moins qu'un numéro de téléphone donné puisse être dans plus d'une catégorie.

Je m'attendrais à ce que Person/PhoneNumber soit déclaré unique dans cette table, donc une personne ne peut utiliser qu'un numéro de téléphone particulier une seule fois. Cependant, cela peut ne pas être la façon dont vous visualisez la structure.

+0

Merci pour votre réponse rapide. Convenu que je n'ai pas été clair. Mettre à jour le message en conséquence. –