sql - SQL 数据库设计:只有主键的父表是不好的做法?
问题描述
我的数据库包含两种类型的订单——内部订单和外部订单。由于它们都是订单类型,我希望它们共享一个主键,该主键来自超级实体“RentOrder”。该设计如下图所示:
我的问题:
我的 RentOrder 表只包含一列,即主键 - 'id',这会被认为是不好的做法吗?
ExternalRentOrder 和 InternalRentOrder 有许多共同的字段(例如 orderDate、rentStartDate、rentEndDate 等)。显然,这些列可能位于父 RentOrder 表中。但是,这意味着我需要进行父子 JOIN 来获取所有 InternalRentOrder 或 ExternalRentOrder 数据。这似乎效率较低,性能是我的首要任务。有没有正确的方法可以做到这一点,我目前的解决方案可以吗?
感谢您的时间。
解决方案
这并非不合理。也就是说,我通常在表中还有其他列,例如:
createdAt
-- 插入日期时间行createdBy
-- 谁创建了行
此外,常见的列也可能会有所帮助。在你的情况下:
orderId
supplierId
orderDate
- 等等。
事实上,可能存在相当多的共性,因此您可能会发现一个表就足够了。如果您希望与InternalRentOrder
和/或与的外键关系,单独的表会很有帮助ExternalRentOrder
。
最后,类型列也可能会有所帮助。根据您使用的数据库,这可以更轻松地确保两个表之间没有重复。
推荐阅读
- sql - 查找英语专业或注册 Ivana Teach 课程的最小学生的姓名和年龄
- android - 当新用户使用 Android Studio(java) Firebase 实时数据库注册时,如何将每个用户的数据分开?
- javascript - 如何解决未处理的拒绝(TypeError):循环对象值?
- ios - 如何修复错误开始 LocationUpdates?
- javascript - 在 fetch() 调用中捕获除网络问题以外的错误的正确方法
- core-data - 按月/年分组 FechedResults 以显示带有部分的 swiftui 列表
- python - 如何使用 LabelEncoder 反转 0 和 1?
- haskell - 初学者 Haskell 问题:如何在 Haskell 中找到索引(手动使用递归而不使用 findIndices)
- java - 如何以独立于系统的方式获取源文件的java文件路径?
- python - 在 djangorestapi 中获取 JSON 对象作为响应