在我的场景中创建多关系数据库的最佳方法

时间:2018-12-07 00:15:24

标签: mysql sql software-design

我在开发数据库模型时遇到麻烦。

我有TOUR和TRIP表(都带有GUID主键),并且两者都有一些共同的子表。例如DETAIL,COMMENT,MEDIA,PRICE等。

我正在考虑在那些子表中创建一些“ ParentId”列以链接到TOUR或TRIP,但是我需要知道哪个父表是。这样,我应该创建一个“ ParentType”列,其中1是TOUR,2是TRIP,或者创建一个TourDetail和TripDetail来将彼此链接到另一个表?

我正在寻找做到这一点的最佳实践。

1 个答案:

答案 0 :(得分:0)

在设计方面,SQL约定是每个关系在引用表中应有其自己的列。这就是外键列的概念。

因此,您需要在每个子表中创建两列(DETAIL,COMMENT,MEDIA,PRICE),例如TOUR_IDTRIP_ID,它们分别在其中包含对应记录的主键,表TOURTRIP。当然,如果一个孩子只指代一个父母而不是另一个,则只需要一列。

这将使您能够构建适当的JOIN查询,例如:

SELECT
    ...
FROM TRIP
    JOIN DETAIL on DETAIL.TRIP_ID = TRIP.ID
    ...
WHERE
    ...