【发布时间】:2011-11-15 14:37:55
【问题描述】:
我正在开发一种连接 2 个数据源(例如查询)的方法。
我有一个名为 QueryField 的表,其结构如下:
QueryID
FieldID
FieldName
....
如果我在 QueryField 上有 2 条记录
QueryID FieldID FieldNAme
------------ --------- ----------
1 1 CustomerID
1 2 CustAddress
2 3 CustNo
2 4 CustomerPhone
我想要一个新表 QueryFieldJoin,它定义了 2 个查询中的哪些字段用于加入。我的想法是有以下结构
LeftJoinFieldID (FK from FieldID of QueryField)
RightJoinFieldID (also FK from FieldID of QueryField)
JoinType (intersect, outer join).
PrimaryKey 是 LeftJoinFieldID 和 RightJoinFieldID 的组合
LeftJoinFieldID RightJoinFieldId JoinType
-------------- ---------------- --------
1 3 Intersect
这会起作用,但是我觉得这不是最好的数据库设计,它具有与另一个表上两个不同列的外部字段相同的字段。有人可以提出更好的方法吗?
【问题讨论】:
-
更好的方法:有两个 单独的 列,每个列都是 FK 关系之一的 FK。这样,您还可以强制数据库中的 FK 关系
-
以上评论+1
-
我不确定我明白了,我在 QueryFieldJoin 表中已经有 2 个单独的列?
-
这个设计对我来说很好。在 ORDERS 表中看到它,其中 SHIP_TO 和 BILL_TO 字段都引用回 ADDRESS 表。
标签: sql database database-design foreign-keys foreign-key-relationship