Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Consider now a revised version of the example from the previous section in which suppliers are again partitioned into classes, but each class has just one associated city (where each city in turn has just one associated status, as before). So we have a relvar RX3 that looks like this (again I’ll ignore supplier names for simplicity):
RX3 { SNO , CLASS , CITY , STATUS }
In fact, of course, RX3 has the same heading as RX2 did, but the predicate is different: Supplier SNO is part of class CLASS, which has associated city CITY, which has status STATUS. The following FDs hold among others:
{ SNO } ? { CLASS }
{ CLASS } ? { CITY }
{ CITY } ? { STATUS }
Relvar RX3 isn’t in 3NF, because in the FD {CLASS} ? {CITY}, {CLASS} isn’t a superkey and {CITY} isn’t a subkey. (The same goes for {CITY} ? {STATUS}, mutatis mutandis.) The conventional normalization procedure would thus recommend that we decompose the relvar by applying Heath’s Theorem to that FD {CLASS} ? {CITY}. But if we do, this is what we get: