视图约束的重点是什么?

时间:2010-12-14 01:11:07

标签: oracle

view constraints在哪里有用?我的意思是,Oracle允许在视图上创建约束。它们不是由数据库强制执行的。它似乎只是数据库可以使用的更多元数据,但我试图了解它们在什么情况下有用。

Tom Kyte answered在一个问题中:

  

它们用于具有物化视图等的复杂查询重写。它更“元数据”    - 它为优化器提供了更多信息,允许更广泛的查询重写   的地方。

......但这有点简短。

2 个答案:

答案 0 :(得分:2)

来自Oracle Documentation

查看约束

您可以在视图上创建约束。视图支持的唯一约束类型是RELY约束。

当查询通常访问视图而不是基表时,这种类型的约束很有用,因此数据库管理员需要定义视图而不是表之间的数据关系。视图约束在OLAP环境中特别有用,它们可以为物化视图启用更复杂的重写。

引用了另一个Oracle Documentation页面,但从未在视图上使用约束。

答案 1 :(得分:0)

在Oracle产品中少量使用。在Designer生成的PL / SQL Web应用程序中,基于视图的组件需要在视图上定义的主键。这允许应用程序从记录列表超链接到单记录显示。

我记得在Hibernate中看到一些案例,当在视图上定义了PK和FK约束时,它会生成更好的代码。 (其他人可以确认吗?)

汤姆指向查询重写。

所以我认为答案是“如果你的工具可以使用这些信息,那么最好提供它。”当然,很难弄清楚哪些工具会使用它。

我尝试将它们包括在内,因为

  • 虽然重新创建视图的脚本稍微复杂一些,但它的工作并不多。
  • 它有助于完成逻辑模型的物理实现
  • 它让我想起了我需要通过触发器或后台程序包或“约束违规”报告以某种方式实现的实际数据约束。