2009-05-20 4 views
0

私が扱っているソフトウェアには、2つのテーブル、鉛と顧客があります。私たちの製品を誰かに売却すると、リードテーブルのデータといくつかの追加のデータで顧客テーブルにレコードが作成されます。同じテーブル内にあったはずのデータの保存に関する質問

現在、2つのテーブルの間には関係がありません。今存在している最高のものは、同じ電話番号のレコードの顧客テーブル内の検索を行う機能を持っているリードオブジェクトです(過去5〜10年で変更されていないことを期待しています顧客 - 各リードでこのような検索を行うと、顧客テーブルに%82交差点が生成されます)。逆引きはありません(customer-> lead)。

問題は、どの顧客レコードがどのリードレコードに関連付けられているかを知る必要があることです。その逆もあります。

私は顧客の鉛からfkを、鉛の顧客からfkを保管することを検討しましたが、fキーが存在するときに関連するレコードをロードするので、私が使用しているORMはオーバーフローします。

2つのテーブルを1つの「人物」テーブルに結合することは、私がしたいことです。人が顧客であるかどうかを特定するビットのフラグを持っています...でも、タイムラインと予算は許可されません。

私は何をすべきか分かりません。

答えて

2

本当に両方向に進む必要がありますか(つまり、1:Mは顧客へ、1:Mの顧客はリードへ)そうであれば、2つの間にあるコンポジット・テーブルが移動する方法です。各レコードには顧客からのPKとリードからのPK(2つのリンク)が含まれます。

顧客にリンクされているリードの数を知る必要がある場合は、FKをリード(顧客のPKを指す)に追加します。

+0

残念ながら私は両方向に進む必要があります。テレマーケティング担当者は既存の顧客に電話をかけたくないため、オフィスのスタッフはリード(販売員など)のために予約された予定にアクセスする必要があります。私は常にジャンクション・テーブルを使ってM:​​Mの関係を作ってきました。それは決して1:1ではありません。 –

1

レコードを一意に識別するには、2つのテーブルのそれぞれにID列が必要です(レコードがまだない場合)。

既存のテーブルを接続するには、もう1つのリンク(接合)テーブルを追加する必要があります。このテーブルには、2つの列、LeadIDとCustomerIDが含まれます。各行には、CustomerテーブルとLeadテーブルの対応する行のIDが含まれています。

外部キーによって表が接続されます。LeadID - > LeadテーブルのID列。 CustomerID - > CustomerテーブルのID列。

関連する問題