Негiзгi түсiнiктер
Қарым қатынастың негiзгi операциялары
2.1 Реляционды алгебрадағы теоретикалық көпшелiк операйиялар
2.2 Релциондық алгебраның арнайы операциялары
2.3 Релциондық аудару
Релциондық модельдегi мәлiметтердi манипуляциялау тiлi
QBE үлгiсi бойынша сұраныс тiлi
Негiзгi түсiнiктер
Реляциондық мәлiметтер базасы кейбiр пәндiк облыстарында уақыт бойынша өзгеретiн қарым қатынастардың жиынтығы ретiнде көрiнедi. Қатынастар жиынтығы пәндiк облысындағы объект туралы мәлiметтердi сақтауға және оларды модельдеуге мүмкiндiк бередi. Релционды модельдiң элементтерi келесi кестеде көрсетiлген.
Реляционды модельдiң элементтерi
|
Танысу үлгiсi
|
Қатынас
|
Кесте
|
Қатынас сызбасы
|
Кестенiң бағана басындағы жолы
|
Кортеж
|
Кестенiң жолы
|
Мәнi
|
Объектiнiң қасиетiн бейнелеу
|
Атрибуты
|
Кестедегi бағананың басы
|
Домен
|
Атрибуттың көптелген мүмкiн мағыналары
|
Атрибуттың мағынасы
|
Жазылу жолының мағынасы
|
Мәлiметтер үлгiсi
|
Кестедегi элементтердiң мағынасының үлгiсi
|
|
|
Мәнi мәндерi туралы мәлiмет қатынаста сақталынған атрибуттардың мәндерiн сипаттайтын қасиеттерiмен ұсынады. Кестенiң құрылымында әрбiр атрибут аталынады және оған кестенiң әрбiр бағаналарының басы сәйкес келедi. Көптеген атрибуттар қарым қатынастарында дәреже немесе ранг деп аталады.
Домен өздiгiмен көптеген барлық мүмкiн қатынас атрибуттарының нақты мағыналарын ұсынады. Мысалы, қатынас үшiн 3.5 суретте көрсетiлген нақты пәндер талдағы лекция үшiн, 3 домен бар. Доменде барлық пәндердiң атаулары бар, 2 доменде – оқытушылардың фамилиясы, берiлген бағытта жүргiзiлетiн, ал 3 домен – тәртiптердi үйрену семестрi.
Қатынас кiлтi дегенiмiз бiр мағыналы нақтылы кез келген кортежiндегi қатынас атрибуты болып аталынады. Кiлт құрастырылған болуы мүмкiн, яғни бiрнеше атрибуттардан тұруы. Кiлттiң болу шартында қатынас кортеждердiң бiрдей элементтердi құрамайтын кортеждерден тұратын көпшiлiк.
Қатынас деп санауға мүмкiндiк беретiн кесте шарттары:
Кестенiң барлық жолдар ерекше болуы тиiс, себебi бiрдей алғашқы кiлттерi бар жолдар болуы мүмкiн емес.
Бағаналар атауы әртүрлi болуы тиiс, ал мағынасы қарапайым болады.
Кестенiң барлық бағаналар атауы бiр құрылымға ие болуы керек.
Кестеде жолдарды орналастыру тәртiбi еркiн болуы тиiс.
Қатынастар сызбасы эквиваленттi болады, егер олар бiрдей дәрежелi және бiр жерде бiрдей салыстырмалы атрибуттар болатын болса.
2.4.2 Қарым қатынастың негiзгi операциялары
Қатынастардан керектi мәлiметтердi алу үшiн мәлiметтердi басқару тiлi қажет. Мәлiметтердi басқару тiлiнiң басты бөлiгi – сұраныстарды құру болып табылады. Мұны зерттеу үшiн 3 абстрактiлi теория жасалып шығарылған:
Реляциондық алгебра
Ауыспалы – кортеждi реляциондық аудару
Ауыспалы – домендi реляциондық аудару
Бiрiншi типтi сұраныс тiлi – алгебралық тiлдер – Қатынаста қолданылатын арнайы операторлар арқылы сұраныстар көрсету мүмкiндiгi.
Екiншi және үшiншi типтi тiлдерге – аудару тiлдерi – қажеттi кортеждер қанағаттандыратын арнайы предикат арқылы сұранысты жүзеге асыру. Реляционды алгебра негiзiнде жасалған сұраныс тiлдерi кең таралмады. Реляционды алгебра варианты Э. Кодд операцияларының кемшiлiктерi болды. Алгебра деп операциялар жиынтығынан тұратын объектiлер көптiгi саналады. Реляционды алгебра негiзiнде жасалған сұраныс тiлi ISBL болып табылады.
2.4.3 Реляционды алгебрадағы теоретикалық көпшелiк операциялар
Бiрдей өлшемдi R1 және R2 сәйкес қатынастардың бiрiгуi R қатынасы деп аталады. Алғашқы қатынастың барлық элементтерiнен құрылады. (R=R1UR2).
Бiрдей өлшемдi R1 және R2 сәйкес қатынастардың айырмасы R қатынасы деп аталады. R1-ге қатысты және R2-ге қатысты емес көптеген кортеждерден тұратын дене. R2(R=R1-R2).
Бiрдей өлшемдi R1 және R2 екi сәйкес қатынастардың қиылысы R қатынасын тудырады. R1 және R2 қатынастарын да жататын кортеждерден тұратын дене. R=R1(R1-R2).
k1 дәрежелi R1 қатынасы және k2 дәрежелi R2 қатынасының көбейтiндiсi, бiрдей есiмдi атрибуттары жоқ, алғашқы k1 кортеждер элементi R1 қатынасына, соңғы k2 элементi R2 қатынасына тиiстi. (R=R1*R2)
2.4.4 Реляциондық алгебраның арнайы операциялары.
f формуласы бойынша R қатынасының таңдауы дәл сондай атауы мен денесi бар жаңа қатынасты көрсетедi. Формуланы жазу үшiн атрибуттар атауы, константалар, логикалық операциялар (AND-және, OR-немесе, NOT-емес, WHERE-әзiрше), салыстыру операциялары және жақшалар қолданылады.
R қатынасының X,Y,…,Z(A[X,Y,…,Z]) атрибуттарына проекциясы [X,Y,…,Z] көптiгi R қатынасының атрибуттар атауының толық тiзiмiнiң көптiк асты болып табылады. Проекция операциясының мәнi R қатынасынан белгiленген бағаналар таңдалып, белгiленген тәртiппен iрiктеледi. (R=Пi1,i2,…ir(R), мұнда R қатынасының бағаналар номiрi).
R1 қатынасының A және B атрибуттары R2 қатынасының B атрибуттарына бөлiндiсi, A және B жай немесе күрделi атрибуттар, B атрибуты – бiр доменде анықталатын ортақ атрибут, R қатынасы A атауы және r кортежiнен тұратын қатынас. R=R1[B:B]R2,R қатынасының сызбасы R(A) болады.
Cf (R1, R2) қосуы R1 және R2 қатынасының формула бойынша R қатынасын көрсетедi. Мұны R1 және R2 көбейту арқылы алуға болады. Формуланы жазу әдiсi сұрыптау операциясы сияқты. Егер f теңдiктiң арифметикалық операциясы болса, онда бұл операция экви қосу деп аталады.
Мысалдар:
Кез келген пән бойынша факультетте емтихан тапсыруды қарастырайық. R1 қатынасы кесте бойынша емтихандар тапсырған студенттер тiзiмi, R2 қатынасы кесте бойынша бiрақ қайта тапсырған студенттер тiзiмi, R3 емтихан тапсырған студенттер тiзiмi.
R1=(ФИО, Ном.зач.кн., тобы, бағасы)
R2=(ФИО, Ном.зач.кн., тобы, бағасы)
R3=(ФИО, Ном.зач.кн., тобы, бағасы)
Келесi сұрақтарға жауап берейiк:
Емтиханды екi рет тапсырса да тапсыра алмаған студенттер тiзiмi
R=R1∩R2\R3
Емтиханды бiр рет тапсырған студенттер тiзiмi
R=(R1\R2∩R3)(R2\R1∩R3)
Емтиханды екi рет тапсырған студенттер тiзiмi
R=R1∩R2∩R3
Емтиханды бiр рет тапсырып тапсыра алмаған студенттер тiзiмi
R=(R1\R2)U(R2\R1)\R3
Тiзiмнен емтиханды “өте жақсы” деген бағаға тапсырған студенттердi таңдау
R4=R3[бағасы = “өте жақсы”]
314 топтың емтихан тапсырған барлық студенттердiң фамилиясын енгiзу.
R=R3[тобы =314]
R6=R5[ФИО]
R қатынасының қосымша қатынасында барлық студенттердiң топ бойынша тiзiмi болсын R (ФИО, Ном.зач.кн., Группа). Емтиханды толық тапсырған студенттердi таңдау.
R7 =R3[ФИО, Ном.зач.кн.: ФИО, Ном.зач.кн.] R. R7 сызбасы (тобы, бағасы).
2.3 Реляциондық аудару
Реляциондық алгебра мен реляциондық аудару арасындағы айырмашылық, бiрiншiсiнде, нәтиже алу үшiн операциялар тобы көрсетiлген, екiншi жағдайда тек қатынастардың қасиеттерi берiлген. Тiлдiң мысалы – QUEL.
Реляциондық модельдегi мәлiметтердi басқару тiлi.
Сұраныс өз алдына сақталған мәлiметтердi модификациялау, жою және таңдау бойынша жасалатын операциялардың құрамын анықтайтын арнайы сипатталған қажеттi.
Сұранысты дайындау үшiн оны сипаттауға арналған екi тiл бар:
QBE (Query By Example) – үлгi бойынша сұраныс тiлi
SQL (Structured Query Language) – сұраныстың құрылымды тiлi
QBE – сұранысты қолмен немесе визуалды түрде құралуын айтады, ал SQL – сұранысты программалауды бiлдiредi.
Үлгi бойынша сұраныс тiлi QBE
QBE – нiң теоретикалық негiзi болып ауыспалы домендi реляциондық аудару болып саналады. QBE тiлi мәлiметтер базасында күрделi сұранысты жасауға мүмкiндiк бередi. Мұндай тәсiл сұранысты жоғары дәрежеде орындауға мүмкiндiк бередi. Әрбiр қазiргi таңдағы реляциондық мәлiметтер базасын басқару жүйесiнiң өзiнiң QBE тiлi бар. QBE – нiң алғашқы варианты 1975 – 1977 жж. Злуфф енгiзген.
QBE тiлiнде сұраныстарды бiр кестелiк және көп кестелiк етiп құрауға болады. Жаңа бет құру, таңдау, мәлiметтердi аудару, беттi жою, мәлiметтердi модификациялауға болады. Жасалған сұраныстың нәтижесi болып жаңа кесте саналады.
Сұраныс формасы кесте түрiнде болады және алаң атын таңдауға мүмкiндiк бередi. QBE- де қажеттi мәлiметтер базасының кестесiн бiлу үшiн кесте атауын таңдау сұранысы орындалады. Алаң атаулары кестеге қолмен немесе автоматты түрде енгiзiледi.
2.5 SQL тілі. Мәліметтер базасының сұрауын құру
1. Жалпы тілге сипаттама
2. SQL тілінде мәліметтердің түрлері
3. Тілдің негізгі операторлары
1. SQL тілінің құрылымдық сұрауы реляционды есептеулер мен ауыспалы кортеждер тілі бірнеше стандарттары бар,көбінесе қолданылатын олар SQL-89 және SQL-92.
SQL тілі кестелермен операциялар жасау кезінде қолданылатыны- анықталу кестенің мәліметтер операциясы (құру,өшіру,құрылымын өзгерту) және мәліметтердің- мәліметтермен манипуляция жасау (таңдау,өзгерту,қосу,өшіру) т.б.көптеген операциялар бар.Мысалы,мәліметтер базасының әкімшілігі транзакцияларды басқару құралы. SQL процедурлық емес тіл болып келеді және басқару операторлары,подпрогамм мекемесі,енгізу-шығару және т.б.Соған байланысты SQL автономды қолданылмайды,әдетте ол орнатылған тілдер арасында СУБД-ны бағдарламалау(мысалы,Visual Basic for Application СУБД Access ) SQL орнатылған.
Орнатылған SQL-ді негізгі 2 әдіс бойынша ажыратады:статистикалық және динамикалық.
Статистикалық тілді қолданғанда бағдарламаның мәтіні SQL тілін шақыру функциясы орындалып жатқан модельге компиляциядан кейін қатаң қосылады.
Динамикалық тілді қолғанда динамикалық шақыруларды орнату ұйғарылады. SQL функциясында және осы шақырулардың интерпретациясы, мысалы,өшірілген мәліметтер базасын үндеу,осы бағдарламаны орындау кезінде болады.Бұл әдіс мынандай жағдайда қолданылады,егер қосымшалар алдын-ала белгісіз болғанда SQL шақыру түрі және қолданушы арасында диалог құрылады.
Мәліметтерді таңдау қорытындысында бір немесе бірнеше кестелерде көптеген жазулар болуы мүмкін,оны ойын деп атаймыз.
Ойын ол кесте болып көрінеді, сұраулар нәтижесінде құрылады.
SQL тілін тиімді жұмыс істеу үшін курсор деген мағынаны енгіземіз. Курсор дегеніміз нұсқау сияқты,өңдеу кезінде жазулар жинақтарын орын ауыстыруын қолданылады.
Курсордың сипаттамасы мен қолданылуы келесідей орындалады. Бағдарламаны сипаттау бөлігінде ауыспалы түрлі курсор байланыс қызметін атқарады(CURSOR) SQL операторымен (әдетте SELECT операторымен).Бағдарламаның атқару бөлігінде курсордың ашылуы болады (OPEN <курсордың аты>), жазулар бойынша курсордың жылжуы(FETCH<курсордың аты>), қатысты өңдеумен қатар жүретін, (CLOSE<курсордың аты>).
Жалпы жағдайда СУБД-ның әр түрінде SQL тілінде мәліметтердің түрлері 89 мәліметтер түрін қолданылады:
CHAR(n)-таңбалы жолдардың тұрақты ұзындығы n таңбасында (әр көрсеткішке n таңбасы белгіленіп отырады);
VARCHAR(n)- таңбалы жолдардың ауыспалы ұзындығы;
NCHAR(n) – жолдардың ықшамдалу таңбасы тұрақты ұзындығында;
NCHAR VERYING(n)- жолдардың ықшамдалу таңбасы ауыспалы ұзындығында;
NUMERIC[(n,m)]-нақты сандар
n- сандардың жалпы сандағы саны
m- ондық нүктеден солға қарай сандардың көлемі
DECIMAL [(n,m)] DEC [(n,m)]- нақты сандар
n- сандардың жалпы сандағы саны
m- ондық нүктеден солға қарай сандардың көлемі
INT-бүтін сандар
SMALINT- бүтін сандардың кіші диапозонында
FLOAT [(n)]- қалқымалы үтір түрінде сақталатын үлкен нақтылық сандар
n-бір санның астында сақталған резервтелген байттар саны;
REAL- сандардың заттық түрі,қалқымалы нүктелермен сәйкес келу сандары, кіші нақтылығын FLOAT пен салыстырғанда
BIT(n)- биттердің жолдары тұрақты ұзындығы
BIT VERYING(n)- биттердің жолдары ауыспалы ұзындығы;
DATE- күнтізбелік уақыт;
TIMESTAMP- мерзім және уақыт;
INTERVAL- уақытша интервал.
Көптеген SQL тілінің кішігірім сипаттамасы стандартты интерфейсте орындалады.ODBC ( Open Database Connectivity – ашық мәліметтер базасы мен қосылуы) Microsoft фирмасы.
Жоғарыда көрсетілгендей, SQL тілінің операторларын 2 шартты тілшеге бөлеміз: мәліметтерді анықтау тілі ( DDL – Data Definition Language ) және мәліметтерді басқару тілі ( DML – Data Manipulation Language). Негізгі операторлардың тілі 5.1.-кестесінде көрсетілген.
Формат және негізгі керекті операторлардың мүмкіндіктерін көріп, ерекше операторды кестеде мынандай <<*>> таңбаменен белгіленген.
Кестені құру операторы мынандай формат түрінде:
CREATE TABLE <кестенің аты>
(<бағананың аты> < мәліметтің түрі> [ NOT NULL]
[,<бағананың аты> < мәліметтің түрі> [ NOT NULL]]…)
Түрі
|
Аты
|
Түсініктеме
|
DDL
|
CREATE TABLE
|
Кестені құру
|
DROP TABLE
|
Кестені өшіру
|
ALTER TABLE
|
Кестенің құрылымын өзгерту
|
GREATE INDEX
|
Индекс құру
|
DROP INDEX
|
Индексті өшіру
|
GREATE VIEW
|
Ойын құру (виртуальді кесте)
|
DROP VIEW
|
Ойынды өшіру
|
GRAND*
|
Артықшылықтар арнауы
|
REVOKE
|
Артықшылықтарды өшіру
|
DML
|
SELECT
|
Жазуларды таңдау
|
UPDATE
|
Жазуларды өзгерту
|
INSERT
|
Жаңа жазуларды қою
|
DELETE
|
Жазуларды өшіру
|
Кестені құру кезінде өзге жолдарға қосымша бақылау ережесі болады, мысалы, NOT NULL -бос емес, оған белгілі бір мағына болуы керек.
Кестенің құрылымын өзгерту операторы мынандай формат түрінде:
ALTER TABLE <кестенің аты>
( {ADD, MODIFY, DROP} < бағананың аты > [< мәліметтің түрі>]
[ NOT NULL]
[,{ADD, MODIFY, DROP} < бағананың аты > [< мәліметтің түрі>]
[ NOT NULL]…)
Кестенің құрылымының өзгеруі мынадан тұрады: қосу кезінде – ADD, өзгерту кезінде - MODIFY, өшіру кезінде – DROP бір немесе бірнеше кестенің бағанасын өзгерте алады. Бағананы өшіру кезінде мәліметтің түрін көрсету қажет емес.
3. Кестені өшіру операторы мынандай формат түрінде:
DROP TABLE <кестенің аты>
Оператор көрсетілген кестелерді өшіре алады.
4. Индекс құру
Берілген кестеге индекс құрып, бірінші бағанаға өсу бойынша іріктеу жасау керек, ал екінші бағанаға кему бойынша іріктеу жасау керек. Индекстің аты таңба арқылы толықтырылады_indx tabl_indx. Индексті құру операторының түрі:
GREATE INDEX <индекстің аты>
ON <кестенің аты>
( <бірінші бағананың аты> [ASC/DESC]
[,<екінші бағананың аты >[ASC/DESC]…)
5. Индексті өшіру.
DROP INDEX <индекстің аты>
Бұл оператор құрылған индексті өшіруге рұқсат етеді.
6. Ойын құру операторы мынандай формат түрінде:
GREATE VIEW <ойынның аты>
[ (<бағананың аты> [,<бағананың аты>]...) ]
AS < SELECT операторы >
Бұл оператор ойын құрүға рұқсат етеді.Егер бағаналардың аты ойында көрсетілмесе,онда сұрауда көрсетілген бағаналардың аты қолданылады, SELECT операторы арқылы жүзеге асырылады.
7. Ойынды өшіру операторы мынандай формат түрінде:
DROP VIEW <ойынның аты>
8.Жазуларды таңдау операторы мынандай формат түрінде:
SELECT [ ALL\DISTINGT ]
<мәліметтердің тізімі>
FROM <кестенің тізімі >
[WHERE<таңдау шарттары>]
[GROUP BY<бағананың аты> [,<бағананың аты>]... ]
[HAVING <іздеу шарттары >]
[ORDER BY <ерекшелігі>[,< ерекшелігі >]…]
SQL операторының ең маңызды операторы болып табылады.Функционалды қабілеттілігі өте жоғары.Ең негізгілерін қарастырайық . SELECT операторы кестедегі таңдаулар мен мәліметтерді анықтайды.Оператордың орындалуының қорытындысы жауапты кесте құру, ALL қайталанатын жолдары бар, DISTINGT қайталанатын жолдары жоқ.Жауапты кестеге барлық жолдар кіргізіледі, онымен қатар қайталанатын жолдарда кіргізіледі.Мәліметтерді таңдау кезінде бір немесе бірнеше кестелерде қатысатын жазулар FROM операндасының тізумунде атап өтеді.
Мәліметтер тізімінде бағаналардың аты болу мүмкін, сұрауда қатысатын және де бағаналардың белгіленуі (+,-,*,/ және т.б.).
Мәліметтер тізімін қолданған кезде, бірнеше кестелердің бағаналардың атының құрылымдық түрі: <кестенің аты>, <бағананың аты>.
WHERE операндасы шарттарды қояды және жауапты кестедегі жазулар қанағаттандыру қажет. <таңдау шарттары> ұғымы логикалық болып келеді.Оның элементтері:бағананың аты, салыстыру операциясы, арифметикалық операциялар, логикалық байланыс ( И, ИЛИ ,НЕ ),жақшалар,арнайы функциялар LIKE, NULL, IN және т.б. болуы мүмкін.
GROUP BY операндасы топтағы көптеген жазуларды қорытындысын көрсете алады.Топ дегеніміз- бірдей мағынасы бар жазулар бағаналары анықталынған кілтті сөзі GROUP BY.Таңдалған топтар логикалық ұғымы WHERE және HAVING-де қолданылады және де топтар бойынша берілген операцияларды орындайды.
Логикалық және арифметикалық ұғымдары келесі топтық операцияларға қолдануға болады:AVG (топтың орташа көрсеткіші), MAX (топтың ең жоғары көрсеткіші ), MIN, SUM, COUNT топтың ең кіші көрсеткіштері, барлығы (сумма) және топтың сандық көрсеткіштері.
HAVING операндасы GROUP BY операндасымен бірігіп жүзеге асырылады жәнеқосымша селекция жазулары топты анықтау кезінде қолданылады.Жазу ережесі <іздеу шарттары > және ұқсас ережені қалыптастыру <таңдау шарттары> WHERE операндасы.
ORDER BY операндасы көптеген қорытындыларға іріктеу тәртібін көрсетеді.Әдетте әрбір <ерекшелігі> ұқсас, GREATE INDEX операторының құрылымы сияқты және бірнеше түрін көрсетеді <бағананың аты> [ASC/DESC].
9.Жазуларды өзгерту операторы мынандай формат түрінде:
UPDATE <кестенің аты>
SET <бағананың аты>={<ұғым>,NULL}
[,SET <бағананың аты>={<ұғым>,NULL}...]
[WHERE< шарты>]
UPDATE операторының орындалуы белгілі бір көрсеткіштерді өзгерту болып табылады. Нақты SET операндасы арқылы кестенің бағанасындағы жазуларды, WHERE операндасындағы берілген шарттарды қанағаттандыру арқылы өзгертулер жүзеге асырылады.
Полядағы жаңа көрсеткіштер жазулары бос болуы мүмкін немесе арифметикалық ұғымдар арқылы анықталуы мүмкін. 10.Жаңа жазуларды қою операторы мынандай формат түрінде:
INSERT INTO <кестенің аты>
[( < бағананың тізімі > ) ]
VALUES ( < көрсеткіштердің тізімі > ) және
INSERT INTO <кестенің аты>
[( < бағананың тізімі > ) ]
< SELECT ұсынысы >
1-ші формат түрінде INSERT операторы бағана арқылы берілген жаңа жазуларды қосу.Бағаналардың атын анықтау тәртібі VALUES операндасындағы тізіммен берілген көрсеткіштер сәйкес болу керек. Егер < бағананың тізімі > бос болса, онда тізімдердің көрсеткіштері барлық мағыналары бағананың тәртібімен кесте құрылымында болуы қажет.
2-ші формат түрінде INSERT операторы берілген кестеге жаңа жазуларды қосу, SELECT ұсыныс көмегімен басқа бір кестеден алынған жазуларды қоса аламыз.
11.Жазуларды өшіру операторы мынандай формат түрінде:
DELETE FROM <кестенің аты>
[WHERE< шарты>].
Достарыңызбен бөлісу: |