Comment concevoir des relations pour les données de variantes?
-
16-10-2019 - |
Question
Aidez-moi à définir les relations de table pour les données avec plusieurs structures. Je dois suivre des pistes. Leads proviennent de plusieurs sources. Chaque source de plomb a sa propre structure de données. Je besoin de conseils représentant cela dans une base de données relationnelle.
Chaque enregistrement de la table « Liste des produits vendus » (défini ci-dessous) a une source de plomb. Les fils peuvent provenir d'organisations, médecins, Bureau entreprise et employés de la Société. Voici les différents types de données qui constituent un plomb.
TABLE Organization: - Name -- TEXT TABLE Doctor: - NPI# -- INTEGER (unique for each doctor. I planned on using this as primary key) - FirstName -- TEXT - LastName -- TEXT TABLE Company Office: - Location -- TEXT TABLE Company Employee: - Department -- one of {Sales, Technician, QA}. Note that the employee is not tied to an office. Office leads are leads that come from misc office staff at the various locations. - FirstName - LastName Here is TABLE Products Sold List: - [misc fields] - PrescribingPhysicianNPI > many-to-one > Doctor.NPI -- "doctor that prescribed the product for the patient" - SalesRep > many-to-one > [Company Employee].PrimaryKey -- "Sales Rep credited for the sale. Needed for commissions calculation" - LeadSource > ???
Informations Divers:
La société offre des incitations aux prospects (commission d'affiliation) et des incitations au personnel de vente (commission de vente). Leads provenant d'organisations et bureaux de la Société ne sont pas payés commission d'affiliation. J'envisage la fusion TABLE Company Bureau dans l'organisation TABLE et en utilisant « Bureau - » que les données pour suivre les différents bureaux (i.e. .: Organization.Name = « Bureau - Cincinnati »). Mauvaise idée? Questions?
La solution
Cela pourrait forcer un peu de changement pour vos tables, mais nous quelque chose comme ça au travail:
Vérifiez que chaque table a une clé primaire int / guid de quelque sorte:
Organisation Tableau
ID | Name
1 | MyOrganization
Ensuite, créez un type table pour accueillir vos différents types de LeadSource:
LeadSourceTypeKey | Description
1 | Organization
2 | Company Office
Ensuite, sur votre table ProductSoldList ajouter 2 colonnes LeadSourceID
et LeadSourceType
Ensuite, vous pouvez facilement interroger la table ProductSoldList
et de savoir qui LeadSource à se joindre à retourner à:
SELECT *
FROM [ProductSoldList] PL
INNER JOIN [Organization] O
ON PL.LeadSourceID = O.ID AND
PL.LeadSourceType = 1
INNER JOIN [Company Office] CO
ON PL.LeadSourceID = CO.ID AND
PL.LeadSourceType = 2