Реляциялық алгебра
Реляциялық алгебра-бір немесе бірнеше қатынастар негізінде берілген қатынастарды өзгертпей басқа қатынасты құруға мүмкіндік беретін амалдардың теориялық тілі.
Амал нәтижесі іштестірілген өрнекті құруға мүмкіндік беретін басқа амал үшін операнда ретінде қолданыла алады(реляциялық алгебраның тұйықтығы).
Реляциялық алгебра барлық корртеждар бір команда арқылы өңделетін тіл болып табылады.
Амалдар жиынын анықтаудың бірнеше варианттары бар. Негізгі бес амалы:
- Таңдау;
- Проекциялау;
- Декарттық көбейтінді;
- Біріктіру.
Осы амалдар негізінде төмендегідей басқа амалдарды алуға болады:
- Айырма;
- Қосу;
- Қиылысу;
- Бөлу.
Таңдау және проекциялау – унарлы, қалғандары – бинарлы амалдар. 13-суретте осы амалдардың нәтижелерінің сызбасы көрсетілген.
Таңдау Проекциялау Декарттық көбейтінді
Нақты қосу Жартылай Сол жағынан
қосу ашық қосу
13-сурет. Операторлар әрекетінің сызба түрінде бейнеленуі
Таңдау
– Таңдау амалы берілген шартты (предикатты) қанағаттандыратын R қатынасының кортеждарынан тұратын қатынасты анықтайды.
Предикатта ˄(And), ˅ (Or), ~ (Not) логикалық амал белгілері қолданыла
алады.
Мысал. Оклады 300-ден жоғары болатын қызметкерлер тізімін алу.
KodS | Lname | Fname | Pol | DR | Dol | ZP | KO |
S21 | Иванов | Иван | М | 01.02.70 | Руководитель | B5 | |
S14 | Сидоров | Стеман | М | 06.05.68 | Менеджер | B3 | |
S41 | Петров | Игорь | М | 02.02.68 | Менеджер | B5 |
Проекциялау
Патр1,…,атрn(R) – Проекциялау амалы атрибуттары атр1, …атрn болатын
және тек унарлы кортеждан құралған қатынасты анықтайды (нәтижеден қайталанатын мәндер алынып тасталынады).
Мысал. Бөлім бар болатын барлық қалалар тізімін алу.
ПCity(Branch)
Нәтиже:
City |
Тюмень |
Нижневартовск |
Ишим |
Надым |
Декарттық көбейтінді
RхS – Декарттық көбейтінді амалы әрбір R қатынасындағы кортежға бір S қатынасындағы кортежді конкатенацияның(яғни жалғастыру) нәтижесі арқылы анықталатын жаңа қатынасты анықтайды.
Егер R қатынасы I кортеж бен M атрибуттан құралса, ал S – J кортеж бен N атрибуттан құралса, онда RхS қатынасы IхJ кортеж бен M+N атрибуттан атрибуттан құралады. Егер кіріс қатынастардағы атрибуттар бірдей атпен аталса, онда қорытынды қатынаста қатынас аты префикс есебінде тіркеліп жазылады(мысалы, Branch.City).
Мысал. Жылжымайтын мүлік обектілерін қарап шыққан арендаторлар тізімін алу
(ПKodR,Name(Renter))х(ПKodR,KodP,Comment(Viewing))
Нәтижесі:
KodR | Name | Viewing.KodR | KodP | Comment |
R76 | Саблев Иван | R56 | P14 | Мала |
R76 | Саблев Иван | R76 | P04 | Далеко |
R76 | Саблев Иван | R56 | P04 | |
R76 | Саблев Иван | R62 | P14 | Дорого |
R76 | Саблев Иван | R56 | P36 | |
R56 | Рубин Степан | R56 | P14 | Мала |
R56 | Рубин Степан | R76 | P04 | Далеко |
R56 | Рубин Степан | R56 | P04 | |
R56 | Рубин Степан | R62 | P14 | Дорого |
R56 | Рубин Степан | R56 | P36 | |
R74 | Кротова Ирина | R56 | P14 | Мала |
Және т.б. |
Бұл түрдегі қатынаста көп артық ақпараттар бар. Мысалы, бірінші кортежда KodR және Viewing.KodR өрістерінің мәндері әртүрлі. Ізделініп отырған қатынасты алу үшін KodR=Viewing.KodR предикатымен таңдау амалын қолдануымыз керек:
σKodR=Viewing.KodR((ПKodR,Name(Renter))х(ПKodR,KodP,Comment(Viewing)))
Бұл амалдардың нәтижесі:
KodR | Name | V.KodR | KodP | Comment |
R76 | Саблев Иван | R76 | P04 | Далеко |
R56 | Рубин Степан | R56 | P14 | Мала |
R56 | Рубин Степан | R56 | P04 | |
R56 | Рубин Степан | R56 | P36 | |
R62 | Зимина Елена | R62 | P14 | Дорого |
Біріктіру
R S - Біріктіру амалы әрбір R және S қатынасының кортеждары қайталанатын мәндері алынып тасталып кірістірілген жаңа қатынасты анықтайды. Мұнда R және S қатынасы біріктіруде үйлесімді болуы – сәйкес домендерінде бірдей атрибуттар болуы тиіс.
Мысал. Агенттіктің бөлімдері немесе жылжымайтын мүлік объектілері бар қалалар тізімін алу..
ПCity(Branch) ПCity(Prorerty_Rent)
Нәтижесі:
City |
Тюмень |
Нижневартовск |
Ишим |
Надым |
Сургут |
Айырма
R-S -Айырма амалы S қатынасында жоқ R қатынасындағы кортеждар кірістірілген жаңа қатынасты анықтайды. Мұнда R және S қатынастары үйлесімді болуы керек.
Мысал. Агенттіктің жылжымайтын мүліктері орналасқан, бірақ бөлімдері жоқ қалалар тізімін алу.
ПCity(Prorerty_Rent) - ПCity(Branch)
Нәтижесі:
City |
Сургут |
Қосу амалы
Егер қолданушыға берілген шартты қанағаттандыратын декарттық көбейтіндінің белгілі бір бөлігі ғана керек болса, негізгі амалдардың бірі қосу амалы қолданылады. Қосу амалының бірнеше түрі бар:
тета – қосу;
нақты қосу;
сыртқы қосу;
жартылай қосу.
Тета-қосу.
R |><| FS - Тета-қосу амалы декарттық көбейтіндіден F предикатын қанағаттандыратын кортеждардан құралған қатынасты анықтайды. F предикаты R.ai S.bi түрінде болады,мұндағы - < | <= | >= | = | ~= амалдарының бірі.
Егер F предикаты тек = амалынан құралса, онда қосу эквиваленттік бойынша қосу амалы деп аталады.
Қатынасты базалық амалдар негізінде де жазуға болады:
R |><| FS = σF(Rх)
Мысал. Жылжымайтын мүліктерді қарап шыққан арендаторлар тізімін алу
(ПKodR,Name(Renter)) Renter.KodR= Viewing.KodR (ПKodR,KodP,Comment(Viewing))
Нәтижесі: жоғарыда көрсетілген.
Нақты қосу.
R|><|S - Нақты қосу амалы – нәтижеден әрбір жалпы атрибуттың бір экземпляры алынып тасталынатын барлық жалпы атрибуттарда орындалатын
эквиваленттік бойынша қосу амалы.
Мысал. Жылжымайтын мүліктерді қарап шыққан арендаторлар тізімін алу
(ПKodR,Name(Renter)) |><| (ПKodR,KodP,Comment(Viewing))
Нәтижесі:
KodR | Name | KodP | Comment |
R76 | Саблев Иван | P04 | Далеко |
R56 | Рубин Степан | P14 | Мала |
R56 | Рубин Степан | P04 | |
R56 | Рубин Степан | P36 | |
R62 | Зимина Елена | P14 | Дорого |
Сыртқы қосу
R <|S - R қатынасының кортеждарының S қатынасындағы жалпы атрибуттар мәніне сәйкес келмесе, сонымен қатар нәтижелік қатынасқа кірістірілсе сол жағынан сыртқы қосу амалы анықталады. Мәндері болмаса Null мәні қолданылады.
Артықшылығы: сыртқы қосуда R қатынасындағы барлық ақпарат сақталады.
Осыған ұқсас оң жағынан сыртқы қосу және толық сыртқы қосу амалдарын анықтауға болады.
Мысалы. Жылжыматын мұлікті қарап шығу туралы есеп беруді анықтау.
ПKodR,Street,City(Property_Rent) (Viewing))
Нәтижесі:
KodP (код недвижимости) | KodR (код арендатора) | (Заключение) | |
P14 | R56 | 24.05.01 | Мала |
P04 | R76 | 20.04.01 | Далеко |
P04 | R56 | 26.05.01 | |
P14 | R62 | 14.05.01 | Дорого |
P36 | R56 | 28.04.01 |
Жартылай қосу
R |> FS -Жартылау қосу амалы R және S қатынасына да кірістірілетін R қатынанысының кортеждарынан тұратын қатынасты анықтайды.
Жартылай қосу амалын проекциялау және қосу операторлары арқылы
анықтауға болады:
R |> FS = ПA(R |><|FS),
Мұндағы A – R қатынасындағы барлық атрибуттар жиыны.
Мысал. Ақтөбе қласында орналасқан бөлімде жұмыс жасайтын қызметкерлер туралы ақпараттан тұратын есеп беруді құру.
Staff |> Staff.KodO = Branch.KodO and Branch.City=’Тюмень’ Branch
Нәтижесі:
KodS (код) | Lname (фамилия) | Fname (имя) | Pol (пол) | DR (дата р.) | Dol (должность) | ZP (Оклад) | KodO (код отд.) |
S21 | Иванов | Иван | М | 01.02.70 | Руководитель | B5 | |
S37 | Петрова | Татьяна | Ж | 12.11.72 | Агент | B3 | |
S14 | Сидоров | Степан | М | 06.05.68 | Менеджер | B3 | |
S05 | Степанова | Елена | Ж | 16.07.71 | Секретарь | B3 | |
S41 | Петров | Игорь | М | 02.02.68 | Менеджер | B5 |
Қиылысу
R S - Қиылысу амалы R және S қатынасында бар кортеждардан ұралатын қатынасты анықтайды. R және S қатынасы үйлесімді болуы керек.
Қиылысу амалын базалық амалдар арқылы жазуға болады:
R S=R-(R-S)
Бөлу
R S - Бөлу амалы S қатынасындағы барлық кортеждар комбинациясына әйкес келетін С атрибуттар жиынында анықталған R кортеждарынан тұатын қатынасты анықтайды.
Бөлу амалын базалық амалдар арқылы өрнектеп жазуға болады:
T1=ПC( R )
T2=ПC ((SхT1)-R)
R S=T1-T2
Мысал. 4 бөлмелі жылжымайтын мүлік объектлерін қарап шыққан арендаторлар тізімін алу.
(ПkodR,KodP (Viewing)) (ПkodP ( σRooms=4(Property_Rent)))
Нәтиже:
KodR | KodP |
R76 | P04 |
R56 | P04 |
Бақылау сұрақтары:
1. Реляциялық модель деп қандай модельді айтамыз?
2. Реляциялық мәліметтер қорында қолданылатын негізгі терминдер?
3. Реляциялық алгебра дегеніміз не?
4. Реляциялық алгебраның негізгі амалдары қандай?
Әдебиеттер:
[3], [4], [7].
Дата добавления: 2017-01-29; просмотров: 5857;