Polymorphism and Type Inference in Database Programming

Peter Buneman, Atsushi Ohori

Research output: Contribution to journalArticlepeer-review

40 Citations (Scopus)


In order to find a static type system that adequately supports database languages, we need to express the most general type of a program that involves database operations. This can be achieved through an extension to the type system of ML that captures the polymorphic nature of field selection, together with a technique that generalizes relational operators to arbitrary data structures. The combination provides a statically typed language in which generalized relational databases may be cleanly represented as typed structures. As in ML types are inferred, which relieves the programmer of making the type assertions that may be required in a complex database environment. These extensions may also be used to provide static polymorphic typechecking in object-oriented languages and databases. A problem that arises with object-oriented databases is the apparent need for dynamic typechecking when dealing with queries on heterogeneous collections of objects. An extension of the type system needed for generalized relational operations can also be used for manipulating collections of dynamically typed values in a statically typed language. A prototype language based on these ideas has been implemented. While it lacks a proper treatment of persistent data, it demonstrates that a wide variety of database structures can be cleanly represented in a polymorphic programming language.

Original languageEnglish
Pages (from-to)30-76
Number of pages47
JournalACM Transactions on Database Systems
Issue number1
Publication statusPublished - 1996 Mar
Externally publishedYes


  • D.3.1 [Programming Languages]: Formal Definitions and Theory
  • D.3.2 [Programming Languages]: Language Classification-applicative languages
  • D.3.3 [Programming Languages]: Language Constructs and Features-data types and construct, abstract data types

ASJC Scopus subject areas

  • Information Systems


Dive into the research topics of 'Polymorphism and Type Inference in Database Programming'. Together they form a unique fingerprint.

Cite this