Source: https://cs.uwaterloo.ca/~tozsu/courses/CS338/lectures/14 DB System.pdf