Je tente de créer une application de contacts comportant deux entités principales - personne et société. Une personne peut avoir plusieurs courriels, numéros et adresses. Une entreprise peut également avoir de nombreux courriels, numéros et adresses. J'essaye de déterminer la bonne conception pour ce scénario.Comment modéliser des tables avec des clés étrangères à partir de plusieurs autres tables
Option 1 - plusieurs clés étrangères
Les e-mails, les numéros et les adresses comportent deux colonnes appelées person_id et company_id. En fonction de l'entité à laquelle les données appartiennent, l'une sera nulle et l'autre contiendra un identifiant reliant au parent.
Option # 2 - une table par type par entité
Je duplique chaque table pour qu'il y ait une table company_addresses et une table person_addresses. J'aurais deux fois plus de tables, mais c'est la solution qui a le plus de sens en ce moment.
Option # 3 - une table de liens
Je crée une table - "lien". Cette table contiendra quatre colonnes: source_id, source_entity, dest_id, dest_entity. Donc, si une entreprise obtient un nouveau numéro, vous aurez une ligne comme: 1, numéro, 2, société.
Option # 4 - plusieurs tables de lien
créer un tableau pour chaque type de lien (company_address, person_address, company_email, person_email, etc.)
Quelle option choisir?
Merci cletus - Je me suis dit que c'était quelque chose qui avait déjà été fait, et étant donné la simplicité de l'exemple, j'ai imaginé qu'il y avait une pratique de conception autour de ça. Je vais vérifier le lien et le livre. – Amit
Battez-moi, exactement ce que j'allais suggérer mais écrit un peu mieux que je soupçonne. Je vais certainement regarder dans les liens. – MadMurf