Правило 3: функциональная зависимость

После определения первичных ключей для каждой таблицы нужно проверить, чтобы все данные, включенные в таблицы, относились к соответствующим объектам. Другими словами, следует убедиться, что каждое поле функционально зависит от первичного ключа, который идентифицирует исходный объект таблицы.

Правило 3: для каждого значения первичного ключа значения в столбцах данных должны относиться к объекту таблицы и полностью его описывать.

Это правило используется двояко. Во-первых, в таблице не должно быть данных, не относящихся к объекту, определяемому первичным ключом. Например, хотя в каждом заказе требуется информация о заказчике, но заказчик является самостоятельным объектом, и данные о нем должны находиться в соответствующей таблице. Подобным образом автор может написать не одну книгу, так что полностью оправдано создание таблицы для данных об авторах отдельно от книг. Во-вторых, данные в таблице должны полностью описывать объект. Например, получателем заказанных книг не обязательно может быть заказчик (возможно, это подарок). Включение данных о получателе в таблицу Заказы делает ее более полной. Результат применения этого правила приведен на рис. 8.9.