SQL表中引用多个表的列
我有一个表SQL表中引用多个表的列,sql,Sql,我有一个表页面[Id,Name]。和表Element[Id,PageId,ViewId,ViewType,Order],其中ViewType是其中一个表的名称:投资组合,基金,头寸。而ViewId是相关表中元素的id:PortfolioView、FundView、PositionView 视图表如下所示:[Id、PortfolioId、ShowName、ShowYTD、ShowMTD和其他]。当我创建一个元素项时,它意味着创建了一个“视图”表的项 所以对我来说,它看起来像一个反模式 简而言之,我
页面[Id,Name]
。和表Element[Id,PageId,ViewId,ViewType,Order]
,其中ViewType
是其中一个表的名称:投资组合,基金,头寸。而ViewId
是相关表中元素的id:PortfolioView、FundView、PositionView
视图表如下所示:[Id、PortfolioId、ShowName、ShowYTD、ShowMTD和其他]
。当我创建一个元素项时,它意味着创建了一个“视图”表的项
所以对我来说,它看起来像一个反模式
简而言之,我希望创建一个页面模型,其中包含一个有序的元素,表示一个视图(投资组合、基金或头寸)。在sql中使用哪种方法更好?我看到的方法是使用一个列来更新元素表,每个列对应于投资组合、基金和头寸。列必须是可空的,但它们将是合法的外键,因此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[...]
这样可以避免出现可为空的列,但在执行查询时需要有更多的表,因此需要有更多的联接 谢谢,我考虑过这一点,但我不喜欢在sush中,当几个ViewId为null的列不同(或者元素表中的几个行具有相同的ElementId)时,情况会变得模棱两可。但如果我找不到更好的方法,我会照你说的做。