Поэтому система не может запретить ввод значения B, не
соответствующего этой ФЗ.
В нашем примере универсального отношения атрибут S# не
является возможным ключом. Связанная с этим аномалия вставки типа
а) обусловлена тем, что нет никакой возможности объявить ФЗ S#
Sn, S# St, S# Sci, Sci St.
Аномалия вставки типа б). Она обусловлена тем, что
вставляемые значения функционально зависят от части первичного
ключа (ПК).
Для того чтобы добавить в БД сведения о новом поставщике,
достаточно указать значение S# и проверить ФЗ S# Sn, S# St,
S# Sci, Sci St. Но S# – только часть ПК универсального
отношения и эти ФЗ мы не можем объявить. Вставляя кортеж в
универсальное отношение, нужно указать определенные значения всех
атрибутов первичного ключа и проверить все объявленные таким
образом ФЗ. Однако среди них нет интересующих нас зависимостей S#
Sn, S# St, S# Sci, Sci St. Поэтому, даже если мы
присвоим атрибутам P#, J#, Dt какие-то значения «по умолчанию» и
формально обеспечим возможность вставки кортежа, целостность
данных не гарантирована.
Таким образом, аномалии обновления типа б) обусловлены тем,
что в схеме отношения имеются атрибуты, функционально зависящие
от части первичного ключа.
Аномалия обновления значений. Если обновляются значения
атрибутов, функционально зависящих от части ПК или от неключевых
атрибутов, то система не может проверить эти ФЗ, так как их
невозможно объявить. Поэтому она не заметит, что поставщик из Яи
«приобрел» запрещенный статус. Будут пропущены также ошибки при
обновлении значений поля Jn или Sn и т.п.
3.2.3 Устранение аномалий (пример). Вернемся к нашему
универсальному отношению USPJ(S#, Sn, St, SCi, P#, Pn, We, Co,
PCi, J#, Jn, JCi, Dt, Qt). Посмотрим, какие ФЗ между его атрибутами
существуют. Для этого обратимся к правилам, сформулированным в
пп. 2.3, 3.1.2. Из них следуют такие ФЗ: