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

标签 mysql sql software-design

我在开发数据库模型时遇到了问题。

我有 TOUR 和 TRIP 表(都带有 GUID 主键)并且都有一些共同的子表。比如细节、评论、媒体、价格等等。

我正在考虑在这些子表中创建一些“ParentId”列以与 TOUR 或 TRIP 链接,但我需要知道哪个父表是。通过这种方式,我应该创建一个“ParentType”列,其中 1 是 TOUR,2 是 TRIP,或者创建一个 TourDetail 和一个 TripDetail 以将它们与其他表链接起来?

我正在寻找这样做的最佳实践。

最佳答案

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

因此您需要在每个子表(DETAIL、COMMENT、MEDIA、PRICE)中创建两列,例如 TOUR_IDTRIP_ID,它们将包含correspondig 分别记录在表 TOURTRIP 中。当然,如果一个 child 只指一个 parent 而不是另一个 parent ,则只需要一列。

这将允许您构建适当的 JOIN 查询,例如:

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

关于mysql - 在我的场景中创建多关系数据库的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53661554/

相关文章:

sql - "IF"处或附近的 Postgres 语法错误

php - 如何使用for循环插入数据库

php - mysql 数据库连接

java - JDBC/结果集错误

SQL - 在子查询中选择特定条件

sql - SQL 查询返回同一个表两次内连接的双倍行

php - 如何在 PHP 7.4 中使用 DocBlocks?

javascript - 为什么JavaScript在常见的浏览器中没有得到自己的线程?

c++ - 在 C++ 中通过 CAN 发送部分数据

MYSQL插入表选择id为NULL,*来自temp_tbl