数据库 - 创建包含指向同一表的2个字段的表

时间:2013-03-23 23:06:02

标签: sql database database-design create-table

我需要在数据库中创建一个包含以下列的表 -

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表,但我不确定是否可以使用外键来执行此操作,因为我在表ADDRESS中具有相同的密钥ID已连接到表TRANSACTION中的SRCDST字段。

我希望得到一种方法描述,了解我需要做什么的最佳方式 - 比如设计建议。

1 个答案:

答案 0 :(得分: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