Page 23 - электрондык_окулык
P. 23
кілтке жартылай тәуелділік бар (кілтке толық тәуелді атрибут тек біреу-ақ, ол – Quantity);
бұл кестеде мәліметтердің қайталануына жол береді. Мысалы клиент бір тапсырыспен
бірнеше зат, дәлірек айтсақ үш түрлі бұйым алатын болса OrderInfo кестесінде бұл
клиент туралы мәліметтер (Company, City, Country) үш жолға қатар енгізіледі, ал осы
клиент келесі күні тағы да зат алатын болса бұл белгілі мәліметтер тағы да қайталанып
жазылады; бұл артық мәліметтер қайшылығы деп аталады. Тура осылай клиенттер бір
затты алған сайын бұл заттың аты мен бағасы (ProductName, UnitPrice) қайталанып
жазыла береді. Бұл жағдай кестеде бірталай қайшылықтардың орын алуына әкеп
соқтырады:
1. ДБ-на клиент туралы мәліметтер бұл клиент зат алғаннан бастап енгізіледі; әлі
тасырыс жасап үлгермеген, бірақ клиент болып тіркелген клиенттер туралы мәліметтер
ДБ-нда жоқ;
2. Бұл кестеден тапсырыс түскен зат туралы жазбаны ӛшірсе, клиент пен тапсырыс
туралы мәліметтер де ӛшіп қалады. Мысалы, бір клиент осы уақытқа дейін бір ғана зат
алып, әлі толық сауда жасап үлгермесе, бұл зат туралы жазбаны ӛшіргенде ДБ-ндағы сол
клиент туралы бар мәліметтер ӛшіп қалады.
3. Егер клиенттің тұратын қаласы ӛзгерсе осы кестедегі оған сәйкес барлық
жолдарда (мысалы 1000 жол) қаланы ӛзгерту керек болады.
Бұл қайшылықтар кілт емес жиектердің құрама кілттен жартылай тәуелді
болуларының салдарынан туындап тұр. 2NF осындай қайшылықтардың кейбіреулерін
жоюға мүмкіндік береді, сондықтан 1 NF-тен 2 NF-ке ӛтуді жалғастырамыз: 1NF-тен 2NF-
ке кӛшу үшін келесі шарадарды орындаса болады:
1. Кестенің құрама кілт жиектерін кілт емес жиектер жартылай тәуелді болатын
бӛліктерге жіктеу.
2. Әрбір осындай бӛліктерден жаңа кесте анықтау (әрине мұндай кестенің кілті
алғашқы кестенің құрамындағы жиек (жиектер) болып табылатыны анық).
3. Алғашқы кестеден жаңа кестелерге шығарылған сыртқы кілттен ӛзге барлық
жиектерді ӛшіру.
Осы оймен OrderInfo кестесін ӛзара байланыстағы бұйымдар, тапсырыс және
жіберілген заттар туралы Product, Order және OrderProduct кестелеріне жіктеуге болады
(15 - сурет).
10 - суретте кӛрсетілген OrderInfo кестесінің мазмұнын15 - суретке сәйкес 16, 17,
18-суреттеріндегі кестелерден кӛруге болады.
Order OrderProduct Product
OrderID(PK) OrderID (PK,FK) ProductID(PK)
ProductID(PK,FK)
CustomerID
Company Quantity ProductName
City UnitPrice
Country
OrderDate
OrderSum
15 - сурет. 2NF - ке келтірілген OrderInfo кестесі
O C C Ci C Orde Pr Prod U
rde ust ompan ty ountr r oduct uct nit
rID om y y Date ID Name Price
er
ID
1 1 Б Та Қ 01.05 1 Күрі 10