我有一张桌子Page [Id, Name]
。表Element[Id, PageId, ViewId, ViewType, Order]
,其中ViewType
是表格之一:投资组合,基金,头寸。 ViewId
是相关表格中元素的ID:PortfolioView,FundView,PositionView。
查看表格如下:[Id, PortfolioId, ShowName, ShowYTD, ShowMTD and other]
。当我创建一个Element项时,它意味着创建了一个" view"表。
所以对我而言,它看起来像一个反模式。
简而言之,我希望创建一个Page模型,其中包含一个有序元素,它代表一个视图(投资组合,基金或头寸)。在sql中哪种方式更好?
答案 0 :(得分:1)
我看到这样做的方法是更新您的Element表,其中包含每个Portfolio,Fund和Position的列。列需要可以为空,但它们是合法的外键,因此SQL将为您强制执行外键正确性。
如果您希望技术上尽可能正确,您还可以执行以下操作:
Page[Id, Name]
Element[Id, PageId, ViewId, ViewType, Order]
Element_Portfolio[ElementId, PortfolioId]
Element_Fund[ElementId, FundId]
Element_Position[ElementId, PositionId]
Portfolio[...]
Fund[...]
Position[...]
这样可以避免使用可为空的列,但是在执行查询时需要有更多的表,因此需要更多的连接。