假设您有两组概念实体:
- 具有多个ForwardPriceEntries的MarketPriceDataSet
- 具有多个PoolPriceForecastEntry的PoolPriceForecastDataSet
两个不同的子对象具有几乎相同的字段:
ForwardPriceEntry 有
- 开始日期
- 结束日期
- 模拟项 ID
- 远期价格
- MarketPriceDataSetId(父表的外键)
PoolPriceForecastEntry 有
- 开始日期
- 结束日期
- 模拟项 ID
- 预测池价格
- PoolPriceForecastDataSetId(父表的外键)
如果我将它们建模为单独的表,唯一的区别就是外键和价格字段的名称。
关于是否应将两个几乎相同的表合并为一个的问题一直存在争议。
我想到的建模选项是:
- 只需将它们保留为两个独立的单独表格
- 将两个集合放在一个表中,并带有一个附加的“类型”字段,并且parent_id等于任一父表的外键。这将牺牲参照完整性检查。
- 将这两个集合放在一个带有附加“类型”字段的表中,并创建一个复杂的连接表序列以保持引用完整性。
你认为我应该怎么做,为什么?
其他可能相关或不相关的信息:
这两组数据是松散相关的:每组将加载到内存中进行批处理,偶尔会通过从 ForwardPriceEntries 复制生成一组PoolPriceForecastEntries。
MarketPriceDataSet和PoolPriceForecastDataSet确实有不同的字段。可以将它们合并到一个表中,但是您将在一半条目中拥有无意义的字段。