SQL VIEW 是一个全局的逻辑表,可能会或可能不会被持久化。但它仍然是一张桌子。因此,视图是否应该始终遵循第一范式(1NF)?即没有重复的行,只有标量类型,没有从上到下或从左到右的顺序等。更高的范式呢?
对我来说,我的应用程序“消耗”存储过程的结果,我的视图被 SQL 查询“消耗”,这两种用法是互斥的(即我不使用 SQL 查询存储过程的结果集,而我的应用程序不包含 SQL 代码)。我见过其他人使用 VIEW 将一列中的多个值“连接”成一行,通常是逗号分隔的格式。在 SQL 查询中针对这样的列编写谓词需要类似于以下内容:
',' + concat_col + ',' LIKE '%' + ',' + search_value + ',' + '%'
所以在我看来,期望所有可以查询的表只包含标量类型似乎是合理的。我这么想是不是太“纯粹”了?