在订单表里面,创建者是外键,保存的是ID。现在需要显示创建者信息,有2种实现方案:
1、修改数据模型,增加“冗余字段”
2、关联查询补充,实现两表查。
以下是两种方案的对比。大表一般采用方案一,可能出现数据不一致;小表采用方案二,数据实时更新,但是容易有性能瓶颈,SQL优化的重点。
特性 | 方法一:修改数据模型 | 方法二:关联查询补充 |
---|---|---|
数据冗余 | 高 | 低 |
写入性能 | 较低 | 高 |
查询性能 | 高 | 较低 |
数据一致性 | 高(保存创建时信息) | 低(反映最新信息) |
维护成本 | 高 | 低 |
适用场景 | 频繁查询、性能敏感 | 数据规范、变更频繁 |
如何选择?
-
方法一 更适合在查询性能要求高且需要保留订单创建时客户和创建者信息的场景。
-
方法二 更适合在数据规范性要求高且客户或用户信息变更频繁的场景。
在MES、ERP系统通常较为复杂且需要长期维护。
方法二在系统扩展和维护方面更具优势,因为它能够更好地适应业务变化和系统升级。当企业业务流程发生变化或需要与其他系统集成时,方法二可以更方便地进行调整和扩展。