- •1.Описание предметной области задачи
- •2.Описание хранимых атрибутов
- •3.Построение реляционной схемы базы данных в 3 нормальной форме
- •4.Схема данных
- •5.Проектирование форм выходных документов
- •Приложение № 1. Сличительная ведомость
- •Сличительная ведомость результатов инвентаризации основных средств, нематериальных активов
- •Приложение № 2. Сводка недостающих основных средств
- •Сводка недостающих основных средств за 2005 год
3.Построение реляционной схемы базы данных в 3 нормальной форме
Схема отношения в первой нормальной форме состоит из:
строки (3.1), в которую включены обозначения всех 33 хранимых атрибутов и в которой ключ не выделен, но допускается его выделение:
R(KodOrg,NameOrg,KodStrPodr,NameStrPodr,KodVidD,NameVidD,KodOsnov,NameOsnov,NomOsnov,DataOsnov,DataNI,DataOI,KodVidOper,NameVidOper,NomDoc,DataDoc, DataInvent,KodDol,NameDol,TabNom,Fio,TabNom1,TabNom2,KodOS,NameOS,CenaOs, SrokSlOS,GodVOS,NomInv,NomZav,NomPasp,KolIzl,KolNedost) (3.1)
таблицы 1.
Выпишем все ФЗ между атрибутами отношения R, за исключением таких ФЗ, в левых частях которых содержатся атрибуты-наименования и для каждого такого атрибута В выполняется условие: А—>В, В—>А, где А – код, В – наименование (т.е. не будем выписывать ФЗ, в левых частях которых содержится В):
KodStrPodr → NameStrPodr, KodOrg, NameOrg;
KodVidD → NameVidD;
KodOsnov → NameOsnov;
KodVidOper → NameVidOper;
KodDol → NameDol;
TabNom → Fio, KodDol;
KodOS → NameOS, CenaOs, SrokSlOS, GodVOS, NomInv, NomZav, NomPasp;
NomDoc, DataDoc → KodStrPodr, KodVidD, KodOsnov, NomOsnov, DataOsnov, DataNI, DataOI KodVidOper, DataInvent, TabNom1, TabNom2, KodOS, KolIzl, KolNedost;
Отношение во второй НФ – это отношение в первой НФ, в котором любой реквизит, не входящий в состав ключа, полно зависит от ключа.
Рассмотрим последнюю зависимость. Атрибуты KolIzl и KolNedost не полно зависят от ключа, т.к. они еще зависят от атрибута KodOS. Поэтому заменим последнюю функциональную зависимость двумя:
NomDoc, DataDoc → KodStrPodr, KodVidD, KodOsnov, NomOsnov, DataOsnov, DataNI, DataOI KodVidOper, DataInvent, TabNom1, TabNom2;
NomDoc, DataDoc, KodOS → KolIzl, KolNedost.
Поставим в соответствии каждой функциональной зависимости схему отношение:
R1[KodStrPodr#, NameStrPodr, KodOrg, NameOrg];
R2[KodVidD#, NameVidD];
R3[KodOsnov#, NameOsnov];
R4[KodVidOper#, NameVidOper];
R5[KodDol#, NameDol];
R6[TabNom#, Fio, KodDol];
R7[KodOS#, NameOS, CenaOs, SrokSlOS, GodVOS, NomInv, NomZav, NomPasp];
R8[NomDoc#, DataDoc#, KodStrPodr, KodVidD, KodOsnov, NomOsnov, DataOsnov, DataNI, DataOI KodVidOper, DataInvent, TabNom1, TabNom2];
R9[NomDoc#, DataDoc#, KodOS#, KolIzl, KolNedost].
Отношение в третьей НФ – это отношение во второй НФ, в котором любой реквизит, не входящий в состав ключа, не транзитивно зависит от ключа.
Рассмотрим схему отношения R1. В эту схему входит атрибут NameOrg который транзитивно зависит от ключа(KodStrPodr → KodOrg → NameOrg).
Таким образом заменим первое отношение двумя:
R1.1[KodStrPodr#, NameStrPodr, KodOrg];
R1.2[KodOrg#, NameOrg].
В результате получается оптимальная схема базы данных в третьей нормальной форме:
Org[KodOrg#, NameOrg] – организации;
StrPodr[KodStrPodr#, NameStrPodr, KodOrg] – структурные подразделения;
VidD[KodVidD#, NameVidD] – виды деятельности;
Osnov[KodOsnov#, NameOsnov] – виды оснований;
Oper[KodVidOper#, NameVidOper] – виды операций;
Dol[KodDol#, NameDol]- виды должностей;
Pers[TabNom#, Fio, KodDol] – персонал фирмы;
OS[KodOS#, NameOS, CenaOs, SrokSlOS, GodVOS, NomInv, NomZav, NomPasp] – основные средства;
SVOS[NomDoc#, DataDoc#, KodStrPodr, KodVidD, KodOsnov, NomOsnov, DataOsnov, DataNI, DataOI, KodVidOper, DataInvent, TabNom1, TabNom2] – реестр сличительных ведомостей;
SVDan[NomDoc#, DataDoc#, KodOS#, KolIzl, KolNedost] – данные по основным средствам из сличительных ведомостей.