  The Nested Relational Calculus (NRC) has been an influential high-level query
language, providing power and flexibility while still allowing translation to
standard SQL queries. It has also been used as a basis for language-integrated
query in programming languages such as F#, Scala, and Links. However, SQL's
treatment of incomplete information, using nulls and three-valued logic, is not
compatible with `standard' NRC based on two-valued logic. Nulls are widely used
in practice for incomplete data, but the question of how to accommodate
SQL-style nulls and incomplete information in NRC, or integrate such queries
into a typed programming language, appears not to have been studied thoroughly.
In this paper we consider two approaches: an explicit approach in which option
types are used to represent (possibly) nullable primitive types, and an
implicit approach in which types are treated as possibly-null by default. We
give translations relating the implicit and explicit approaches, discuss
handling nulls in language integration, and sketch extensions of normalization
and conservativity results.
