Since the inception of SQL, nulls have frustrated database users and builders alike. Those writing SQL must painstakingly guard their queries against surprising results caused by nulls, while those building database engines constantly struggle to implement the subtle semantics of 3-valued logic. Given that the relational model already provides a way to represent missing information, namely, with the absence of a tuple in a relation, one may step back and ask:"Are nulls really necessary?" We answer:"No!" by proposing a new semantics for SQL that completely eliminates nulls. Our semantics, called Columnar Semantics, is as expressive as the standard 3-valued logic semantics, and behaves the same when the data and query are null-free. Where the two semantics differ, Columnar Semantics results in simpler queries. To evaluate Columnar Semantics and any other alternative semantics or query languages, we propose MIA (Missing Information Artifacts), a collection of queries and data sets for handling missing information, and invite contributions from the community.
翻译:暂无翻译