SQL表中的列,引用了多个表

时间:2015-01-12 23:06:10

标签: sql

我有一张桌子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中哪种方式更好?

1 个答案:

答案 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[...]

这样可以避免使用可为空的列,但是在执行查询时需要有更多的表,因此需要更多的连接。