2009-05-20 2 views
0

내가 작업하고있는 소프트웨어는 2 개의 테이블, 리드 및 고객을 가지고 있습니다. 제품을 누군가에게 판매 할 때 고객 테이블에 리드 테이블의 데이터 (일부 추가 데이터 포함)가있는 레코드가 생성됩니다.동일한 테이블에 있었어야하는 데이터를 저장하는 것에 관한 질문

현재 두 테이블 간에는 관계가 없습니다. 리드 객체는 고객 테이블에서 동일한 전화 번호를 가진 레코드를 찾기 위해 함수를 가지고 있습니다. (지난 5 ~ 10 년 동안 바뀌지 않았 으면 좋았을 것입니다. 고객 - 각 리드에서 이러한 검색을 수행하면 고객 테이블에 % 82 교차로가 생성됩니다. 역방향 조회는 없습니다 (고객 -> 리드).

문제는 내가 고객 레코드가 어떤 리드 레코드와 연관되어 있는지 알아야한다는 것이며 그 반대도 마찬가지입니다.

고객의 리드에서 fk를 저장하고 리드에서 고객의 fk를 저장하는 것을 고려했습니다.하지만 frmys가있을 때 연관된 레코드를로드 할 때 사용하는 ORM은 오버플로가됩니다.

두 테이블을 하나의 '사람'테이블로 병합하여 제가하고 싶은 일은 사람이 고객인지 아닌지를 식별하는 플래그입니다.하지만 슬프고도 일정과 예산은 허용되지 않습니다.

나는 무엇을 해야할지 잘 모릅니다.

답변

2

두 방향으로 갈 필요가 있습니까 (예 : 1 : M은 고객에게 연결되고 1 : M 고객은 리드). 그렇다면 두 테이블 사이에있는 복합 테이블이 이동하는 방법 일 수 있습니다. 각 레코드에는 고객의 PK와 리드의 PK (둘을 연결)가 포함됩니다.

고객에게 얼마나 많은 리드가 연결되어 있는지 알아야한다면 리드 (고객의 PK를 가리킴)에 FK를 추가합니다.

+0

불행히도 나는 두 가지 방향으로 갈 필요가 있습니다. 텔레마케터는 기존 고객에게 전화하기를 원하지 않으며 오피스 직원은 리드 (판매원 등)를 위해 예약 된 약속에 액세스해야합니다. 저는 항상 M : M 관계를 생성하기 위해 접합 테이블을 사용했습니다. 결코 1 : 1이 아닙니다. 그래서 처음에 (순진하게) 아이디어를 무시한 것입니다. –

1

레코드를 고유하게 식별하려면 두 테이블 각각에 ID 열이 있어야합니다 (아직 가지고 있지 않은 경우).

그리고 기존 테이블을 연결하기 위해 하나의 연결 (junction) 테이블을 추가해야합니다. 이 테이블에는 LeadID와 CustomerID라는 두 개의 열이 있습니다. 각 행에는 고객 및 리드 테이블의 해당 행에 대한 ID가 들어 있습니다.

외래 키가 테이블을 연결합니다. LeadID -> Lead 테이블의 ID 열. CustomerID -> 고객 테이블의 ID 열.