0

次の列を含むデータベースにテーブルを作成する必要があります。

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

私はこのようなアドレスのテーブルを持っています -

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

フィールド source-address および destination-address からテーブル「address」のエントリへのポインタのみを保持したいと思います。

取引は同じ住所間でも行うことができます。たとえば、自宅の住所から自宅の住所へ、または自宅の住所から職場の住所へと行うことができ、すべて合法です。

それを行う最良の方法は何ですか?

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  
....

TRANSACTIONテーブルをテーブルに接続したいのADDRESSですが、ここでは同じキーを持っているので、外部キーを使用してそれを行うことができるかどうかわかりません-テーブルTRANSACTIONのフィールドSRCとフィールドに接続されているテーブルADDRESSのID。DST

設計の提案のように、私がする必要があることを行うための最良の方法は何かについてのアプローチの説明をいただければ幸いです。

4

1 に答える 1

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
于 2013-03-24T00:42:03.400 に答える