我在开发数据库模型时遇到了问题。
我有 TOUR 和 TRIP 表(都带有 GUID 主键)并且都有一些共同的子表。比如细节、评论、媒体、价格等等。
我正在考虑在这些子表中创建一些“ParentId”列以与 TOUR 或 TRIP 链接,但我需要知道哪个父表是。通过这种方式,我应该创建一个“ParentType”列,其中 1 是 TOUR,2 是 TRIP,或者创建一个 TourDetail 和一个 TripDetail 以将它们与其他表链接起来?
我正在寻找这样做的最佳实践。
最佳答案
在设计方面,SQL 约定是每个关系在引用表中都应该有自己的列。这就是 外键 列的概念。
因此您需要在每个子表(DETAIL、COMMENT、MEDIA、PRICE)中创建两列,例如 TOUR_ID
和 TRIP_ID
,它们将包含correspondig 分别记录在表 TOUR
和 TRIP
中。当然,如果一个 child 只指一个 parent 而不是另一个 parent ,则只需要一列。
这将允许您构建适当的 JOIN
查询,例如:
SELECT
...
FROM TRIP
JOIN DETAIL on DETAIL.TRIP_ID = TRIP.ID
...
WHERE
...
关于mysql - 在我的场景中创建多关系数据库的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53661554/