2013-03-23 5 views
0

같은 테이블을 가리키는 테이블을 작성데이터베이스 - 다음과 같은 열 - -이 개 필드는 내가 포함 된 데이터베이스에서 테이블을 만들 필요가

table name - transaction 
time, source-address, destination-address 

나는이 같은 주소의 테이블이 -

table name - address 
address id, address, type (home/office/etc...) 

원본 주소와 대상 주소 필드의 포인터를 테이블 "주소"의 항목으로 유지하고 싶습니다.

동일한 주소 사이에서 트랜잭션을 수행 할 수 있습니다. 예를 들어 집 주소에서 집 주소까지 또는 집 주소에서 직장 주소까지 모두 수행 할 수 있으며 모든 것이 합법적입니다.

가장 좋은 방법은 무엇입니까?

SAMPLE DATA - 
ADDRESS 
ID ADDR  TYPE 
1  x-street home 
2  y-street work 

TRANSACTION 
TIME SRC  DST  
08:00  1  1 
08:15  2  1 
.... 

나는 ADDRESS 테이블에 TRANSACTION 테이블을 연결하고 싶습니다하지만 난 그것뿐만 여기에 외래 키를 사용 할 수 있을지는 동일한 키가 확실하지 않다 - SRC에 연결되어있는 테이블의 주소에서 ID를 및 DST 테이블의 TRANSACTION 필드

설계 제안과 같이 내가해야 할 일을 수행하는 가장 좋은 방법은 무엇인지에 대한 접근 방식에 대해 설명해 주시면 감사하겠습니다.

+0

당신은 기본 및 외부 키가 무엇인지 아십니까? –

+0

주소 표의 유형 필드가 소스인지 대상인지 여부를 나타 냅니까? –

+0

예 - 확실히 기본 키와 외래 키가 무엇인지 알고 있으며 주소 테이블의 외래 키를 기반으로하는 관계가 있습니다. 문제는 어떻게 동일한 테이블에서 2 개의 외래 키를 가질 수 있습니까? – Nik

답변

0

테이블이 괜찮은 것 같습니다.

다음 쿼리는 주소와 거래를 얻을 수 있습니다 :

SELECT t.time, src.address "Source Address", dst.address "Destination Address" 
from Transaction t 
JOIN Address src ON t.src=src.id 
JOIN Address dst ON t.dst=dst.id 
SORT BY t.time 
+0

@ Dan Bracuk - 감사합니다. –