Базы данных

Пример регистрации автомобиля


Первый шаг в создании схемы состоит в перечислении атрибутов. На 5.9 содержатся следующие атрибуты.

decalNumber, year, sex, birthDate, expiresDate, taglssued,

tagNumber,, titleNumber, vehicleldNumber, yearMake, wtLength, class, mke, type, color, ownerNameAddress, ownerDLl, ownerDL2, pip, liability, creditAmt, refundAmt, issueDate, taxMonths, taxAmt, btMonths, btAmt, tagSvcChargAmt, otherAmt, tagTotalAmt, titleFeeAmt, titleLateFeeAmt, lienAmt, titleSvcChargeAmt, titleTotalAmt, salesTaxAmt, grandTotalAmt.

Функциональные зависимости между этими атрибутами возникают главным образом при их организации в сущности. Из того, что известно о регистрации автомобилей, логично предположить, что сущностями, представляемыми этими атрибутами, являются автомобиль (саг), его номер (title), владельцы (owners) и технический паспорт (registration). Следует определить функциональные зависимости, возможно представляющие ключи этих разнообразных сущностей. Сущности “автомобиль”, “владелец” и “номер” имеют очевидные ключи. Анализ возможного ключа сущности “технический паспорт” более сложен и требует специальных знаний. Во Флориде на каждый автомобиль ежегодно выписывается новый технический паспорт. Талон с указанием года выдается владельцам автомобиля и должен прилагаться к водительскому удостоверению. Номер на талоне является уникальным для технического паспорта. Следовательно, decalNumber может быть выбран в качестве ключа для технического паспорта.

Ниже приведены правила, содержащие все атрибуты. Нетрудно заметить, что имеет место некоторое дублирование атрибутов. Этой избыточности можно было бы избежать, проведя более тщательный анализ, но это обычная ситуация, и это делает нормализацию более интересной.

(dl) VehicleldNumber -» {yearMake, wtLength, class, make, type, color}

(d2) TitleNumber —» {yearMake, wtLength, titleFeeAmt, titleLateFeeAmt, lienAmt, titleSvcChargeAmt, titleTotalAmt, salesTaxAmt}

(d3) {ownerDLl, ownerDL2} -» Csex, birthDate, ownerNameAddress}

(d4) {decalNumber -> {year, sex, birthMonth, birthDay, birthYear,

expiresDate, taglssued; tagNumber, pip, liability, creditAmt, refundAmt, issuedDate, taxMonths, taxAmt, btMonths, btAmt, tagSvcChargAmt, otherAmt, tagTot’alAmt, grandTotalAmt}

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

(d5) decalNumber —> {TitleNumber, VehicleNumber, ownerDLl, ownerDL2}

(d6) TitleNumber —> (VehicleldNumber, ownerDLl, ownerDL2}

Нормализацию можно проводить формально или неформально. Формальное выполнение нормализации лучше иллюстрирует процесс. Для этого следует начать с простого переименования атрибутов, как описывается в следующем разделе.

Комментарии закрыты