2009-05-20 9 views
0

Die Software, mit der ich arbeite, hat 2 Tabellen, Lead und Kunden. Wenn wir unser Produkt an jemanden verkaufen, wird in der Kundentabelle ein Datensatz mit Daten aus der Lead-Tabelle (sowie einige zusätzliche Daten) erstellt.Eine Frage zum Speichern von Daten, die in derselben Tabelle hätten sein sollen

Derzeit besteht keine Beziehung zwischen den beiden Tabellen. Das Beste, was jetzt existiert, ist, dass das Lead-Objekt eine Funktion hat, die in der Kundentabelle nach einem Datensatz mit der gleichen Telefonnummer sucht (in der Hoffnung, dass es sich in den letzten 5-10 Jahren nicht geändert hat) Kunde - Wenn Sie bei jedem Lead eine solche Suche durchführen, wird eine Schnittmenge von% 82 in der Kundentabelle erzeugt. Es gibt keine Reverse-Suche (Kunde-> Lead).

Das Problem ist, dass ich wissen muss, welcher Kundendatensatz mit welchem ​​Führungsdatensatz verbunden ist und umgekehrt.

Ich dachte über die Speicherung einer fk von Blei in Kunde und ein fk von Kunde in Lead ... aber die ORM ich verwende wird überlaufen, wie es zugehörige Datensätze lädt, wenn fkeys vorhanden sind.

Das Zusammenführen der beiden Tabellen zu einer "Personen" -Tabelle ist das, was ich tun möchte, mit einem kleinen Flag, das anzeigt, ob eine Person ein Kunde ist ... aber ach, Zeitpläne und Budgets erlauben es nicht.

Ich weiß nicht recht, was zu tun ist.

Antwort

2

Brauchen Sie wirklich beide Richtungen (d. H. 1: M führt zu Kunden und 1: M Kunden zu Leads)? Wenn ja, könnte ein zusammengesetzter Tisch, der "zwischen" den beiden sitzt, der richtige Weg sein. Jeder Datensatz enthält den PK vom Kunden und den PK vom Lead (Verknüpfung der beiden).

Wenn Sie nur wissen müssen, wie viele Leads mit einem Kunden verknüpft sind, würde ich den FK zu Leads hinzufügen (was auf den PK bei Kunden hinweist).

+0

Leider muss ich beide Wege gehen. Die Telemarketing-Mitarbeiter möchten keine bestehenden Kunden anrufen, und die Office-Mitarbeiter müssen auf die Termine zugreifen, die für Leads (Verkaufs-Appts usw.) gebucht wurden. Ich habe immer Junction-Tabellen verwendet, um M: M-Beziehungen zu erstellen, niemals 1: 1 - weshalb ich die Idee anfangs (naiv) verworfen habe. –

1

Sie benötigen die ID-Spalte in jeder Ihrer beiden Tabellen, um Ihre Datensätze eindeutig zu identifizieren (falls Sie sie noch nicht haben).

Und Sie müssen eine weitere Verknüpfungs (Junction) -Tabelle hinzufügen, um vorhandene Tabellen zu verbinden. Diese Tabelle enthält zwei Spalten: LeadID und CustomerID. Jede Zeile enthält IDs der entsprechenden Zeilen in den Tabellen Customer und Lead.

Fremdschlüssel verbinden Ihre Tabellen: LeadID -> ID-Spalte in der Lead-Tabelle; CustomerID -> ID-Spalte in Kundentabelle.