Search papers, labs, and topics across Lattice.
This paper critiques the foundational design choices of SQL, particularly the acceptance of nulls and bags, arguing that these elements complicate query languages unnecessarily. By leveraging insights from the development of Rel, a language for end-to-end relational programming, the authors demonstrate that a fully normalized language can eliminate these issues while enhancing optimizability and reducing programmer burden. The key finding reveals that the justifications for nulls and bags are unfounded, paving the way for a more efficient and robust query language design.
Nulls and bags in SQL are not just inconvenient鈥攖hey're an avoidable design flaw that hinders query language efficiency.
SQL is the database community's success story in terms of language design. The key reason for its success is its declarativeness: it gives rise to optimizability, reducing the programmer's burden significantly. However, given the evolving complexity of problems to solve with query languages, our community needs to re-think some of the fundamental early query language design decisions. Our experience in having worked on the design of Rel (a language for end-to-end relational programming) tells us that it is possible to design, implement, and successfully deploy a language based on fully normalized relations. Such relations avoid what Codd called corrupted relations and what we commonly refer to as bags, and the'harmful''billion dollar mistake'that we know as nulls. In the SQL world, it is accepted that bags and nulls are tolerated as an unavoidable evil. We argue that the evil is completely avoidable: reasons offered for justifying bags and nulls evaporate at a closer examination. In addition to debunking them, we also describe opportunities offered by a null-free language with set semantics.