Реляциялық есептеу.
Реляциялық есептеу, реляциялық алгебраға қарағанда, кестені бір
сұраныстың көмегімен анықтайды. Реляциялық есептеуде сұраныс келесі
түрде беріледі:
{мақсаттық тізім: анықтаушы өрнек}
Мақсаттық тізім реляциялық есептеудегі сұраныстың шешімі болып
табылатын кестенің атрибуттарын (бағандарын) анықтайды.
Анықтаушы өрнек шешу кестесінің элементтері қанағаттандыруға тиіс
болатын шарттарды береді. Фигуралы жақшалар шешу кестесіндегі
жолдардың көптігін білдіреді. Еркін түрдегі жолды белгілеу үшін латын
алфавитінің кіші әріптері қолданылады. Мысалы, «Орион» фирмасының
сауда агенттерінің қайсысы Лондонда тұрады деген сұраныс келесі түрде
беріледі:
{r.Summ, r.Sname:=r IN Salespeople AND r.City=”London”}
Сұраныс нәтижесінде келесі кесте пайда болады.
Summ Sname
1001 Pal
1004 Smith
Бұл мысалда реляциялық есептеудің сұранысы реляциялық алгебраның
келесі екі амалына – таңдау және проекцияны құруға теңбе-тең болады.
A=select(Salespeople: City=London), B=A[Summ, Sname]
Тұтастай алғанда жоғарыда көрсетілген мысалдар тәрізді
сұраныстарды, жалғау және бөлу амалдарынан басқа, реляциялық
алгебраның амалдарымен орындауға болады. Реляциялық есептеуде қосу
және бөлу амалдарына ұқсас келетін әрекеттерді орындау үшін сәйкесінше
бар болу кванторы мен жалпыға бірдей кванторы қолданылады.
Реляциялық есептеуде болмыс кванторы дегеніміз – бұл берілген
шартты қанағаттандыратын ең болмағанда бір жолдың болуын білдіретін
өрнек. Егер де, мысалы, 1002 агентіне сұраныс жасаған клиенттерді атап
шығу қажет етілсе, онда келесідегідей сұраныс жасау қажет:
{r.Cname:=r IN Customers AND EXISTS s IN Orders (s.Cnum=r.Cnum and
s.Snum=1002)}
Мұндай сұраныс реляциялық алгебраның қосу және проекцияны құру
амалдары орындайтын әрекетті орындайды.
Sname
Lewe
Grass
A=Join (Customers Orders: Customers.Cnum=Orders. Cnum and
Orders.snum=1002)
B=[Cname]
Реляциялық есептеудегі жалпыға бірдей кванторы – бұл белгілі типтегі
әрбір жолда қолданылатын шартты білдіретін өрнек. Мысалы, әрбір
клиенттен қай агент тапсырыс алды? Сұраныс келесі түрде болады.
{r.Snum, r.Sname: r IN Salespeople AND s IN Orders AND THERE
EXISTS c IN Customers (r.Snum = s.Snum) AND (c.Cnum = s.Cnum)}
Реляциялық есептеу – қалай қол жеткізуге болатынын емес, нені
орындау қажет екендігін тұжырымдауға мүмкіндік беретін процедуралық
емес тіл. Реляциялық есептеу, реляциялық алгебра сияқты теориялық тіл
болып табылады және логикалық сипаттамаларға негізделген реляциялық
мәліметтер қорының кестелерін, олардың физикалық құрылымына қатыссыз
манипуляциялауға арналған. Реляциялық есептеу лексикалық тұрғыдан
реляциялық алгебраға барабар, яғни ол реляциялық алгебра шешетін есепті
шешуге мүмкіндік береді.
Қалыптандыру.
Мәліметтер қорын әзірлеу, жобалау кезінде кестелер белгілі бір
талаптарды қанағаттандыруы, яғни стандарттық түрге ие болуы тиіс. Бұл
талаптар қалыпты форма деп, ал қалыпты түрге келтіру үдерісі – қалпына
келтіру деп аталады. Қалпына келтірілмеген кестелерді реляциялық
алгебраның әрекеттері дұрыс өңдемейді. Мәліметтер қорының кестелері 4
қалыпты түрге сәйкес келуі тиіс.
Алғашқы қалыпты форма атрибуттардың барлық мәндері жиындар
емес, қарапайым шамалар болуға тиіс болатынын ескереді. Мысалы, келесі
түрдегі жазбаға
0023003 {607.1, 160.09} 10/03/2000 2001 1001
жол берілмейді, себебі ол алғашқы қалыпты формаға сәйкес келмейді.
Екінші қалыпты форма. Егер де ешбір кілттік емес атрибуттар кілттің
бөлігіне тәуелді болмаса, реляциялық кесте екінші қалыпты формада болады.
Осылайша, екінші қалыпты форма бастапқы кілт құрамдас болған жағдайда,
былайша айтқанда, бірнеше атрибуттардың жиыны болған жағдайда ғана
бұзылуы мүмкін. Мысалы, келесі кесте,
Clerk Office Name
1004 312 Smith
1001 312 Pol
1004 515 Smith
1001 460 Pol
1001 435 Pol
ондағы Clerk пен Office бастапқы кілт, екінші қалыпты түрде емес,
себебі Name атрибуты Clerk атрибутына тәуелді.
Кесте екінші қалыпты формада болу үшін оны келесі түрде екі кестеге
бөлу керек
Clerk Office
Clerk
Name
1004 312 1001 Paul
1001 312 1004 Smith
1004 515
1001 460
1001 435
Үшінші қалыпты форма. Егер кез келген детерминант кілт болып
табылса, онда реляциялық кесте үшінші қалыпты формада болады.
Детерминант деп кестенің әрбір жолындағы басқа атрибуттың мәнін
анықтайтын атрибут аталады.
Кестені қарастырайық.
Kod Skill Bonus
1004 Manager 3.5
1001 Clerk 3.0
1007 Clerk 3.0
Бұл кестеде Kod бағаны кілт болып табылады және Skill мен Bonus
бағандарын анықтайды. Сонымен қатар, Skill (біліктілігі, разряды) бағаны
кілт болмаса да, Bonus бағанында анықтайтынын көріп отырмыз. Бұл деген
сөз, кесте үшінші қалыпты формада бола алмайды. Бұл мәселені шешу үшін
кестені келесі түрде екі кестеге бөлу керек.
Kod SkillSkill Bonus
1004 Manager Manager 3.5
1001 Clerk Clerk 3.0
1007 Clerk
Төртінші қалыпты форма өзге атрибутқа (көпмәнді байланыстылық)
тәуелді болатын атрибут мәніңің көп рет қайталану мүмкіндігіне жол
бермейді. Мысалы, егер кестеде агент Smith-тің 1001 және 1007
қызметкерлерінің менеджері болып табылатынын, және 2003, 2001, 2004
клиенттерінен тапсырыс алғанын көрсету керек болса, онда келесі кесте
пайда болады.
Name Snum Cnum
Smith 1001 2003
Smith 1001 2001
Smith 1001 2004
Smith 1007 2003
Smith 1007 2001
Smith 1007 2004
Алынған кесте төртінші қалыпты формада емес. Төртінші қалыпты
формаға келтіру, кестені әрбір тәуелді атрибут жеке орналасқан екі кестеге
бөлу арқылы орындалады.
Name SnumNameCnum
Smith 1001 Smith 2003
Smith 1007Smith 2001
Достарыңызбен бөлісу: |