首页 > 解决方案 > SQL 数据库设计:只有主键的父表是不好的做法?

问题描述

我的数据库包含两种类型的订单——内部订单和外部订单。由于它们都是订单类型,我希望它们共享一个主键,该主键来自超级实体“RentOrder”。该设计如下图所示:

架构

我的问题:

  1. 我的 RentOrder 表只包含一列,即主键 - 'id',这会被认为是不好的做法吗?

  2. ExternalRentOrder 和 InternalRentOrder 有许多共同的字段(例如 orderDate、rentStartDate、rentEndDate 等)。显然,这些列可能位于父 RentOrder 表中。但是,这意味着我需要进行父子 JOIN 来获取所有 InternalRentOrder 或 ExternalRentOrder 数据。这似乎效率较低,性能是我的首要任务。有没有正确的方法可以做到这一点,我目前的解决方案可以吗?

感谢您的时间。

标签: sqldatabase-designrelational-database

解决方案


这并非不合理。也就是说,我通常在表中还有其他列,例如:

  • createdAt-- 插入日期时间行
  • createdBy-- 谁创建了行

此外,常见的列也可能会有所帮助。在你的情况下:

  • orderId
  • supplierId
  • orderDate
  • 等等。

事实上,可能存在相当多的共性,因此您可能会发现一个表就足够了。如果您希望与InternalRentOrder和/或与的外键关系,单独的表会很有帮助ExternalRentOrder

最后,类型列也可能会有所帮助。根据您使用的数据库,这可以更轻松地确保两个表之间没有重复。


推荐阅读