Possible and certain keys for SQL

Henning Köhler, Uwe Leck, Sebastian Link*, Xiaofang Zhou

*Corresponding author for this work

Research output: Contribution to journalJournal Articlepeer-review

39 Citations (Scopus)

Abstract

Driven by the dominance of the relational model and the requirements of modern applications, we revisit the fundamental notion of a key in relational databases with NULL. In SQL, primary key columns are NOT NULL, and UNIQUE constraints guarantee uniqueness only for tuples without NULL. We investigate the notions of possible and certain keys, which are keys that hold in some or all possible worlds that originate from an SQL table, respectively. Possible keys coincide with UNIQUE, thus providing a semantics for their syntactic definition in the SQL standard. Certain keys extend primary keys to include NULL columns and can uniquely identify entities whenever feasible, while primary keys may not. In addition to basic characterization, axiomatization, discovery, and extremal combinatorics problems, we investigate the existence and construction of Armstrong tables, and describe an indexing scheme for enforcing certain keys. Our experiments show that certain keys with NULLs occur in real-world data, and related computational problems can be solved efficiently. Certain keys are therefore semantically well founded and able to meet Codd’s entity integrity rule while handling high volumes of incomplete data from different formats.

Original languageEnglish
Pages (from-to)571-596
Number of pages26
JournalVLDB Journal
Volume25
Issue number4
DOIs
Publication statusPublished - 1 Aug 2016
Externally publishedYes

Bibliographical note

Publisher Copyright:
© 2016, Springer-Verlag Berlin Heidelberg.

Keywords

  • Armstrong database
  • Axiomatization
  • Data profiling
  • Discovery
  • Extremal combinatorics
  • Implication problem
  • Index
  • Key
  • Null marker
  • SQL

Fingerprint

Dive into the research topics of 'Possible and certain keys for SQL'. Together they form a unique fingerprint.

Cite this