我在开发数据库模型时遇到麻烦。
我有TOUR和TRIP表(都带有GUID主键),并且两者都有一些共同的子表。例如DETAIL,COMMENT,MEDIA,PRICE等。
我正在考虑在那些子表中创建一些“ ParentId”列以链接到TOUR或TRIP,但是我需要知道哪个父表是。这样,我应该创建一个“ ParentType”列,其中1是TOUR,2是TRIP,或者创建一个TourDetail和TripDetail来将彼此链接到另一个表?
我正在寻找做到这一点的最佳实践。
答案 0 :(得分:0)
在设计方面,SQL约定是每个关系在引用表中应有其自己的列。这就是外键列的概念。
因此,您需要在每个子表中创建两列(DETAIL,COMMENT,MEDIA,PRICE),例如TOUR_ID
和TRIP_ID
,它们分别在其中包含对应记录的主键,表TOUR
和TRIP
。当然,如果一个孩子只指代一个父母而不是另一个,则只需要一列。
这将使您能够构建适当的JOIN
查询,例如:
SELECT
...
FROM TRIP
JOIN DETAIL on DETAIL.TRIP_ID = TRIP.ID
...
WHERE
...