Дерекқорды қалыпқа келтірудің толық функционалды тәуелділігі

Толық функционалды тәуелділік - Екінші Қалыпты Пішіннің (2NF) нормалау стандартын теңестіретін деректер базасын қалыпқа келтіру жағдайы. Қысқаша айтқанда, бұл бірінші Қалыпты пішіннің (1NF) талаптарын қанағаттандырады және барлық кілтсіз атрибуттар бастапқы кілтке толықтай функционалды түрде байланысты.

Бұл күрделі, ол естілуі мүмкін. Оны толығырақ қарастырайық.

Бірінші қалыпты пішіннің қысқаша мазмұны

Дерекқор толығымен функционалды түрде тәуелді болмас бұрын, ол алдымен бірінші Қалыпты пішінге сәйкес келуі керек.

Мұның бәрі әрбір атрибуттың жалғыз, атомдық мәні болуы керек дегенді білдіреді.

Мысалы, келесі кесте 1NF-ге сәйкес келмейді, себебі қызметкер Тина екі орынға, екеуі де бір ұяшыққа байланысты:

Алғашқы қалыпты пішінді сақтамау
Қызметкер Орналасуы
Джон Лос-Анджелес
Тина Лос-Анджелес, Чикаго

Бұл дизайны деректер жаңартуларына немесе жазбаларына теріс әсер етуі мүмкін. 1NF сәйкестігін қамтамасыз ету үшін кестені барлық атрибуттар (немесе баған ұяшықтары) үшін бір мәнді ұстайтын етіп қайта реттеңіз:

Бірінші қалыпты пішінді сәйкестік
Қызметкер Орналасуы
Джон Лос-Анджелес
Тина Лос-Анджелес
Тина Чикаго

Бірақ 1NF деректермен байланысты проблемаларды болдырмау үшін әлі де жеткіліксіз.

Толық тәуелділікті қамтамасыз ету үшін 2NF қалай жұмыс істейді

Толық тәуелді болу үшін, барлық негізгі емес атрибуттар бастапқы кілтге байланысты болуы керек. (Есіңізде болсын, үміткердің негізгі төлсипаты дерекқор жазбасын бірегей түрде анықтау үшін пайдаланылатын кез келген кілт (мысалы, негізгі немесе шетелдік кілт) болып табылады.

Дерекқор дизайнерлері атрибуттар арасындағы тәуелді қатынастарды сипаттау үшін белгілерді пайдаланады:

Егер A атрибуты B мәнін анықтаса, онда бұл А -> В деп жазылады, бұл B функционалды түрде А байланысты. Бұл қатынаста A B мәнін анықтайды, ал B A байланысты болады.

Мысалы, келесі Қызметкер бөлімдері кестесінде EmployeeID және DeptID екі кандидаттың кілттері болып табылады: EmployeeID - бұл кестенің негізгі кілті, ал DeptID - сыртқы кілт.

Кез-келген басқа төлсипат - бұл жағдайда EmployeeName және DeptName - оның мәнін алу үшін бастапқы кілтге байланысты болуы керек.

Қызметкерлердің бөлімдері
EmployeeID EmployeeName DeptID DeptName
Emp1 Джон Dept001 Қаржы
Emp2 Тина Dept003 Сату
Emp3 Карлос Dept001 Қаржы

Бұл жағдайда кесте толығымен тәуелді емес, себебі EmployeeName EmployeeID негізгі кілтіне байланысты, DeptName орнына DeptID ішінен байланысты. Бұл ішінара тәуелділік деп аталады.

Осы кестені 2NF-ге сәйкестендіру үшін деректерді екі кестеге бөлу керек:

Қызметкерлер
EmployeeID EmployeeName DeptID
Emp1 Джон Dept001
Emp2 Тина Dept003
Emp3 Карлос Dept001

DeptName төлсипатын Қызметкерлер кестесінен алып тастап, жаңа кесте жасаймыз. Бөлімдер :

Кафедралар
DeptID DeptName
Dept001 Қаржы
Dept002 Кадр бөлімі
Dept003 Сату

Енді кестелер арасындағы қарым-қатынастар толығымен тәуелді немесе 2NF.

Неліктен толық тәуелділік маңызды

Дерекқор төлсипаттары арасындағы толық тәуелділік мәліметтердің тұтастығын қамтамасыз етеді және деректердің ауытқуларынан аулақ болады.

Мысалы, кестені 1NF-ге ғана қатыстыратын жоғарыдағы бөлімнен қараңыз. Міне, тағы да:

Бірінші қалыпты пішінді сәйкестік
Қызметкер Орналасуы
Джон Лос-Анджелес
Тина Лос-Анджелес
Тина Чикаго

Тина екі жазба бар. Егер екеуі бар екенін түсінбей, жаңартсаңыз, нәтиже сәйкессіз деректер болады.

Немесе, егер біз осы кестеге қызметкер қосқымыз келсе не, біз әлі Орналасқан жерді білмейміз? Егер Location төлсипаты NULL мәндеріне рұқсат бермесе, біз тіпті жаңа қызметкерді қосуға рұқсат берілмеуі мүмкін.

Толық тәуелділік - қалыпты жағдайға келгенде, бүкіл сурет емес. Дерекқордың үшінші қалыпты пішінде екеніне көз жеткізіңіз (3NF).