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
   18   19   20   21   22   23   24   25   26   27   28