However, to improve query performance it is decided to denormalize the relational
schema to four table schemes, as shown in Figure 16.3. The Item and TimeDimension
tables are normalized, but the Sale and Store tables are not. The Sale table is denormalized
to 1NF, since saleDate and storeNr are functionally dependent on invoiceNr,
which is just part of the primary key. The Store table is denormalized to 2NF since
region is functionally dependent on stateCode, a nonkey attribute.
The decision to denormalize in this way is indicated by annotating the conceptual
schema, as shown in Figure 16.2. Here the key object types are shaded. An object type
is a key object type if and only if its preferred identification scheme is used as the primary
key of a table. Graphically, each key object type forms the root of a tree, where
each node is an object type and each edge is a functional (n:1 or 1:1) predicate.