2009-05-20 5 views
0

Le logiciel avec lequel je travaille a 2 tables, le plomb et le client. Lorsque nous vendons notre produit à quelqu'un, un enregistrement est créé dans la table client avec les données de la table principale (ainsi que des données supplémentaires).Une question sur le stockage des données qui auraient dû être dans la même table

Actuellement, il n'existe aucune relation entre les deux tables. Le meilleur qui existe maintenant est l'objet principal a une fonction qui fera une recherche dans la table client pour un enregistrement avec le même numéro de téléphone (en espérant que cela n'a pas changé dans les 5-10 dernières années qu'ils ont été notre client - faire une telle recherche sur chaque piste produit une intersection% 82 sur la table client). Il n'y a pas de recherche inversée (client-> lead). Le problème est que j'ai besoin de savoir quel enregistrement client est associé à quel enregistrement principal et vice versa. J'ai considéré stocker un fk de plomb dans le client et un fk du client dans le plomb ... mais l'ORM que j'utilise débordera car il charge des enregistrements associés quand existe fkeys.

Fusionner les deux tables en une seule table 'person' est ce que je voudrais faire, avec un drapeau indiquant si une personne est ou non un client ... mais hélas, les délais et les budgets ne le permettent pas.

Je ne sais pas quoi faire.

Répondre

2

Vous en avez-vous vraiment besoin pour aller dans les deux sens (par exemple, 1: M conduit aux clients et 1: M aux clients)? Si oui, une table composite assis "entre" les deux pourrait être le chemin à parcourir. Chaque enregistrement contiendrait le PK du client et le PK du lead (reliant les deux).

Si vous avez juste besoin de savoir combien de leads sont liés à un client, j'ajouterais le FK aux prospects (pointant vers le PK dans les clients).

+0

Malheureusement, je dois aller dans les deux sens. Les télévendeurs ne souhaitent pas appeler les clients existants et le personnel du bureau doit accéder aux rendez-vous réservés pour les clients potentiels (ventes, etc.). J'ai toujours utilisé des tables de jonction pour créer des relations M: M, jamais 1: 1 - c'est pourquoi j'ai d'abord (naïvement) rejeté l'idée. –

1

Vous aurez besoin de la colonne ID dans chacune de vos deux tables pour identifier de façon unique vos enregistrements (si vous ne l'avez pas encore).

Et vous devez ajouter une autre table de liaison (jonction) pour connecter les tables existantes. Cette table contiendra deux colonnes: LeadID et CustomerID. Chaque ligne contient les ID des lignes correspondantes dans les tables Customer et Lead. Les clés étrangères vont connecter vos tables: LeadID -> colonne ID dans la table Lead; CustomerID -> ID colonne dans la table Customer.

Questions connexes