Алматы энергетика және байланыс институты

Инженерлік кибернетика кафедрасы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МӘЛІМЕТТЕР ҚОРЛАРЫН ЖОБАЛАУ

 

Лабораториялық жұмыстарды орындауға әдістемелік нұсқаулар

(барлыќ мамандық студенттері үшін)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алматы 2004

 

 

ҚҰРАСТЫРУШЫЛАР: Л.К. Ибраева, Е.Г. Сатимова. Мєліметтер қорларын жобалау. Лабораториялық жұмыстарды орындауға єдістемелік нұсқаулар (барлық мамандық студенттері үшін). – Алматы: АЭжБИ, 2004 ж. – 43 б.

 

 

Қазіргі замандағы мәліметтерді өңдеу технологиялар клиент-серверлік архитектурасын қолданады. Бұл технология бойынша “клиенттік” машинадан жіберілетін сұраныстар мәліметтер қорының арнайы серверлерінде өңделіп, ”клиентке” тек қана сұранысты өңдеудің нәтижелері қайталанады. Бұл кезде сервермен қатысуға арналған бір тіл қажет, осындай тіл ретінде SQL таңдалынған.

Єдістемелік нұсқауларда MS SQL Server ортасында мәліметтер қорларын өңдеудің сұрақтары қарастырылған: мәліметтер қорының объектілерін жасау, мәліметтермен әрекет жасау және мәліметтерді табу үшін әр түрлі күрделі сұраныстарды құрастыру.

SQL кестелермен жұмыс жасауға негізделген сондықтан оның күрделі қолданбалы бағдарламаларды жасауға құралдары жоқ. Сондықтан онымен бірге жоғары деңгейлі бағдарламалық тілдер қолданылады. Бір лабораториялық жұмыс Delphi ортасында  “клиенттік” қолданбалы бағдарламасын жасауды қарастырады.

Оқу жоспары бойынша бұл пәнде студенттер өзіндік жұмысты орындаулары керек. Єдістемелік нұсқауда өзіндік жұмысқа тапсырмалар келтірілген.

 

 

 

Пікір беруші: АЭжБИ-дің ИК кафедрасының доценті, т.ғ.к. Ю.В.Шевяков

 

 

 

 

Алматы энергетика және байланыс институтының 2004 ж. жоспары бойынша басылады.

 

 

 

 

 

 

 

© Алматы энергетика және байланыс институты, 2004 ж.

 

 

 

 

МАЗМҰНЫ

б

КІРІСПЕ

4

1 лабораториялық жұмыс. МӘЛІМЕТТЕР ҚОРЫНЫҢ ЖОБАСЫН ӨҢДЕУ, ҚҰРАМЫН ЖАСАУ

 

4

 

1.1. Концептуалды жобалау      

4

 

1.2 Оқу процесс мәліметтерінің концептуалды үлгісі  

5

 

1.3 Концептуалды үлгіні реляциондық үлгіге түрлендіру

7

 

1.4 Лабораториялық жұмысқа тапсырма

11

 

       1.4.1 Мәліметтер қорын жасау      

11

 

       1.4.2 Кестелерді жасау           

12

 

       1.4.3 Кесте құрамын өзгерту

14

 

       1.4.4 Кестелерді жою    

15

 

       1.5 Бақылау сұрақтары

15

2 лабораториялық жұмыс. МӘЛІМЕТТЕРГЕ ӘРЕКЕТТЕРДІ ҚОЛДАНУ

15

 

2.1 Мәліметтерге әрекеттерді қолдану бұйрықтары   

15

 

2.2  Лабораториялық жұмысқа тапсырма 

17

 

2.3 Бақылау сұрақтары

17

3 лабораториялық жұмыс  МӘЛІМЕТТЕР ҚОРЫНА СҰРАНЫСТАР

18

 

3.1 Кестелерден мәліметтерді алу       

18

 

3.2 Мәліметтерді таңдауға шарттарды орнату   

20

 

3.3 Мәліметтерді агрегатты функциялармен қорытындылау

23

 

3.4 Лабораториялық жұмысқа тапсырма

24

 

3.5 Бақылау сұрақтары

25

4 лабораториялық жұмыс КҮРДЕЛІ СҰРАНЫСТАРДЫ ЖАСАУ      

25

 

4.1 Сұраныстарда кестелерді      ұйымадастыру

25

 

4.2 Сұраныс ішіндегі сұраныстарды қолдану

26

 

4.3 Елестетуді жасау және қолдану

30

 

4.4 лабораториялық жұмысқа тапсырма

30

 

4.5.  Бақылау сұрақтары

31

5 лабораториялық жұмыс. САҚТАЛЫНҒАН ПРОЦЕДУРАЛАР МЕН

 ТРИГГЕРЛЕР

 

31

 

5.1 Процедураларды қолдану   

31

 

5.2 Триггерлер

33

 

5.3 Лаборатриялық жұмысқа тапсырма

34

 

5.4 Бақылау сұрақтары

35

6 лабораториялық жұмыс КЛИЕНТТІК ҚОЛДАНБАЛЫ БАҒДАРЛАМАЛАРДЫ ӨҢДЕУ          

 

35

 

6.1 Мәліметтердге DELPHI қолданбалы бағдарламадан қол жеткізу

35

 

6.2 «Education» мәліметтер қоры үшін қолданбалы бағдарлама жасау    

 

36

 

6.3 Лабораториялық жұмысқа тапсырма

40

 

6.4 Бақылау сұрақтары    

41

ӨЗІНДІК ЖҰМЫСҚА ТАПСЫРМА  

41

ӘДЕБИЕТТЕР  ТІЗІМІ

42

                                               КІРІСПЕ                                                                      

Қазіргі жағдайда басқарудың мәліметтік технологиялары реляционды мәліметтік қорларын басқаратын жүйелерде (РМҚБЖ) негізделген. Клиент-серверлік архитектурасында қолданылатын МҚБЖ-лер ішінде көп тараған жүйелері - Microsoft  SQL Server, Oracle, Informix, Sybase SQL Server болып табылады. Бұл МҚБЖ-лер мәліметтік қорларының реляциондық SQL-серверлері болады. Клиент-серверлік архитектурасы бар мәліметтік қорларын басқаратын жүйелерінің өзінің клиенттік бағдарламасы болуы мүмкін. Сонымен бірге бұл мәліметтік қорының серверінің клиенті ретінде басқа МҚБЖ-лер қолдануы мүмкін. Клиенттердің сервермен байланысуы үшін арнайы бағдарламалар өңделген. Microsoft SQL Server жүйесі мәліметтер қорынын өндіріс деңгейінде жасап, қолдануға негізделген. Негізгі міндеті – үлкен корпоративті қорлармен жүмыс жасау. Керекті мәліметтерді қордан табу үшін, арнайы сұраныстар орнатылады. SQL Server-де универсалды сұраныстар тілі ретінде құрамдасқан сұраныстар тілі - SQL (Structured Query Language) қолданылады. Әр түрлі өңдеушілермен жасалған SQL тілінің бірнеше диалекттері бар. SQL-дің соңғы SQL Server 7.0 версиясында Transact SQL диалектісі қолдалынады. Бұл версия  SQL 92 негізделген, ал SQL 92 – қазірдегі ANSI-мен орнатылған стандарт (ANSI – Америкадағы ұлттық стандарттар институты).         Бүгінгі күнде дамыған интерфейсі бар және де оптималданған құрамы бар идеалды мәліметтер қорларын басқаратын жүйесі жоқ. Мысалы, MS Access клиенттік бағдарлама ретінде өте ыңғайлы, бірақ оны негізгі қор ретінде қолдануға болмайды. Ал, SQL Server жүйесінде пайдаланушымен интерфейсі жоқ. Бірақ, бұл жүйеде мәліметтерді сақтап, олармен жұмыс істеуге  көп дамыған құралдары бар.                                                                                                                                            

1  лабораториялық жұмыс. Мәліметтер қорының жобасын өңдеу, құрамын жасау                                                                                                                                                                                                                                 

1.1 Концептуалды жобалау. Мәліметтерге қол жеткізу әдістері соңғы бірнеше он жылдардағы физикалық бағытталған әдістерден қазіргі кездегі мәліметтерді өңдеудің бірнеше түрлеріне дамыған. Қазіргі кездегі реляциондық «революциясының» маңызды аспектісі – мәліметтердің логикалық құрамын  олардың компьютерлік құралдар талап ететін физикалық көрсетулерінен бөлу. Осы идея қабылданып, мәліметтер қорларының үш деңгейлі архитектурасы ретінде ұсынылды. Үш деңгейлі архитектура – концептуалды, сыртқы және ішкі деңгейлерден тұратын мәліметтер қорларының стандартты құрамы.

         Концептуалды деңгейінде мәліметтер қорының концептуалды жобасы өңделеді.  

Концептуалды жобалау пайдаланушының мәліметтік қажеттіліктерін анализдеп, оларға мәліметтердің қажетті элементтерін таңдаудан тұрады. Концептуалды жобалау нәтижесінде концептуалды схема пайда болады яғни мәліметтердің барлық элементтерінің тұтас логикалық бейнелеуі және олар арасындағы қатынастар.         Мәліметтер қорындағы мәліметтерге пайдаланушылардың көз-қарастары сыртқы деңгейді құрастырады.     Ішкі деңгей мәліметтер қорының физикалық түрін анықтайды. Бұл деңгейге пайдаланушының қатынасы жоқ.      Концептуалды жобалау мәліметтер қорының концептуалды схемасын жасаудан тұрады. Бұл қадамда пайдаланушылардың мәліметттерге көз-қарастарының үлгілері жасалынып, олар концептуалды үлгіге түрленеді, сонан соң бұл үлгі мәліметтер қорын құрастыратын мәліметтердің барлық элеметтерінен тұрады.    Концептуалды үлгінің басты элементтері объектілер мен қатынастар болып табылады. Пайдаланушылар үлгіленетін ортаның ішіндегі маңызды деп санайтын заттар объектілерді құрастырады.    Заттардың бір типті жиынтығы объектілік жиынтық болады.                                       

Екі объектілік жиынтықтар элементтерінің арасындағы байлансытар қатынас деп аталады.                      Қатынастың өзі объектілік жиынтық ретінде қарастырылса, ол құрамдасқан объектілік жиынтық болады. Бір объектілік жиынтық элементтерінің басқа объектілік жиынтығы элементтерімен байланыстарының максималды саны қатынастың қуаттылығы деп аталады.                                       Реляциондық үлгілерге қарағанда концептуалды үлгілерді түсіну жеңілдеу, себебі олар заттарға кәдімгідей көз қарасты сақтайды.                                                                                                                                            1.2 Оқу процесс мәліметтерінің концептуалды үлгісі

         Ағынды семестрдің оқу процесінің мәліметтерінен тұратын мәліметтер қорын жасау керек болсын. Ол мәліметтер, мысалы: топтардағы студенттердің тізімдері, оқылатын пәндердің тізімі, кафедралардың мұғалімдерінің тізімдері, әр тобында өтетін лекциялар, практикалық, лабораториялық, т.б. сабақтар туралы мәліметтер,         өткізілген сабақтар бойынша емтихандар, сынақтар туралы мәліметтер. Мәліметтер қорын  “Оқу процесі” деп атайық. Бір типті заттар бөлек объектілік жиынтықтарда сақталынатын болғандықтан, келесі объектілік жиынтықтарды құраcтыруымызға болады:

ТОБЫ, СТУДЕНТ,  КАФЕДРА, МҰҒАЛІМ, ПӘНДЕР, САБАҚҮРЛЕРІ.                          

Бұл объектілік жиынтықтардың кей-бір атрибуттарын анықтайық:         

ТОБЫ     -  Тобы_аты, Студенттер_саны, Курсы.                                       

СТУДЕНТ   - Студент_фамилиясы, Студент_аты, Студент_әкесінің_аты,                                 

Студент_туғанүні, Студент_адресі.                                               

КАФЕДРА - Кафедра_аты, Кафедра_телефоны, Меңгеруші_аты_жөні.      

МҰҒАЛІМ - Мұғалім_фамилиясы,    Мұғалім_аты, Мұғалім_әкесінің_аты,                    

Мұғалім_қызметі, Мұғалім_ғылымәрежесі.                                        

 ПӘНДЕР  -   Пән_ аты, Барлық_сағаты, Лекциялар_сағатттары,                                                   Практика_сағаттары, Лабораториялық_сағаттары.             

САБАҚҮРЛЕРІ – Сабақүрі.                                                                              

Мәліметтер қорына көпдеген сұрақтар қойылуы мүмкін. Мысалы: студент қайсы тобында оқиды, мұғалімдер қайсы кафедраларда жұмыс істейді, қай топтарда сабақ өткізеді, студенттер белгілі сабақ түрлерінен белгілі сабақтардан қандай баға алған, т.б. Мәліметтер қорына қойылатын мүмкін болатын сұрақтарға жауап алу үшін объектілік жиынтықтардың арасындағы байланыстарды қарастыру қажет.                                             ТОБЫ мен СТУДЕНТ   объектілер арасында “бір-көпке”деген қатынас бар, себебі бір тобында көп студенттер бар, ал бір студент тек қана бір тобы құрамына кіреді.                                                                                   Сол сияқты КАФЕДРА мен МҰҒАЛІМ объектілер “бір-көпке” қатынаста болады (бір кафедрада көп мұғалім бар, ал әр мұғалім тек қана бір қафедрада қызмет жасайды).                                                                                       Әр-бір пән бойынша әр түрлі топтарда әр түрлі мұғалімдермен сабақтардың көп түрлері өткізіледі. Сондықтан, ТОБЫ мен ПӘНДЕР, ТОБЫ мен МҰҒАЛІМ, ПӘНДЕР мен МҰҒАЛІМ, ПӘНДЕР мен САБАҚ_ТҮРЛЕРІ жиынтықтар араларында “көп-көпке”деген қатынастар бар. Топтар, пәндер және мұғалімдер арасындағы қатынастар 1-суретте келтірілген, суретте қатынастардың қуаттылықтары көрсетілген. Схемада объектілердің атрибуттары көрсетілмеген.

 

МҰҒАЛІМ

бөлінеді

  оқиды

   ПӘНДЕР

САБАҚ_ТҮРІ

ТОБЫ

ОҚУ

   өткізеді

1сурет.   ОҚУ құрамды объектілік жиынтық

Сабақ_сағаты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Бұл қатынастар құрамды объектілік жиынтықты құрастырады, оны ОҚУ деп атайық. Бұл жиынтықтың өзінің  “Сабақ_сағаты”   деген атрибуты бар (бұл атрибуттың мәні ПӘНДЕР объектілік жиынтығының Лекциялар_сағатттары, Практика_сағаттары, Лабораторялық_сағаттары атрибуттарының біреуінің мәніне тең).  Мәліметтер қорында ОҚУ объектісінде көрсетілген барлық сабақтар түрлерінен семестр бойынша студенттердің бағалары туралы мәліметтерде болуы қажет.                                                                                          СТУДЕНТ пен ОҚУ объектілері арасында “көп-көпке” деген қатынас бар, себебі әр студент ОҚУ объектінде көрсетілген сабақтардың көп түрлеріне қатысады, ал сабақтың бір түрі көп студенттерге өткізіледі.                          Байланыстыратын объект ретінде ҮЛГЕРУ объектісін қолданамыз, бұл объектіде белгілі студенттің белгілі пәннен бағалары орнатылады. Сондықтан бұл объект СТУДЕНТ және ОҚУ объектілерімен байланысады. Бір студенттің бірнеше пәннен бағалары бар, бірақ әр баға белгілі студенттікі. Сонымен, ҮЛГЕРУ объектісі СТУДЕНТ объектісіне бағынады, ол СТУДЕНТ объектісімен “бір-көпке” деген қатынаста болады. ҮЛГЕРУ объектісі ОҚУ объектісінеде бағынады, оныменда “бір-көпке” қатынаста болады, себебі сабақтардың бір түрі бойынша көп студенттердің үлгерулері туралы мәліметтер бар, бырақ әр қайсысы белгілі сабақ түрінен анықталған. Бұл құрамды объектілік жиынтықтың өзінің атрибуттары бар: Тапсыру_датасы, Бақылау_түрі және Бағасы.                                                                                             

Мәліметтер қорының ақырғы схемасы 2-суретте келтірілген. Схемаға ТОБЫ мен СТУДЕНТ, КАФЕДРА мен МҰҒАЛІМ объектілер арасындағы қатынастарда қосылған. Объектілер атрибуттары схемада көрсетілмеген.

1.3 Концептуалды үлгіні реляциондық үлгіге түрлендіру

Концептуалды үлгі объектілер, атрибуттар, қатынастар және құрамды объектілерден тұрады. Олардың барлығын реляциондық кестелерге түрлендіру керек. Нәтижесінде алынған кестелер төртінші нормалды түрде болады яғни үлгіні әрі қарай нормаландырудың қажеті жоқ. 

Объектілік жиынтықтар мен атрибуттарды түрлендіру. Объектілік жиынтықты реляциондық кестеге түрлендіруге болады. Объектілік жиынтықтың аты кесте аты болып, ал атрибуттары кестенің атрибуттары болады. Егер де атрибуттар жиынтықтары ішінде бір сыпырасын кестенің кілті ретінде пайдалануға болса, олар кестенің кілті бодып таңдалынады. Кері жағдайда, кестеге жаңа атрибут қосылады. Оның мәндері  объектілік жиынтықтың элементтерін бір мағыналы анықтауы қажет, сонымен ол кестенің кілті бола алады.   

ТОБЫ, КАФЕДРА, ПӘНДЕР объектілік жиынтықтарын сәйкес аттары бар реляциондық кестелерге түрлендірейік. Егер де объект элементтерінің аттары қайталанбайды деп есептесек, бұл кестелердің потенциалды кілттері ретінде Тобы_аты, Кафедра_аты, Пән_аты атрибуттары таңдалынуына болады. Бірақ біздер бұл кестелердің  элементтерін бір мағыналы анықтау үшін кестелерге Тобы_нөмірі, Кафедра_нөмірі, Пән_нөмірі деген атрибуттарды еңгізіп, оны бастапқы кілт ретінде қолданамыз. Күнделікті мәліметтерді еңгізу жұмысында бұл кілтті пайдалану қарапайымдау болады.                                                                                          

ҮЛГЕРУ

 

ОҚУ

МҰҒАЛІМ

бөлінеді

  оқиды

   ПӘНДЕР

САБАҚ_ТҮРІ

ТОП

   өткізеді

КАФЕДРА

жұмыс_істейді

СТУДЕНТ

  тапсырады

құрамында

Тапсыру_датасы

Бақылау_түрі

 

Бағасы

Сабақ_сағаты

ҮЛГЕРУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 – сурет.   Оқу процесс мәліметтерінің концептуалды үлгісі

 

 

 


Сонымен, келесідей реляциондық кестелерді аламыз (кілттік өрістері курсивпен белгіленген):                         ТОБЫ (Тобы_нөмірі,  Тобы_аты, Студент_саны, Курсы);                              

КАФЕДРА (Кафедра_нөмірі, Кафедра_аты, Кафедра_телефоны,                                          Меңгеруші_аты_жөні);                                                                  

ПӘНДЕР (Пән_нөмірі,  Пән_аты, Барлық_сағаты, Лекциялар_сағатттары,                  

Практика_сағаттары, Лабораторялық_сағаттары).                           

САБАҚ_ТҮРІ объект жалғыз атрибуты бар келесі  САБАҚ_ТҮРІ (Сабақ_түрі)         кестеге түрленеді.               СТУДЕНТ деген объектіде студентті табу үшін оның фамилиясын қолдануға болады. Бырақта, фамилиялары бірдей студенттер болуы мүмкін, сондықтан студент идентификаторы ретінде оның реттік нөмірін қолданамыз. Бұл кестелерде келесідей: “Сынақ_кітапша_нөмірі”, “Жеке_куәлік_нөмірі”, “РНН_нөмірі” сияқты идентификаторларды  қолданбаңыз, себебі оларды еңгізу операцияларда қолдану ыңғайсыз, және олар өзгеруі мүмкін (мысалы жоғалғаннан кейін):                                                                                      СТУДЕНТ (Студент_нөмірі, Студент_фамилиясы, Студент_аты, Студент_әкесінің_аты, Студент_туғанүні, Студент_адресі).

МҰҒАЛІМ кестесінің құрамыда сол сияқты анықталады:

МҰҒАЛІМ (Мұғалім_нөмірі, Мұғалім_фамилиясы,   Мұғалім_аты,

         Мұғалім_әкесінің_аты, Мұғалім_қызметі, Мұғалім_ғылымәрежесі).                                                                                   Қатынастарды түрлендіру .Кез-келген “бір-көпке” деген қатынаста, қуаттылығы  “көп” жағындағы объектіні бейнелейтін кестеге, басқа объектінің  кілті сыртқы кілт ретінде еңгізіледі.                                          ТОБЫ және СТУДЕНТ объектілер арасындағы байланыстар “бір-көпке” қатынастармен бейнеленеді, себебі бір топта көп студент, ал бір студент тек қана жалғыз топқа кіреді. Сонда қатынастарды түрлендіру ережесі бойынша, олар арасындағы байланыс тобының номері бойынша орнатылады. Бұл атрибут СТУДЕНТ кестесінің сыртқы кілті болады. Сонымен бірге, кестеге Студент_староста атрибутын қосамыз, бұл өрісте тобының старостасы болатын студенттің нөмірін енгіземіз, яғни кестенің өзінің кілттік өрістерінің мәндерін. Бұл атрибут СТУДЕНТ объектісін өз-өзімен байланыстырады, бұндай қатынастар рекурсивті қатынас деп аталады. Студент_староста атрибуты  рекурсивті сыртқы кілт болады. Сонымен, СТУДЕНТ кестенің құрамы осындай болады:

СТУДЕНТ (Студент_нөмірі, Студент_фамилиясы, Студент_аты,             Студент_әкесінің_аты, Студент_туғанүні, Студент_адресі,       Тобы_нөмірі, Студент_староста).                                                                                                  Тағы бір жағдайды айтып кеткен жөн. Бұл кестеде тобының нөмірінен және студенттің нөмірінен тұратын құрамды кілтті таңдауға болар еді. Осындай идентификатор студенттің тобын тікелей анықтауға мүмкіншілік берер еді. Бұл кезде старосталарды анықтау үшін бөлек кесте керек болатын еді. Біз қарапайым кілтті қолданайық дедік.        

КАФЕДРА және МҰҒАЛІМ кестелер ”бір-көпке” деген қатынаста. Олар арасындағы байланыс басты КАФЕДРА объектісінің уникалды кілті – кафедра нөмірі бойынша орнатылады, ол бағынды объектіге енгізіледі:

МҰҒАЛІМ (Мұғалім_ нөмірі, Мұғалім_фамилиясы, Мұғалім_аты, Мұғалім_әкесінің_аты, Мұғалім_қызметі,              Мұғалім_ғылымәрежесі, Кафедра_нөмірі).  

ОҚУ объектісі «көп-көпке» деген қатынастарды анықтайды (1 сурет). Осындай қатынастарды түрлендіру үшін қиылысу кестесі орнатылады, мұндай кестеде бастапқы кестелердің тек қана кілттік өрістері қолданылады. Қиылысу кестенің өзінің кілттік емес атрибуттары болуы мүмкін.

ОҚУ кестенің атрибуттарын анықтайық: ОҚУ (Тобы_нөмірі, Пән_нөмірі, Мұғалім_нөмірі,                                      Сабақ_түрі, Сабақ_сағаты).                                                              

Ескерту. Келешекте жобаны жасағанда, САБАҚ_ТҮРІ кестені жасамаймыз, себебі бұл кестенің жалғыз атрибуты ОҚУ кестесінің кілттік атрибуттар құрамына кіреді.                                                                                              Қарастырып отырған объектілердің ”көп-көпке” қатынасында ОҚУ кестесі байланыстыру объект болады.          Әр топта оқылатын пәндерге сәйкес сабақтардың көп түрлері өткізіледі. Басқа жақтан қарағанда, сабақтың әр түрі белгілі топ үшін анықталған. Сондықтан, ТОБЫ және ОҚУ объектілер арасында ”бір-көпке” деген байланыс бар.          Әрбір пән бойынша әртүрлі топтарда әртүрлі мұғалімдермен көпдеген сабақтар өткізіледі. Басқа жақтан қарағанда, әр сабақ белгілі пән бойынша өткізіледі, сондықтан ПӘНДЕР және ОҚУ объектілер арасында  ”бір-көпке” деген байланыс бар. Сол сияқты МҰҒАЛІМ және ОҚУ объект арасындағы қатынастар түрі ”бір-көпке” болады.

ҮЛГЕРУ объектісінде студенттердің семестр бойынша әр пәннен қорытынды бағалары сақталады. Осындай бағалар бір жағынан студенттің идентификаторымен (Студент_номері), басқа жақтан – сабақтың (Тобы_нөмірі+Пән_нөмірі+Мұғалім_нөмірі+Сабақ_түрі) идентификаторымен анықталады. Осы идентификаторлардың қосындысы ҮЛГЕРУ объектінің уникалды идентификаторын құрастырады. Бұл объект белгілі студенттің белгілі пән бойынша бағаларын анықтайды. Әртүрлі пәндер бойынша әртүрлі бақылаулар өткізіледі (емтихан, сынап, т.б). Бақылау_түрі, Тапсыру_датасы, Бағасы атрибуттар осы кестенің кілттік емес атрибуттары болады:

ҮЛГЕРУ (Студент_нөмірі, Тобы_нөмірі,Пән_нөмірі, Мұғалім_нөмірі,                          

 Сабақ_түрі, Бақылау_түрі, Тапсыру_датасы, Бағасы).                        

Сонымен, жобаланып отырған мәліметтер қорының реляциондық кестелерінің құрамы келесі болады (бастапқы кілттері курсивпен белгілінген):                                                                                                                                                 ТОБЫ (Тобыөмірі,  Тобы_аты, Студент_саны, Курсы);                               

 КАФЕДРА (Кафедраөмірі, Кафедра_аты, Кафедра_телефоны, Меңгеруші_аты_жөні);      

ПӘНДЕР (Пән_нөмірі, Пән_ аты, Барлық_сағаты, Лекциялар_сағатттары, Практика_сағаттары, Лабораторялық_сағаттары).                                         

СТУДЕНТ (Студент_нөмірі, Студент_фамилиясы, Студент_аты,

Студент_әкесінің_аты, Студент_туғанүні, Студент_адресі.

Тобы_нөмірі, Студент_староста).

МҰҒАЛІМ (Мұғалім_нөмірі, Мұғалім_фамилиясы,  Мұғалім_аты,                                       

Мұғалім_әкесінің_аты, Мұғалім_қызметі,

Мұғалім_ғылымәрежесі, Кафедра_нөмірі).                                                  

ОҚУ (Тобыөмірі, Пән_нөмірі, Мұғалім_нөмірі, Сабақ_түрі, Сабақ_сағаты).  ҮЛГЕРУ (Студент_нөмірі, Тобы_нөмірі,Пән_нөмірі, Мұғалім_нөмірі,                              

 Сабақ_түрі, Бақылау_түрі, Тапсыру_датасы, Бағасы).

1.4 Лабораториялық жұмысқа тапсырма

Жобаланған оқу процесінің үлгісін мәліметтер қорларын басқару MS SQL Server жүйесінің ортасында жасаңыз. Лабораториялық жұмыста қарастырып отырған мәліметтер қорының объектілеріне ағылшын тілде атаулар қолданылады. Бұл пайдаланатын бағдарламаның талабына сәйкес. Сондықтан төмендегі мысалдарда мәліметтер қоры “Education” деп аталады.

Кез-келген SQL Server-дің объектісін жасау үшін белгілі бұйрықты жасауда негізделген бір-неше тәсілдері бар. Transact SQL операторлары мен процедураларын еңгізіп тексеруге арналған SQL Server Query Analyser - SQL сұраныстарын анализдеу терезесі қолданылады. Бұл терезені бағдарламаның негізгі терезесінің Tools менюін қолданып ашуға болады.

Пайдаланушылардың мәліметтер қорларының орнатылуы SQL версиясынан және Program Files тобының орнатуынан тәуелді. Databases тізіміндегі кез-келген қордың қасиеттерін контексттік менюден Свойства (Properties) жолын таңдап пайдаланушының мәліметтер қорын орнату орнын анықтауға болады. Осы қасиеттер терезесінен транзакциялар журналының орнатылуында TransactionLog беттен қарап алыңыз. Мәліметтер қорының резервті копиясын жасау және қажет болса қалпына келтіру бұйрықтары да осы контексттік менюден таңдалынады: Все задачи (All Tasks) жолынан Backup Databases немесе Restore Databases бұйрықтары.   

1.4.1 Мәліметтер қорын жасау  

Мәліметтер қоры операциондық жүйенің бір немесе бернеше файлдарында орнатылады. Операциондық жүйенің бір файлында бірнеше мәліметтер қоры орнатылмайды. Бұл файлда кестелер мен индекстер сақталынады. SQL Server транзакция жасау алдында және жасалғаннан кейін мәліметтерді жазып отыратын жұмыс ортаны транзакциялар журналы деп атайды. Бұл мәліметтер орындалған транзакцияны жою немесе қажет болса мәліметтер қорын қалпына келтіру үшін қолданылады. 7.0 версияда транзакциялар журналы бұрынғы версиядай кестелермен бірге емес, бөлек файлда сақталынады.                                                           Transact SQL көмегімен мәліметтер қорын жасау үшін CREATE DATABASE бұйрығы қолданылады.                                                     CREATE DATABASE education        

                       ON PRIMARY

(NAME = education_data, FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\education_data.mdf',  size = 4, maxsize =25, filegrowth = 1 mb)

               LOG ON

(NAME = education_log, FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\education_log.ldf', size = 4, maxsize = 20,

            filegrowth =1 mb)

                                                                                                                                   

Ескерту: Мәліметтер қорымен транзакциялар журналының орнатылуы -  'С:\…’ – SQL версиясы мен Program Files тобының орнатуына қарай өзгеруі мүмкін.                                                                                                               Мұнда:     

                   education    - Жасалынып отырған мәліметтер қорының аты.                                

                  ON         - Мәліметтер қорының ақпараттары сақталынатын дискідегі                       

                             файлдардың  тізімін анықтайды.

PRIMARY  - Мәліметтер қорының және жүйелік кестелердің логикалық басы болатын файлды анықтайды. Мәліметтер қорында бастапқы 

          (PRIMARY )  файл        жалғыз болады. Бұл параметр көрсетілмеген болса, тізімдегі бастапқы файл ретінде бірінші файл қолданылады LOG ON   -   Дискідегі транзакциялар журналы сақталынатын файлдардың тізімін              анықтайды. Бұл параметр көрсетілмеген болса, транзакциялар журналының өлшемі мәліметтер файлының өлшемінің 25% болады.

education_ data – Файлға қатысу үшін SQL Server-дің қолданатын  логикалық аты.

FILENAMEОперациондық жүйе файлының параметрлерін анықтайды  (SQL Server орнатылған сервердегі файлдың атын, мәліметтер қорының       бастапқы және соңғы өлшемін, мәліметтер қорының  өлшемін өсіретін өсімшесі).

1.4.2     Кестелерді жасау      

Ағынды мәліметтер қорын келесі бұйрықпен анықтаңыз: 

USE education                                                                                                  

Енді барлық қолданатын бұйрықтар осы мәліметтер қорында орындалады.

                                                                                                                

Кестені Transact-SQL тілінің CREATE TABLE операторы көмегімен жасауға болады. Біріншіден кестелердің тік жол мәліметтерінің типтерін анықтау қажет. Тік жол үшін тағы бір - NULL  немесе NOT NULL         сипаттамасын анықтауға болады. Егер де тік жол үшін      NULL атрибуты анықталған болса, мәліметтерді енгізгенде, осы тік жол үшін мәндерді енгізбеуге болады. Кері жағдайда (NOT NULL) SQL Server бұл тік жолды бос қалдыруға рұқсат бермейді.                                                                                                                      ТОП кестесін жасау:                                                                                       CREATE  TABLE Gruppa (  

            Grup_ID                 integer  identity (1,1) not null  PRIMARY KEY, 

Grup_NAME         char (9)   not null,

            Grup_KOLSTUD  smallint  not null,

            Grup_COURSE     int   not null           )

         СТУДЕНТ кестесін жасау (мұнда кілттерді бейнелеудің басқа варианты  келтірілген):              

         CREATE  TABLE Students (   

Stud_ID               bigint  not null ,

Stud_FAM           char(20)  not null,

Stud_IMA            char(10)  not null,

Stud_OTCH         char(15)  not null,

Stud_DATE          datetime  not null,

Stud_ADDRESS  char(25)   null,

Grup_ID            integer   not null   FOREIGN KEY                                                                                                                       REFERENCES Gruppa (Grup_ID ),

            Stud_STAR       bigint  not null ,                                                                                

           CONSTRAINT  PK_Students  PRIMARY KEY (Stud_ID),                                                

          CONSTRAINT  FK_Students_Students FOREIGN KEY  (Stud_STAR)

                                                                      REFERENCES Students (Stud_ID)

                                   )

                                                                                                                         КАФЕДРА кестесін жасау:                                                                                       CREATE  TABLE  Chair ( 

            Chair_ID           integer   not null  PRIMARY KEY ,

Chair_NAME   char(20)  not null,

            Chair_PHONE  char(10)  null ,

            Chair_CHIEF    char(15)  not null        )

                                                                                                                          МҰҒАЛІМ кестесін жасау:                                                                                                CREATE  TABLE   Teacher (

            Teach_ID                bigint     not null PRIMARY KEY   ,

            Teach_FAM            char(20)  not null,

            Teach_IMA             char(10)  not null,

            Teach_OTCH          char(15)  not null,

            Teach_POSITION   char(18)  not null,

            Teach_STEPEN      char(12)  null ,

             Chair_ID         integer   not null FOREIGN KEY REFERENCES Chair (Chair_ID)                                           )

                                                                                                                                    ПӘНДЕР  кестесін жасау:                                                                                       CREATE  TABLE  Subject ( 

            Subj_ID                integer   not null  PRIMARY KEY ,

            Subj_NAME        char(20)  not null,

         Total_Hours      integer  not null,

         Lection_Hours  integer  not null,

         Practice_Hours  integer  not null,

           Labor_Hours     integer  not null                                                                                                 )                                                                                                                                                                                                               ОҚУ кестесін жасау:                                                                                               CREATE  TABLE Study (

 Grup_ID      integer  not null  FOREIGN KEY      REFERENCES Gruppa (Grup_ID ),

 Subj_ID       integer  not null FOREIGN KEY  REFERENCES Subject (Subj_ID ),

           Teach_ID    bigint   not null FOREIGN KEY   REFERENCES Teacher (Teach_ID),

             Form_Study     char (20) not null,

          Lesson_Hours  integer  not null,

CONSTRAINT  PK_Study  PRIMARY KEY (Grup_ID, Subj_ID, Teach_ID,                                                                             Form_Study )

                   )

                                                                                                                           ҮЛГЕРУ кестесін жасау:                                                                                       CREATE  TABLE  Progress (

         Stud_ID        bigint  not null  FOREIGN KEY  REFERENCES  Students (Stud_ID),        

          Grup_ID            int  not null,   

         Subj_ID              integer  not null,

         Teach_ID          bigint     not null,

            Form_Study    char (20) not null,

            Form_Control char (20) not null,

            Pr_DATE           datetime   null,                                                  

            OCENKA            integer  CHECK ( OCENKA in  (0,1,2,3,4,5,6,7,8,9)) DEFAULT(0),

CONSTRAINT  FK_Progress_Study 

                        FOREIGN KEY  (Grup_ID, Subj_ID, Teach_ID, Form_Study)

                        REFERENCES Study (Grup_ID, Subj_ID, Teach_ID, Form_Study),

CONSTRAINT  PK_Progress 

                        PRIMARY KEY (Stud_ID, Grup_ID, Subj_ID, Teach_ID, Form_Study)

                           )                                                      

                                                                                                                                   

1.4.3     Кесте құрамын өзгерту     

Кестені жасап болғаннан кейін оның құрамын ALTER  TABLE  бұйрығымен өзгертуге болады. Өрістерді қосу. Students кестесіне студентердің стипендиялары туралы мәліметтерді сақтайтын өрісті қосыңыз:

                                      USE   education                                                                                                                         

ALTER  TABLE Students                                                                                           

ADD   Stud_STIP  smallmoney

Өрістерді жою. Еңгізілген өрісті кестеден жойыңыз:                                                     

 ALTER  TABLE Students                                                                                             

DROP COLUMN Stud_STIP                                                                            

Шектеулерді қосу. Кестенің бірінші немесе сыртқы кілттері бейнеленбеген болса, оны да ALTER TABLE бұйрығымен орнатуға болады.                 

Мысалы Students кестесінде бірінші кілт анықталмаған дейік:                               

ALTER TABLE Students                                                                                                                   

ADD CONSTRAINT PK_Students PRIMARY KEY (Stud_ID)                                                                                                                                                                                      Study кестесінде сыртқы кілттің  біреуін анықтау қажет болса:                                                ALTER TABLE Study                                                                                                              

ADD CONSTRAINT PK_Study_Gruppa FOREIGN KEY (Grup_ID)                                                                                               REFERENCES Gruppa (Grup_ID)                                                                                                                                                    1.4.4 Кестелерді жою                                                                                     

Кестелерді жою үшін DROP бұйрығы негізделген. Мысалы:                                             

DROP Students                                                                              

DROP бұйрығын ұқыпты қолданыңыз!

                                                                                                                                                                                            1.5 Бақылау сұрақтары                                                                                       

1.5.1    Мәліметтердің концептуалды үлгісі дегеніміз не?                                            

1.5.2    Мәліметтер қорының реляциондық схемасын қалай түсінесіз?                    

1.5.3 Келесі терминдердің мағынасын түсіндіріңіз: бастапқы кілт, сыртқы              кілт,  құрамды кілт, реляциондық кесте, нормаландыру.                            

1.5.3    SQL деген не?                                                                                               

1.5.5 Клиент-серверлік технологиялардың мәйнфреймді қолданатын           технолгиясынан негізгі айырмашылығы.                                                          

1.5.6 Клиент-серверлік технологиясында персоналды компьютер клиент              болама немесе сервер бола ма?          

                                                                                                                                                                                  

2 лабораториялық жұмыс. Мәліметтерге әрекеттерді қолдану    

2.1 Мәліметтерге әрекеттерді қолдану бұйрықтары

Кестеге жазбаларды қосу. Мәліметтер қорының кестелеріне қолданатын әрекеттердің ішінде негізгісі - кестеге мәліметтерді қосу болып табылады.           

Кестеге мәліметтерді қосу үшін  INSERT инструкциясы қолданылады. Ең қарапайым түрде бұл инструкцияның келесі түрі қолданылады:        

        INSERT INTO  кесте_аты                                                                                         

 VALUESән,…, мән)                  

Бұл бұйрық ешқандай мәліметтерді шығармайды. Бірақ Query Analyzer бір жазбаның қосылғанын атап кетеді. Бұл бұйрықты қолдану алдында кесте жасалынып тұруы қажет, ал VALUES қызмет сөзінен кейінгі жақшадағы барлық мәндердің мәліметтер типтері сәйкес тік жолдың мәліметтерінің типтерімен бірдей болуы керек. Бірінші мән бірінші тік жолға, екінші – екіншіге, т.с. түседі.                                                                                                            Мысалы, студенттердің кестесіне екі жазбаны қосу үшін келесіні қолданамыз:                                                                                                                

INSERT INTO Students                                                                                              

VALUES (030101, 'Ахметов', 'Данияр',  'Муратович',                                                                   02/04/85,'Алматы', 1, 030101)                                              

INSERT INTO Students                                                                                              

VALUES (030102,'Ким', 'Алла', 'Юрьевна',11/09/85б, 'Алматы',1, 030101)                                                                                                                                         

Егер де бос мәнді (NULL) еңгізу қажет болса, оны мәндер тізіміне қосыңыз (кесте жасалғанда, өріс типі NULL деп сипатталыну қажет). Мысалы:                                                                                                                           INSERT INTO Students                                                                                              

VALUES (030103, 'Цой', 'Олег','Иванович',10/05/85, NULL,1,030101)                                                                                                                               

Кестелерден жазбаларды жою. Бұл үшін DELETE бұйрығы қолданылады:                                                                                                                                   

DELETE [FROM] кесте_аты                                                                            

WHERE тік_жол_аты = мән                                                                                                                                                                                  

FROM деген қызмет сөзді қолданбауға да болады. DELETE инструкциясы WHERE қызмет сөзсіз өте сирек қолданылады. Операцияны жасау алдында, инструкцияны дұрыс жазғаныңызға көз жеткізіңіз, себебі байқамай кестенің барлық жазбаларын жоғалтып алуыңыз мүмкін.

Студенттердің кестесінің  барлық жазбаларын жою үшін келесіні енгізуге болады:                                                                                                                                            

DELETE  FROM  students                                                                                      

Әдетте мұндай бұйрықтар жасалынбайды. Ө»ткені кестенің белгілі жолдарын жою қажет. Ол үшін сұрыптау шарттары қолданылады. Мысалы, студент туралы белгілі жолды жою үшін, келесіні еңгізуге болады:                                       

DELETE FROM students                                                                                            

WHERE  Stud_ID = 30103                                                           

Әрине, шартты бір неше жазба қанагаттандырса, олардың барлығы жойылады.                                                                                                                               

Файлдық мәліметтер қорларын басқару жүйесінен өзгеше, SQL Server жойылатын жазбаларды белгілемейді, бірден жояды, сондықтан, оларды қайта қайтару мүмкін емес. DELETE бұйрығын ұқыпты қолданыңыз.                                

Өрістің мәнін өзгерту. Кестенің тік жолдарындағы мәндерді өзгерту үшін UPDATE инструкциясы қолданылады. Бұл инструкцияның қарапайымдалған түрі мынадай:                                                                                    

UPDATE кесте_аты                                                                                               

SET бірінші_тік_ жол_аты = мән, …, n-ші_тік_ жол_аты = мән                      

WHERE тік _ жол_аты  салыстыру_операторы мән                                                                                                                                              

UPDATE бұйрығы кестедегі жазбалардың кейбір немесе барлық мәндерін өзгертуге мүмкіндік береді. Бұл бұйрықтың UPDATE қызмет сөзінен кейін кесте аты көрсетіледі, SET сөзінен кейін белгілі тік жол үшін орнатылатын өзгерістер аталады. Мысалы, барлық мұғалімдердің қызметтерін доцент деп өзгерту үшін, келесіні қолдануға болады:                                                              

UPDATE  Teacher                                                                                                  

SET   Teach_POSITION = ‘доцент’                                                                                                                                                                               

DELETE   бұйрығындай, UPDATE  бұйрығында өзгертетін жазбаларды табу үшін, шарттар қолдануға болады. Мысалы, нөмірі 30102-ге тең студенттің стипендиясының мәнін өзгерту үшін, келесіні жазамыз:                                           

UPDATE Students                                                                                                  

SET Stud_STIP  = 2000                                                                                            

WHERE Stud_ID   = 30102                                                                                    

Араларын үтірмен бөліп, SET сөйлемінде бірнеше тік жолдарды орнатуға болады.                                                                                                                                                                                                                                      

2.2            Лабораториялық жұмысқа тапсырма                                         

2.2.1    Мәліметтер қорының барлық кестелерін мәліметтермен толтырыңыз.          

2.2.2    Келесі ережелерді сақтаңыз:                                                                          

а) Біріншіден байланыстары ең аз  кестелер толтырылады.                           

б) Категориялық бүтіндік ережесі: жатық жолдың ешқандай кілттік

атрибуты бос болмауы керек.                                                                         

в) Сілтеме деңгейіндегі бүтіндік: әрбір сыртқы кілттің мәні не бос болуы, не  басқа кестенің ағынды мәндерінің біреуіне тең болуы керек.                                                                                                     

2.2.2 Students кестесіне Stud_STIP өрісін қосыңыз, бұл өрісте студенттердің стипендиялары туралы мәліметтер болады.                                                        

2.2.3 Students кестесіндегі Stud_STIP өрісін әртүрлі мәліметтермен толтырыңыз (UPDATE бұйрығын қолданыңыз).                                            

2.2.3    Кестелердегі мәліметтерді өз қалауларыңыз бойынша өзгертіңіз.                                                                                                                                                    

2.2.4    2.3 Бақылау сұрақтары                                                                                      

2.3.1 Мәліметерге әрекеттерді қолданудың қандай бұйрықтарын білесіңдер.                      

2.3.2 Мәліметтердің бүтіндігінің анықтамасын беріңіз.                                           

2.3.3 Сілтеме деңгейіндегі бүтіндіктің анықтамасын беріңіз.                                 

2.3.4 Өрістің NOT NULL параметрі нені білдіреді?                                                         

2.3.5 Егерде өрістің параметрі NULL деп анықталса, бұл өріске міндетті түрде мәліметтер еңгізілуі керек пе?                          

2.3.6 Өрістің identity параметрі нені білдіреді?                                                                                                                                                                                                                                                                                                                 3 лабораториялық жұмыс  Мәліметтер қорына сұраныстар

3.1 Кестелерден мәліметтерді алу                                                                

Мәліметтер қорына қойылатын сұраныс мәліметтер диапазонын азайтып, оны берілген шарттарды қанағаттыратын тік және жатық жолдармен шектететін, сұрыптау операциясы болады.

Transact-SQL-де мәліметтерді сұрыптау үшін SELECT инструкциясы қолданылады. Әдетте, кестенің ізделінентін жалғызғана жатық немесе тік жол емес, бірақ барлық жолдары да емес. Сұраныс бойынша алынатын мәліметтердің көлемін азайту үшін SELECT бұйрығының күрделі инструкциялары қолданылады. Сұраныста кестелерді анықтау. Мәліметтерді сұрыптап алу үшін біріншіден керекті кестелерді атап кету керек. Ол үшін SELECT инструкциясында FROM сөйлемін қолдану крек.                                                 

Келесі SELECT инструкциясында “Students” кестесіндегі барлық мәліметтерді көрсету керек екендігін FROM сөйлемі орнатады:                                         

SELECT *                                                                                                         

FROM Students                                                                                       

SELECT инструкциясында  қолданған жұлдызша (*) “Students” кестесіндегі барлық мәліметтерді қайтару керек деп түсіндіреді.                                    

Тік жолдарды қолдану. SELECT инструкциясында мәліметтерді тігінінен немесе көлденен айырып шығаруға болады. Бірінші жағдайда қайтарылатын тік жолдар саны шектеледі, екінші жағдайда – сәйкес жатық жолдар.                    

Мәліметтер қорының кестелерінен қайтарылатын тік жолдар бір-бірінен үтірмен бөлініп тізім ретінде SELECT қызмет сөзінен кейін аталып кетеді:                                                                                                                                              SELECT   Stud_ID, Stud_FAM, Stud_IMA, Stud_ADDRESS                                         

FROM  Students                                                                                               

 Бұл бұйрықта:

·        SELECTқызмет сөзі

·        Stud_ID, Stud_FAM, Stud_IMA, Stud_ADDRESS  - кестеден сұраныс бойынша таңдалынатын тік жолдардың тізімі. Бұл тізімде аталмаған басқа тік жолдар қарастырылмайды

·        FROM  қызмет сөз, бұл сөзден кейін мәліметтердің көзі болатын кестелер аталып кетеді.

         Таңдалынып алынған тік және жатық жолдар уақытша кестеге жиналады. Бұл кесте мәліметтер пайдаланушыға берілгенше өмір  жасайды.                

Кесте тік жолдарын бастапқы реті емес, басқа ретпен де көрсетуге болады:                                                                                                                          

SELECT   Stud_ID, Stud_ADDRESS, Stud_FAM, Stud_IMA                                    

FROM  Students                                                                                      

Осындай мүмкіншілік реляционды мәліметтер қорларының сипаттарына сәйкес, себебі реляционды қорларда мәліметке қол жеткізу мәліметті  сақтау әдісінен тәуелсіз. Кестенің бір тік жолын бірнеше жерде көрсетуге болады. Осындай мүмкіншілік кестені түсінуін жақсартады.                                      

SELECT бұйрығы бойынша алынатын мәліметтер қайталанбауы үшін DISTINCT аргументі қолданылады. Мысалы, ең кемінде бір бағасы бар студенттердің тізімі керек болсын (бағалар әзір керек емес, тек қана студенттердің идентификаторлары):                                                                                   

SELECT  Stud_ID                                                                                                      

FROM   Progress                                                                                     

Бұл бұйрық орындалса, идентификаторлары қайталануы мүмкін (кейбір студенттерде бірнеше баға бар). Қайталанбайтын тізімді алу үшін келесіні енгіземіз:                                                                                                                                   SELECT DISTINCT Stud_ID                                                                                

FROM   Progress                                                                                     

SELECT бұйрығында DISTINCT тек қана бір рет көрсетіледі. Егерде бірнеше тік жол таңдалынса, DISTINCT таңдалынған өрістердің мәндері бірдей жазбаларды көрсетпейді. Кейбір мәндер бірдей, ал кейберуі - әртүрлі болған жазбалар қалады.                                                                                              

DISTINCT орнына ALL сөзін орнатуға болады, бұның әрекеті керісінше – жолдардың қайталануы сақталады (бұл жағдай ешқандай парамер көрсетілмегенге сәйкес).                                                                           

Кесте жазбаларын шектеу. Кестелер өте үлкен болып кетуі мүмкін. Әдетте біздерге барлық жазбалар емес, белгілі жазбалар керек болады. Қандай жолдар таңдалынатынын критерийлерді орнатып анықтаймыз. Ол үшін SELECT бұйрығында WHERE қызмет сөзі қолданылады. Осы параметр көмегімен шарттар орнатылады. SELECT тек қана осы шарттарды қанағаттандыратын жолдарды көрсетеді.                                                                                      WHERE сөйлемінің синтаксисі:                                                                                                                                                                                                            

WHERE тік_жол_аты   салыстыру_операторы   мән                                                                                                                                                 

WHERE сөйлемін қолданғанда SELECT бұйрығы нәтижелі жиынтықты азайтады. Ол жалғыз ғана жолды көрсетуі мүмкін немесе шарттарды қанағаттандыратын жолдар табылмаса, ештеңені көрсетпеуі мүмкін. Мысалы әкесінің аты 'Николаевич' болатын студенттердің тізімі ккрек болсын:                                                                                                                                                           

SELECT   Stud_FAM, Stud_IMA                                                                               

FROM  Students                                                                                               

WHERE  Stud_OTCH = ' Николаевич '                                       

Егер де сұраныста WHERE сөзі болса, SQL Server кестенің әр жолын қарап, шарт орындалуын тексереді.                                                                       

Ескерту. Символдық константалар (мысалы, 'Москва' сияқты) TransactSQL-де апострофпен ', немесе тырнақшамен " шектеледі.                         

WHERE  сөйлемінде сандық өрісті пайдалануды көрейік. Стипендиялары 1200-ге тең студенттер тізімін алайық:                                                                           

SELECT *                                                                                                          

FROM Students                                                                                                

WHERE  Stud_STIP = 1200                                                                                                                                                                                     

Мәліметтерді реттеу. Әдетте мәліметтерге реттеуді қолдану қажет. Реттеу ORDER BY қызмет сөзі көмегімен орнатылады (келісу бойынша реттеу өсу тәртібімен өткізіледі). ORDER BY сөйлемінің синтаксисі:                                              ORDER BY тік_жол_аты | Бүтінән  [ACS | DESC]                  

Мысалы, студенттер тізімін алфавит бойынша реттеп шығарайық;                      

SELECT Stud_ID, Stud_FAM                                                                           

FROM Students                                                                                                

ORDER BY Stud_FAM                                                                                                                                                                                                                                      

Егер де тік жол атынан кейін тағы бір тік жолдың атын орнатсақ, екінші тік жол бойынша бірінші тік жолда бірдей мәндері бар жатық жолдар реттеледі.     ORDER BY сөзден кейін орнатылған тік жол орнына оның тізімдегі орын санын орнатуға болады (Бүтінән):                                                                                                                                                                                                                

SELECT Grup_ID, Stud_ID, Stud_FAM                                                          

FROM Students                                                                                                

ORDER BY 1, 3 DESC                                                                                                                                                                                                         

3.2 Мәліметтерді таңдауға шарттарды орнату                                                  

Күрделі таңдау шарттарды құрастыру үшін Transact-SQL-де қатынас, логикалық және арнайы операторлар бар.                                                   

 Қатынас операторлары:

·        =  Тең

·        >  Үлкен

·        <  Кіші

·        >= Үлкен немесе тең

·        <= Кіші немесе тең                                                                               

·        <> Тең емес                                                                                 

·        Мысалы, 1200-ден артық стипендиялары бар студенттер тізімін алайық:                  

·        SELECT *                                                                                                         

·        FROM Students                                                                                                

·        WHERE Stud_STIP>=1200                                                                                                                             

             Логикалық операторлар:                                                      

-         AND логикалық "ЖӘНЕ"                                                                                   

-           - OR    логикалық "ЯҒНИ"                                                                               

-           - NOT логикалық "ЖОҚ"                                                                           

-          AND операторы екі логикалық мәндерді салыстырады, егер де екеуі де ақиқат болса, TRUE мәнін қайтарады, басқа жағдайларда - FALSE мәні қайтарылады. Егер де аргументтердің  біреуі TRUE болса, OR операторы TRUE мәнін қайтарады. Егер де оператор аргументі FALSE болса, NOT операторы TRUE мәнді қайтарады, кері жағдайда – керісінше.                                                             

-          Логикалық операторлар SELECT бұйрығының мүмкіншіліктерін көбейтеді. Егер де сұраныс нәтижесінде берілетін жазбалар  WHERE сөйлемде берілген шарттардың екеуінде қанағаттандыру керек болса, AND операторын (логикалық ЖӘНЕ) қолдану дұрыс:                                                                                                                                              

-          SELECT *                                                                                                                                    

-          FROM Students                                                                                                    

-          WHERE Stud_IMA = 'Алексей'                                                                                                                  

-          AND                                                                                                                                                   

-          Stud_ADDRESS = ‘Таугуль’                                     

-          Кестенің Stud_IMA тік жолында мәндері 'Алексей' болатын екі жатық жол болса, AND логикалық операторы Stud_ADDRESS тік жолында мәні Таугуль’ болатын жолды таңдайды (яғни екі Алексейден Таугулде тұратын Алексейді).                                                                                                             

-          OR операторы көмегімен бір тік жолдан бірнеше мәндерді таңдауға болады:                                                                                                                              

-          SELECT *

                                FROM Students

                                WHERE Stud_IMA = 'Алексей' OR

                                               Stud_IMA = 'Николай'                                                                                                                                                                                    NOT операторы салыстыру операторларда тік жол атының алдында орнатылады:                                                                                                                              

SELECT *

                       FROM Students

                                    WHERE NOT Stud_ADDRESS = ‘Таугуль’                                    

Бұл сұраныс Students кестесінен Таугүлде тұрмайтын студенттер туралы мәліметтерді көрсетеді.                                                                                           

Өрнектерді топтастыру үшін жақшаларды қолдануға болады:                              

SELECT *

                                FROM Students

                                WHERE NOT (Stud_IMA = 'Алексей' OR

                                                Stud_IMA = 'Николай')

            

             IN, BETWEEN, LIKE, IS NULL арнайы операторлары                          

IN операторы өрістің мәндерінің тізімін белгілейді:                                         

SELECT *                                                                                                                                            

FROM Students                                                                                                      

WHERE Stud_IMA  IN ('Алексей' , 'Николай')                                                   

BETWEEN операторы IN операторына ұқсас. Бырақ ол рұқсат етілген тізімді белгілемейді, мәндер диапазонын белгілейді. Сұраныста BETWEEN сөзінен кейін бастапқы мән, содан кейін AND сөзі және де соңғы мәні көрсетіледі. Бірінші мән екінші мәннен кем болуы керек. Мысалы, келесі сұраныс бағалары 3 пен 5 арасындағы студенттердің тізімін береді:                                           

SELECT *                                                                                                                                            

FROM   Progress                                                                                                          

WHERE Ocenka BETWEEN 3 AND 5                                                                          

LIKE операторы тек қана символдық өрістерге қолданылады. Бұл оператор шарттағы символдармен өрістің символдарының бөлігі сәйкес келетіндігін салыстырады. Шарт ретінде келесі арнайы символдар қолданылады:                                                                                                              

а) астынан сызып қою символы _  - бұл белгі кез келген жалғыз символды               орынын  басады.

Мысалы, 'к_т' дегеніміз 'кот' және 'кит' деген сөздерді        көрсету мүмкін, бырақ 'крот' дегенді көрсетпейді;                                                       

б) процент белгісі %  - кез келген символдар тізбегін көрсетеді. Мысалы, 'компьютер' және 'омар' деген сөздерге '%м%р' деген символдар тізбегі сәйкес болады.                                                                                                                      Аттары 'О' әрібінен басталатын студенттер тізімін алу үшін, келесіні енгіземіз:                                                                                                                        

SELECT *

                                FROM Students

                                WHERE Stud_IMA  LIKE 'О%'

             Егер де мәндердің дәл символдарын білмесеңіз LIKE операторын қолдану ыңғайлы. Есіңізде бар символдар қатарын қолдануға болады.                 

NULL сөзі мәннің жоқтығын көрсетеді. Тік жолда NULL мәндері бар жазбаларды айыру үшін арнайы IS NULL операторын қолдану қажет. Мысалы, мәліметтер қорынан Stud_STIP тік жолында NULL мәндері бар жазбаларды табайық:                                                                                                                             

SELECT *

                               

FROM Students

                                   

WHERE Stud_STIP IS NULL

             3.3 Мәліметтерді агрегатты функциялармен қорытындылау                     

Агрегатты функциялар мәндердің жиынтығын бір мәнге келтіреді. SQL Server бірнеше агрегатты функцияларды қолдануға мүмкіншілік береді:

COUNT – сұраныс шартын қанағаттыратын жолдар санын табады

SUM – тік жолдың мәндерінің арифметикалық қосындысын есептейді

AVG – барлық мәндердің орта арифметикалық мәнін есептейді

MAX – таңдалынған мәндер ішінде максималдысын табады

MIN - таңдалынған мәндер ішінде минималдысын табады

           SUM және AVG функциялары тек сандық өрістерге қолданылады. COUNT, MAX, MIN функцияларын символдық және сандық өрістерге қолдануға болады. MAX, MIN функцияларын символдық өрістерге қолданғанда, мәндер алфавит ретінде салыстырылады. Агрегаттық функциялар NULL мәндерді есепке алмайды.                                                                                          

Мысалы, студенттердің стипендияларының орта мәнін табу үшін, келесі сұранысты қолдануға болады:                                                                                                                                                                                                                 SELECT  AVG (Stud_STIP)

                                FROM Students

                                                                                                                                   

COUNT функциясы басқаларынан өзгеше. Бұл функция берілген тік жолдағы мәндер санын яғни кестенің жатық жолдар санын есептейді. Мысалы, сабақтарды тапсырған студенттер санын есептейік:                                                                SELECT COUNT( DISTINCT Stud_ID)

                                FROM Progress

             Бұл мысалда DISTINCT қызмет сөзі қолданылады: Progress кестесінің Stud_ID тік жолындағы мәндердің қайталанбайтын сандары есептелінеді.  Егер де бұл сөз орнатылмаса, нәтиже өзгереді.                                                                          Егер кестедегі жатық жолдардың жалпы мәнін есептеу керек болса, COUNT функциясын қолданғанда, өріс аты орнына жұлдызшаны орнатыңыз:                          

SELECT COUNT (*)

                                FROM Students

            

             Агрегаттық функцияны қолданғанда мәндерді топтастыру үшін GROUP BY сөйлемін орнатады. Бұл мүмкіншілік агрегатты функциямен өрістерді бір SELECT  сөйлемінде ұйымдастыруға мүмкіншілік береді. Мысалы, үлгеру ведомостан минималды бағалары бар студенттердің номерлерін анықтау қажет болсын:                                                                                                                                                                                                                                                                                                                      SELECT  Stud_ID,  MIN(ocenka )                                                                                                     

FROM Progress                                                                                                              

GROUP BY Stud_ID                                                                                        

Тік жол аттары пайдаланушыға түсінікті болу үшін, тік жолдар үшін псевдонимдарды қолдануға болады:                                                                                                 

SELECT  Stud_ID,  MIN(ocenka) AS  MIN_OCENKA                                                                 

FROM Progress                                                                                                              

GROUP BY Stud_ID                                                                                                                                                                                                                                          GROUP BY агрегатты функциясы жазбалар топтарына қолданылады. Топты ұйымдастыру шарты - өрістің бірдей мәндері (қарастырып отырған мысалда - Stud_ID).                                                                                                                  Сұранысты өзгертейік:                                                                                                                             

SELECT Stud_ID, Pr_Date, MAX(ocenka )

                FROM Progress

                                GROUP BY Stud_ID, Pr_DATE 

Бұл сұраныс бойынша, студенттердің номері мен олардың әрбір датасында алған максималды бағалары табылады. Бағалар қойылмаған күндер көрсетілмейді.                                                                                                                                  

HAVING қызмет сөзі SELECT операторында GROUP BY сөзбен бірге қолданылады. GROUP BY үшін HAVING қызметі ORDER BY үшін WHERE сөздің қызметі сияқты. Мысалы, әр студент үшін, оның 4-тен артық бағаларының максималдысын табуымыз керек болсын. Ол үшін, HAVING сөзін қолданамыз, бұл сөз сұраныстың шартын орнатады (бөлек жолдар үшін WHERE сөзі сияқты):                                                                                                                                           SELECT Stud_ID, Pr_DATE, MAX (Ocenka )                                                                                 

FROM Progress                                                                                                                                                 

GROUP BY Stud_ID, Pr_DATE                                                                                    

HAVING MAX (Ocenka ) > 4                                            

Сонымен, агрегатты функциялар мәліметтер қорынан тек қана белгілі мәндер табу емес, оларды қорытындылауға, анализдеуге мүмкіншілік береді.

 

        3.4 Лабораториялық жұмысқа тапсырма                                                            

Тапсырманы жасау алдында 3.1-3.3 бөліктердегі келтірілген мысалдарды орындаңыз.                                                                                                           Бөлек кестелерден келесі мәліметтерді табыңыз:                                                 

3.4.1 Алфавит ретінде мұғалімдер тізімі мен олардың қызметтерін.                            

3.4.2 Кафедралдың атын, меңгерушісінің аты-жөнімен.                                          

3.4.3 Бірінші тобындағы фамилиялары қайталанбайтын студенттер тізімін                 (бұл тобында фамилиялары бірдей студенттер бар деп есептелінеді).           

3.4.4 Стипендиясы 2000-нан артық студенттер тізімін.                                           

3.4.5 Астана мен Қарағандыда тұратын студенттер тізімін.                                   

3.4.6 Екінші тобындағы стипендия алмайтын студенттер тізімін.                      

3.4.7 Үшінші тобындағы фамилиялары А әрібінен басталатын студенттер  тізімін.       

3.4.8 1986 жылы туған студенттер тізімін.                                                                 

3.4.9 Үшінші тобындағы студенттердің стипендиясының жалпы қосындысын        есептеңіз.                                                                                                         

3.4.10 Барлық пәндерден лекциялық сабақтардың орта мәнін есептеңіз.              

3.4.11 Мәліметтер қорында неше студентер бар?                                    

3.4.12 Пәндер туралы барлық мәліметтерді шығарыңыз.                                          

3.4.13 Алматыда тұрмайтын студенттер тізімін.                                                     

3.4.14 Мамыр айында туған студенттер тізімін.                                                               

3.4.15 Үлгеру ведомостан минималды бағалары бар студенттер тізімін.                 

3.4.16 Үлгеру ведомостан максималды бағалары бар студенттер тізімін.                                                                                                                                              

3.5 Бақылау сұрақтары                                                                                         

3.5.1 SELECT операторының құрамында міндетті түрде көрсетілетін сөздерін атаңыз.                                                                                                                     

3.5.2 WHERE қызмет сөзінің өрнегінде тырнақша барлық мәліметтерге орнатыла ма?                                                                                                        

3.5.3 SELECT операторы SQL-дің қай бөлігіне қатынасады?                                     

3.5.4 WHERE сөздің өрнегінде бір неше шартты орнатуға бола ма?                              

3.5.5 Тырнақшаны сандық өрістердің мәндеріне қолдануға бола ма?                        

3.5.6 COUNT  функцияны қолданғанда, мәліметтер типі әсер ете ме?                            

3.5.7 Мәліметтерді тік жол бойынша топтастыру үшін, тік жол аты SELECT                       

 сөздің  тізімінде көрсетілуі керек пе?                                                                                           

3.5.8 SELECT сөйлемінде ORDER BY сөзін қолданғанда, GROUP BY сөзін қолдану қажет пе?

                  

         4 лабораториялық жұмыс Күрделі сұраныстарды жасау                                                                                                                                                          

4.1 Сұраныстарда кестелерді ұйымадастыру                                                     

Осыған дейін сұраныстар тек қана бір кестемен жұмыс жасаған. Бірақ SQL бір сұраныста бірнеше кестені қолдануға мүмкіндік береді. Осындай сұраныстарда әр тік жолдың аты мен бірге оларға сәйкес кестелердің аттары аталады. Мұндай жағдай тік жолды сұраныста толық анықтау деп аталады. Толық анықтаулар сұраныста аталған бірнеше кестеде орнатылған тік жолдар үшін керек. Бірақ әдетте барлық тік жолдар үшін толық анықтаулар қолданылады. Мысалы:                                                                                                       

SELECT  Teacher.Teach_FAM, Chair.Chair_NAME                                                               

FROM Teacher, Chair                                                                                      

WHERE Teacher.Chair_ID = Chair.Chair_ID                                                               

Бұл оператор мұғалімдердің фамилияларымен олардың жұмыс орнын көрсетеді. Мұғалім идентификаторы екі қолданылған кестеде бар, олар эквивалентті деп есептелінеді (оны теңдікпен орнатамыз).                                                     Келесі сұраныста Chair_ID өрісі екі кестеде бар, бірақ тек қана Teacher кестесінен алынады, себебі екінші кестедегі сәйкес өрістен бірдей мәліметтер:                

SELECT  Teacher.*,  Chair.Chair_NAME                                                                       

FROM Teacher, Chair                                                                                      

WHERE Teacher.Chair_ID = Chair.Chair_ID

 

                                                                                                                                                                    

Кесте аттары үшін псевдонимдарды қолдану. Клавиатурадан теру жұмысын азайту үшін жәнеде кестелерді рекурсивті тәртібі бойынша байланыстыру үшін, кестелерге псевдоним аттарды беруге болады. Мысалы:              SELECT  A.Teach_ID, B.Chair_NAME                                                                                   

FROM Teacher  A,                                                                                                                                             

Chair      B                                                                                             

WHERE A.Chair_ID = B.Chair_ID                                                              

Керекті мәліметтер бір кестеде орнатылса, ал кестенің жазбаларын бір бірімен салыстыру қажет болса, онда кестелерге рекурсивті байланыстыруды қолдану ыңғайлы. Біздің мәліметтер қорымызда Students кестесінде студенттердің фамилияларымен олардың старосталарының номерлері орнатылған. Студенттер тізімін олардың старосталарының фамилияларымен бірге шығарайық:                                                                                                           

SELECT  A.Stud_FAM, B.Stud_FAM                                                                                              

FROM Students A,                                                                                                                                           

Students B                                                                                                 

WHERE A.Stud_Star = B.Stud_ID                                                               

Бірнеше кілттер бойынша байаныстыру. Біздерге студенттердің әртүрлі пәндерден алған бағалары керек болсын:                                                         

SELECT Students. Stud_FAM, Subject.Subj_NAME, Progress.Оcenka                           

FROM Students, Subject, Progress                                                                        

WHERE Students.Stud_ID = Progress.Stud_ID    AND                                                                

Subject.Subj_ID = Progress.Subj_ ID                                                        

SQL Server екі кестенің жатық жолдарының әрбір комбинацияларын тексеріп, WHERE сөйлемінде көрсетілген шартты қанағаттандыруын тексереді. Егер де шарт қанағаттандырылса, комбинация шығарылады.                          Мысалы, Сериков мұғаліміне  жақсы бағамен тапсырған студенттер тізімі керек болсын. Ол үшін төрт кестені байланыстыру қажет:                                                   

SELECT Students.Stud_FAM, 'по предмету ', Subject.Subj_NAME,                                                                 

'получили оценку ', Progress.OCENKA,

                                                

'у преподавателя ', Teacher.Teach_FAM                                        

FROM Students, Subject, Progress, Teacher                                                              

 WHERE Students.Stud_ID = Progress. Stud_ID                          

AND                                                                      

Teacher.Teach_ID = Progress.Teach_ID AND                                         

Subject.Subj_ID = Progress.Subj_ID       AND                                         

Progress.Оcenka <>2                               AND                                                   

Teacher.Teach_FAM =  'Сериков '                                                                                                                                                   

4.2 Сұраныс ішіндегі сұраныстарды қолдану                                                    

Сұраныстар басқа сұраныстарды басқара алады. Ол үшін бір сұраныс шартының ішіне басқа сұранысты орнатып, ішкі сұраныс нәтижелерін шартта қолдануға болады.                                                                                                                 

Әдетте ішкі сұраныс сыртқы сұраныс шартында тексерілетін мәндерді құрастырады. Мысалы, біз студент фамилиясын – Сидоровты білеміз, бірақ оның нөмірін (Stud_ID) білмегенмен Progress кестесінен оның барлық бағаларын алғымыз келеді:                                                                                                                   

SELECT *                                                                                                               

FROM Progress                                                                                                      

WHERE  Stud_ID  = (

                                SELECT  Stud_ID

                                FROM Students

                                                                WHERE Stud_FAM = 'Сидоров'  )                        

Сыртқы (негізгі) сұраныс жасау алдында, WHERE сөйлем ішіндегі ішкі сұраныс орындалады. Ішкі сұраныста Students кестесі қарастырылып, одан Stud_FAM өрісі  'Сидоров' мәнге тең жатық жолдар алынып, алынған жолдардың Stud_ID өрістерінің мәндері алынады. Мысалы, жалғыз ғана жол Stud_ID = 30104 алынған болсын. Алынған мән негізгі сұраныстың шартына ішкі сұраныс орнына орнатылады, сонымен шарт келесідей болады:                                                      

WHERE   Stud_ID  = 301004

                     Салыстыру операциялар негізінде орнатылған шарттарда ішкі сұраныстарды қолданғанда, ішкі сұраныс жалғыз ғана мәнді қайтаратынына көз жеткізу керек.                                                                                                           Егер де бірнеше жазбаны қайтаратын ішкі сұранысты қолдану қажет болса, IN операторы орнатылады. Мысалы, мәліметтер қорында Сидоров фамилиясы бар бірнеше студент болса, сұраныс келесідей болады:                                                                       

SELECT *                                                                                                                                                                     

FROM Progress                                                                                                                                                     

WHERE  Stud_ID   IN (                                                                                                                                             

SELECT  Stud_ID                                                                                                                            

FROM    Students                                                                                                                                             

WHERE Stud_FAM = 'Сидоров'  )                                                

Информатика пәнінен барлық бағаларды шығарайық:                                                  

 SELECT *                                                                                                                                                                     

FROM Progress                                                                                                                                            

WHERE    Subj _ID   IN (                                                                                                                    

SELECT   Subj_ID                                                                                                                                 

FROM      Subject                                                                                                                                 

WHERE    Subj_NAME = 'Информатика'  )                                   

Бұл нәтижені ұйымдастыруды қолданып алуға да болады:                                              

SELECT Progress.*                                                                                                                                        

FROM   Subject, Progress                                                                                                                             

WHERE Subject.Subj_ID = Progress.Subj_ID   AND                                                                              

Subject.Subj_NAME = 'Информатика'                                                    

Келтірілген ішкі сұраныстарда тек қана жалғыз тік жолы қолданылады. SELECT *   сияқты бұйрықтарды ішкі сұраныстарда қолдануға болмайды.                   

Ішкі сұраныстарды HAVING сөйлемінде қолдану болады. Бұл ішкі сұраныстар өзінің GROUP BY немесе HAVING сөйлемдерін қолдануы мүмкін. Мысалы:                                                                                                                

SELECT Ocenka,  COUNT (DISTINCT Stud_ID  )

                           FROM Progress

                           GROUP BY Ocenka

             HAVING Ocenka > (

                          SELECT AVG(Ocenka )

                                                                                     FROM Progress                                                                                                 

WHERE Pr_DATE >’ 04/06/02’  )                                                    

Бұл бұйрық бойынша емтиханды 04.06.02 кейін тапсырған бағалары орта бағадан үлкен студенттер тізімі көрсетіледі.                                         

Байланысқан ішкі сұраныстар. Ішкі сұраныстан сыртқы сұраныстағы кестені қолдануға болады. Мысалы, емтиханды 3 маусымнан кейін тапсырған студенттерді табу керек болсын:                                                                                                                                           SELECT *                                                                                                                                

 FROM Students C                                                                                                                   

WHERE '2004-06-03' IN (                                                                                          

SELECT Pr_DATE                                                                                                                       

FROM Progress O                                                                                                  

WHERE O.Stud_ID = C.Stud_ID   )                            

Осы нәтижені алу үшін ұйымдастыруды қолдануға да болады:                                               

 SELECT C.*                                                                                                                     

FROM Students C, Progress O                                                                                      

WHERE C.Stud_ID   = O.Stud_ID   AND                                                                                    

O. Pr_DATE = '2004.06.03'                                            

Кестені өзі-өзімен салыстыру үшін байланысқан ішкі сұраныстарды қолдануға болады. Мысалы, бағалары орта мәннен артық студентерді табу үшін келесіні орнатамыз:                                                                                                               SELECT *                                                                                                                               

FROM Progress O                                                                                                                                            

WHERE Оcenka > (                                                                                                                  

SELECT AVG(ocenka )                                                                                                          

FROM Progress O1                                                                                                                                           

WHERE O1.Stud_ID  = O.Stud_ID )                                                          

      EXISTS операторын қолдану. EXISTS операторы ішкі сұранысты аргумент ретінде қолданып, ол жазбаларды тапса, оны ақиқат деп, кері жағдайда ақиқат емес деп есептейді. Мысалы, мәліметтер қорында стипендиялары 1200 тең студенттер  бар екендігін тексерейік:                                                                                                    SELECT Stud_ID , Stud_FAM, Stud_STIP

                                  FROM Students

  WHERE EXISTS (

             SELECT *

             FROM Students

             WHERE Stud_STIP = 1200  )

        Ішкі сұраныс стипендиялары 1200 тең студенттерді тауып, олар туралы барлық мәліметтерді шығарады. Сыртқы сұраныста EXISTS операторы ішкі сұраныс мәліметтерді тапты, сондықтан шарт ақиқат деп есептейді. Ішкі сұраныс бір рет орындалады, оның жалғыз мәні бар.                                                                                                                                           

    ANY, ALL операторларды қолдану. Емтихандарды тапсырған студенттерді іздеудің        тағы бір амалын қарастырайық:                                                                                                                                                                                SELECT *                                                                                                               

FROM Students                                                                                                                  

WHERE Stud_ID = ANY (                                                                                                                

SELECT Stud_ID                                                                                                                             

FROM Progress                                                    )                                                    

ANY операторы ішкі сұраныспен шығарылған барлық мәндерді алып, егер де олардың кез-келген мәні сыртқы сұраныстың ағынды жолындағы мәнге тең болса, оларды ақиқат деп есептейді. Келтірілген сұраныста IN операторында қолдануға болар еді.                                                                                                              

Егер де ішкі сұраныспен таңдалынған мәндердің әр қайсысы сыртқы сұраныстың шартын қанағаттандырса, ALL операторы шартты ақиқат деп есептейді. Стипендиялары 1500-ден көп студентер тізімін шығарайық:                                  SELECT *                                                                                                           

FROM Students                                                                                                                 

WHERE Stud_STIP > ALL(                                                                                                                 

SELECT Stud_STIP                                                                                                                            

FROM Students                                                                                                                                 

 WHERE Stud_STIP = 1500  )                                                                                

UNION бұйрығын пайдалану. UNION бұйрығы бірнеше сұраныстардың нәтижелерін біріктіреді және қайталанатын жолдарды жояды. Мысалы, төменде келтірілген сұраныс студенттер мен мұғалімдердің К және С әріптер арасында орналасқан фамилияларын шығарады:                                                            

SELECT Stud_FAM                                                                                                                                                                                   

FROM Students                                                                                                                 

WHERE  Stud_FAM   BETWEEN  'К'  AND 'С'                                                               

UNION                                                                                                                                                                                                      

SELECT Teach_FAM                                                                                                                                                                                

FROM Teacher                                                                                                                  

WHERE Teach_FAM  BETWEEN 'К' AND 'С'                                                  

 UNION    бұйрығын қолдану үшін екі талап бар:                                                    

-         тік жолардың саны мен реті барлық сұраныста бірдей болуы керек;                

-         мәліметтер типтері сәйкес болуы керек.                                                       

-         UNION қайталанатын жазбаларды көрсетпейді. Егер де сұраныстың барлық жатық жолдары керек болса UNION ALL бұйрықты қолдану керек:             

-         SELECT  Stud_FAM

                FROM Students

                          UNION ALL

                SELECT Teach_FAM   FROM Teacher                                                                                                                                   

   4.3 Елестетуді жасау және қолдану

    Мәліметтер қорында кесте түрінде сақталынған алдына-ала анықталған сұраныс елестету деп аталады. Елестету кесте сияқты қолданылады, бірақ кестелерден өзгеше сақталынуға қосымша орынды талап етпейді. Елестетуде қолданылатын кесте жойылса, елестетумен жұмыс істеуге мүмкіншілік болмайды.                                                                                                       

Елестетуді мәліметтерді қорғауға пайдалануға болады, басқа сөзбен айтқанда WHERE қызмет сөздің өрнегімен анықталатын шарттарға байланысты пайдаланушылардың кестенің белгілі тік немесе жатық жолдарына қол жеткізуін шектеуге болады. Мысалы, мәліметтер қорының пайдаланушыларының барлығы кестеде сақталынған қызметкерлердің жалақысын көруге рұқсат болмаса,  ол кестеге тек қана керекті мәліметтерден тұратын елестету жасалынады (бұл елестетуге жалақыларды көрсететін өріс кірмейді).                                                                                                           

Жиі өзгеретін кестелер негізінде отчет жасау үшін елестетулерді қолдану ыңғайлы.                                                                                                        

Елестету CREATE VIEW бұйрық көмегімен жасалынады. Елестетуді бір немесе бірнеше кестелер және басқа елесету негізінде жасауға болады. Мысалы, Students кестесі негізінде StudAddress елестетуін жасайық:                                           CREATE VIEW    StudAddress                                                                                                              

AS

                                SELECT   Stud_ID, Stud_FAM, Stud_IMA, Stud_ADDRESS

                                FROM  Students                                                                                                                                                        

 Елестетуді жою үшін DROP VIEW бұйрығы қолданылады. Бұл бұйрықтың екі опциясы бар: RESTRICT және CASCADE. Егерде RESTRICT қолданылса және шарттарда тәуелді елестетулер болса, DROP VIEW операторы қатені көрсетеді. CASCADE параметрін қолданғанда тәуелді елестетулер болса DROP VIEW барлық елестетулерді жояды.                                                                                                                                                                                                                          

4.4 лабораториялық жұмысқа тапсырма                                                           

4.1- 4.3 бөліктерде келтірілген тапсырмаларды орындаңыз.                                                 

Мәліметтер қорынан келесі мәліметтерді табыңыз:                                         

4.4.1 «Информатика» және «Физика» пәндерін беретін мұғалімдер тізімін.            

4.4.2 Қанағат емес бағалары бар студенттер тізімін.                                                

4.4.3 Жоғары математика пәнінен емтиханды тапсыра алмаған студенттер

4.4.4 «Информатика» кафедрасының мұғалімдер тізімін.                                  

4.4.5 Кафедралар мен олардың меңгерушілерінің тізімін.                                  

4.4.6 Топтар мен старосталар фамлилиялараның тізімін.                                         

4.4.7 Әр тобының студенттер тізімін, олардың барлық пәндерден алған бағаларын.                                                                                                                      

4.4.8 «Информатика» пәнінен сабақ өтетін топтар тізімін.                                   

4.4.9 Бірінші тобында «Информатика» пәнінен қандай сабақтар өткізіледі?              

4.4.10 Семестр бойынша әр тобында барлық пәндерден неше сағат  сабақтар өткізіледі?                                                                                         

4.4.11 Students, Subject және Progress кестелер негізінде STUDOСENKA елестетуді жасаңыз. Бұл елестетуде студенттер тізімі олардың пәндерден алған бағаларымен бірге көрсетілуі қажет.

                                                                                                                                       

4.5.         Бақылау сұрақтары                                                                                   

4.5.1 WHERE сөзбен орнатылған өрнекте бірнеше AND сөзі болуы мүмкін бе?        

4.5.2 Рекурсивті байланыс деген не?                                                                   

4.5.3 Кестелерді байланыстырғанда олардың байланысу реті FROM  сөзінде орнатылған ретпен бірдей болуы керек пе?                                 

4.5.4 Сұраныс операторында байланыстыратын кестені қолданғанда оның         тік          жолдарын міндетті түрде таңдау қажет пе?                                     

4.5.5 Сұраныста кестенің бірнеше тік жолдарын байланыстыруға бола ма?                        

4.5.6 Кестелерді байланыстыру шарты SQL операторының қай бөлігінде      орнатылады?                                                                                                      

4.5.7 Егер де сұраныста екі кестеден мәліметтер ізделінсе, бірақ ол кестелер байланыстырылмаса, қандай нәтижені аламыз?                                                      

4.5.8 Кестелердің псевдонимдары не үшін қолданылады?                                  

4.5.9 Ішкі сұраныс деген не? Ол қалай жұмыс жасайды?                                   

4.5.10 Елестетуді жасағанда пайдаланған кесте жойылса, не болады?                

4.5.11 Елестетуді мәліметтерді қорғауға қалай қолдануға болады?

 

5 лабораториялық жұмыс. Сақталынған процедуралар мен триггерлер                                                                                                                                         

5.1 Процедураларды қолдану                                                                                

SQL  бұйрықтары (CREATE TABLE, INSERT, UPDATE, SELECT) мәліметтер қорына қандай әрекет жасалыну керек екендігін көрсетеді. Ал, мәліметтер қорға мәліметтерді қалай өңдеу керек екендігін процедуралар жеткізеді.                Бағдарламаларда қолдану ыңғайлы болу үшін жасалынған SQL-дің операторлар жиынтығын сақталынған процедура деп  атайды.  Қайта-қайта операторлар жиынтығын жазғанша сақталынған процедураны қолдану ыңғайлы. Сақталынған процедурларды бірінің ішіне бірін орнатуға болады (енгізу деңгейі 16-дан артық болмауы керек).                                                      

Сақталынған процедура мәндерді қайтарады, пайдаланушы еңгізген мәндерді алдына ала орнатылған шарттармен салыстырады, есептеулер өткізеді, т.с.                                                                                            Сақталынған процедураларды қолданудың кейбір артықшылықтары:         

-         процедураның операторлары мәліметтер қорында сақталынады;                      

-         процедураның операторлары тексеруден өткен, пайдалануға дайын;    

-         процедураны қолданғанда нәтиже тезірек алынады;                                

-         процедуралдарды сақтап қою мүмкіншілігі модулдік бағдарламалауды қолдануға мүмкіндік береді;                                                                                          -

-         сақталынған процедуралар басқа процедураларды қолдана алады;     

-         сақталынған процедураларды басқа бағдарламалармен пайдалануға болады.                                                                                                                   

-         SQL Server –де процедуралар келесі операторлар көмегімен жасалынады:                                                                                                                                  CREATE PROCEDURE процедура_аты                                                                         [ @параметр_аты типі  [=default] [output ]                                                           

-         [, @параметр_аты  типі [=default] [output ]                                                                

-         AS                                                                                                                                                       

-         SQL операторлары                                                                                   

-         Сақталынған процедураны қолдану:                                                                    

-         EXECUTE  процедура_аты                                                                                                    

-         [ [ @ парамтер_аты  =] мәндері |                                                                                        

-         [ @ параметр_аты = ] @ айнымалы [ OUTPUT ] ]                     

-         Процедураларда параметрлерді қолдану:                                                    

-         - процедурада бір немесе бірнеше параметрлерді анықтауға болады;                

-         жадыда сақталынатын нақты объектілердің аттары параметр деп аталады        (бағдарламалау тілдердегі айнымалылардың аналогтары);          

-         параметр атының алдында @ символы болуы керек;                                 

-         параметр аттары олар анықталған процедура үшін локалды болады.           

Параметрлердің нақты мәндері процедураны жұмысқа қосқанда анықталады. Параметрлер процедураның атынан кейін орнатылады, параметрлер саны көп болса, олар үтірмен бөлінеді. Параметр типін анықтау үшін мәліметтердің стандартты типтері қолданылады.                              

Мысалы, GRUPPA кестесінде Grup_COURSE өрісіндегі мәндерді (курстардың номерін) бірлікке өсірмек болайық:                                                                 CREATE   PROCEDURE new_course                                                                                AS                                                                                                                                       

UPDATE GRUPPA                                                                                            

SET Grup_COURSE = Grup_COURSE +1                                                                                                                                                                     

Процедураны орындайық:                                                                                                   

EXEC  new_course                                                                                                                                                                                                   

Процедура жұмысын тексерейік:                                                                       

SELECT *    

 

          

FROM   GRUPPA                                                                                                                                                                                                                             

GRUPPA кестесін бұрынғы күйіне қайтаратын процедура:                                                   

CREATE   PROCEDURE old_course                                                                   

AS                                                                                                                                                    

UPDATE GRUPPA                                                                                                        

SET Grup_COURSE = Grup_COURSE -1                   

Тексереміз:                                                                                                                         

EXEC  old_course                                                                                             

SELECT *                                                                                                                    

FROM   GRUPPA                                                                                                                                                                                                                           

GRUPPA кестесіне жаңа жазбаларды еңгізуге қолданатын процедура:                     

CREATE PROCEDURE new_gruppa                                                                       

@Grup_ID  int,                                                                                                        

@Grup_NAME  char(9),                                                                                                         

@Grup_KOLSTUD  int,                                                                                            

@Grup_COURSE  int                                                                                                       

AS                                                                                                                                         

INSERT INTO Gruppa                                                                                                             

VALUES (@Grup_NAME, @Grup_KOLSTUD, @Grup_COURSE);              

Gruppa кестесінің Grup_ID  тік жолының типі identity болғандықтан, ол енгізі кезде анықталады.                                                                                                              

Процедураның жұмысын тексереміз:                                                                   

EXEC new_gruppa 6, 'РРТ-04-2',25,2                                                             

Келесіге зер салыңыз: бұл бұйрықпен Grup_ID айнымалыға кез-келген мән меншіктеледі, бірақ мәліметтер қорында бұл өрістің бейнелеуі бойынша (identity) оған автоматты түрде келесі ретті мән меншіктеледі.                                       

SELECT операторын қолданатын қарапайым процедура:                                

CREATE PROCEDURE spisok_stud                                                                                  

AS                                                                                                                                         

SELECT * from Students                                                                                                                                                                                                             

5.2 Триггерлер                                                                                                                         

Мәліметтер қорында болып жатқан жағдайлармен жұмысқа қосылатын әрекеттерді орындауға негізделген процедураны триггер деп атайды. Кестеге белгілі әрекеттерді қолдағанда орындалатын сақталынған процедура триггер болады. Триггер INSERT, UPDATE, DELETE опрераторлардың алдында немесе олардан кейін орындалуы мүмкін.                                                                     

Триггер - мәліметтер қорының бүтіндігін қамтамасыздандыратын SQL-сервердің арнайы инструменті.                                                                   

Мысал қарастырайық. Progress кестесі үшін tri_ins_progress триггерін анықтайық. Progress кестесіне жазба енгізілсе немесе өзгерсе  бұл триггер жұмысқа қосылады. Егер де емтихан немесе сынақ уақытысында тапсырылмаса (мысалы, айдың 15-не дейін) жазба қабылданбайды. SQL Server Enterprise Manager утилиталарымен триггерді жасау үшін мәліметтер қорының объектілер тізімінен Progress кестені таңдап алып, контексттік менюден келесі Аll tasks (Все задачи) - Manage Triggers бұйрықты орындау керек. Нәтижесінде триггер қасиетінің терезесі ашылады. Бұл терезеге келесі мәтінді енгізіңіз:                     

CREATE TRIGGER tri_ins_progress

ON Progress

FOR INSERT, UPDATE

AS

/*локалды айнымалылар бейнеленеді*/

DECLARE @nDayOfMonth TINYINT

/* енгізілетін жазбалар туралы мәліметтер анықталады*/

SELECT @nDayOfMonth = DATEPART (Day, I.Pr_DATE)

FROM Progress P, Inserted I

WHERE P.Stud_ID = I.Stud_ID

AND P.Ocenka = I.Ocenka

/*жазбаны енгізу шарты тексеріліп*/

/*қажет болса қате туралы хабар көрсетіледі*/

IF @ nDayOfMonth >15

BEGIN

            /*егер де мәліметтер қорына қол жеткізуге рұқсат болмаса,                                                                               мәліметтер өңдеуін жою үшін  ROLLBACK бұйрығы  қолданылады*/

ROLLBACK TRAN

RAISERROR ('Вводить оценки, полученные до 15-го числа', 16,10)

END

 

      Студенттердің 15-нен кейін алған бағалары туралы мәліметтерді Progress кестесіне енгізіп көріңіз.                                                                      

Триггерді жою үшін келесі бұйрықты қолданамыз:                                                  

DROP TRIGGER триггер_аты                                                          

 немесе контекстік менюден Аll tasks (Все задачи) - Manage Triggers бұйрықты қолданып, тригер атын тізімнен таңдаймыз.                                                                                                                                                                                        

5.3 Лабораториялық жұмысқа тапсырма                                                          

5.3.1 Алдынғы 5.1-5.2 бөліктерде келтірілген тапсырмаларды орындаңыз.

5.3.2    Келесі әрекеттерді жасауға мүмкіншілік беретін процедураларды жасаңыз:                                                                                                                      

-         Барлық студенттердің стипендиясын 15%-ке өсіру.                                             

-         Subject кестесіне жаңа пәндердің аттарын қосу.                                          

-         Белгілі пәндерден озат оқитын студенттерді табу.                                      

-         Үлгермейтін студенттерді табу.                                                                      

-         Кафедралар мен олардың меңгерушілерінің тізімін дайындау.                         

5.3.3    Жоғары оқу орнына жасы 35-тен кем абитуриенттер қабылданады.           

Students кестеге мәліметтерді енгізгенде студенттердің жасын бақылап         отыратын тригеррді жасаңыз.                                                                                                                                                                                              

5.4            Бақылау сұрақтары                                                                                   

5.4.1 Сақталынған процедура басқа сақталынған процедураны шақыра ала ма?                   

5.4.2    Процедураларды қолданудың қандай артықшылығы бар?                                  

5.4.4 Триггер қай кезде орындалады: INSERT, UPDATE, DELETE  бұйрықтардың         алдында ма олардан кейін бе?                                                                   

5.4.5 Триггерді өзгертуге бола ма?                                                                                                                                                                                                                                                             

6 лабораториялық жұмыс Клиенттік қолданбалы бағдарламаларды өңдеу                                                                                                                                                                                                                                                                                                                  6.1 Мәліметтерге DELPHI қолданбалы бағдарламадан қол жеткізу (альясты жасау)                                                                                               

Мәліметтермен жұмыс жасау үшін мәліметер қорын жобалап, жасаған жеткілікті емес. Мәліметтерге қол жеткізу, оларды өңдеу мүмкіншіліктері болуы қажет. Сондықтан пайдаланушыға ыңғайлы түрде мәліметтермен жұмыс жасауға негізделген арнайы бағдарламаны – “клиенттік қолданбалыны” жасау керек.                                                                                                

Мәліметтерге қол жеткізу Delphi бағдарламадасынан өткізіледі. Лабораториялық жұмыста мәліметтерге қол жеткізу үшін Borland Database Engine (BDE) бағдарламалық жиынтығында негізделген универсалды интерфейсі қолданылады. BDE жиынтығының артықшылығы келесі қасиетте: мәліметтер қорымен байланыстыру құралдары клиенттік бағдарламадан бөлек болады. Пайдаланушы келісілген атты атайды, ал бағдарлама онымен байланысқан параметрлерді өзі жұмысқа қосады. Осы келісілген ат альяс деп аталады (ағылшынша alias – псевдоним). Сонымен, бағдарлама мәліметтер қорындағы мәліметтермен жұмыс жасау үшін біріншіден BDE-ні жөндеу керек яғни альяс жасап, оны мәліметтер қорымен байланыстыру. Бұл үшін арнайы қызмет бағдарлама бар - BDE Administrator.                                                               

Бұл процедура келесі қадамдардан тұрады:                                                   

6.1.1 Пуск-Программы- Borland Delphi7- BDE Administrator менюды таңдап                       алыңыз.

BDE Administrator бағдарламаның сол жақ терезесінде барлық жасалынған альястар тізімі көрсетілген.                                    

6.1.2 Object-ODBC Administrator  менюді таңдап, Add (Добавить) батырманы  басыңыз.                                                                                       

 

6.1.3 Пайда болған терезеде драйвер түрін - SQL Server-ді таңдаңыз.                    

6.1.4 Келесі терезеде альястың атын (мысалы,    My_Application), бейнелеуін, сервер түрін орнатамыз (3 - сурет).                                            

6.1.5 Келесі терезелерде тізімнен мәліметтер көзін (мысалы, education) және хабарларды көрсету тіл (Russian) таңдалынады (4 - сурет).

 

6.1.6 Нәтижесінде жасалынған альяс аты тізімге қосылады. Енді  осы ат     бойынша мәліметтер қорымен жұмыс істеуге болады.  Мәліметтер     қорымен байланыс орнатылғанын бақылау үшін TEST батырмасын                  басып, тексеруді өткізіңіз.                                                                                                                                                                                                               

6.2 «Education» мәліметтер қоры үшін қолданбалы бағдарлама жасау       

Бастапқы бейнені жасау                                                                                      

6.2.1 Delphi 7 бағдарламасын жұмысқа қосыңыз. Компоненттер          палитрасынан  біздерге керектісі:                                                                                               

 - Data Access – мәліметтер көзі. Мәліметтер қорына қол жеткізүдің барлық түрлерінде осы компоненттер қолданылады.                                

       BDE -  Borland Database Engine құрылғы арқылы мәліметтер қорына қол жеткізетін компонент.                                                                         

       Data Control – мәліметтермен жұмыс жасауға (өзгерту, қарап шығу,  экранға шығару, т.б) негізделген компоненттер.                                          

6.2.2         Бейнеге Query (BDE бөлігінде), Data Source (Data Access бөлігінде), DB  Greed (Data Control бөлігінде) компоненттерді орнатыңыз.                             

6.2.3 Компоненттердің келесі қасиеттерін орнатыңыз:                                                

Form1 үшін:  Caption  -     Справочник к базе данных education                                      

 Position  -   poScreenCenter                                                                                                                                    

        

3 - сурет. Альясты жасау

          

Query1 үшін: DatabaseName  -  MyApplication (тізімнен таңдап алып);                                 

requestLive      -   true;                                                                                

SQL                 -   select * from Students                                     

(SQL қасиеті – арнайы терезеге еңгізілетін сұраныс мәтіні. Оны еңгізу үшін графаның оң жағында пайда болатын көп нүктесі бар батырманы басыңыз).              Data Source1 үшін:     Data Set   -  Query1;                                                           

DBGreed үшін:           Data Source  - DataSource1.                                   

6.2.4    Query1 компонеті үшін келесі Active := true қасиетті орнатыңыз.             

6.2.5    Экранда   сұранысты еңгізетін диалог терезесі пайда болады. ОК батырмасын басыңыз. Мәліметтер қорымен байланыс орнатылып, кестеде жазбалар пайда болады.             

Пайдаланушы байланысты өзі орнатуы қажет. Сондықтан,Query1              компонеті үшін қайтадан Active := false қасиетін орнатыңыз.                

6.2.5 Бейненің төменгі жағына екі батырманы қосыңыз (Standard бөлігіндегі         Button).     Олардың қасиеттерін орнатыңыз:                                                                       

Button1 үшін Caption–  Подключиться       

Button2 Caption үшін   Выход                                                                      

6.2.6    Батырма үшін OnClick оқиғасының өңдеу әдістерін орнатыңыз:                                              

Button1 батырмаға екі рет басып, процедураны енгізіңіз:                                                 

4 -сурет Мәліметтер көзін таңдау

 

 

 

 

procedure TForm1.Button1Click(Sender: TObject);                                                       

begin                                                                                                                          

Query1.Active::=true;                                                                                     

Button1.Enabled:=false;                                                                                 

end;                                                                                                  

Button2 үшін әдісі (бұл батырма бағдарламаны жабады):                              

procedure TForm1.Button1Click(Sender: TObject);                                                         

begin                                                                                                                

if Query1.Active then Query1.Close;                                                                       

Application.terminate;                                                                             

end;                                                                                                                                                                                                                             

6.2..7 Жобаны сақтаңыз. Бағдарламаны жұмысқа қосып,  «Подключиться»          батырмасын басыңыз. «Выход» батырманы басып, бағдарламаның           жұмысын аяқтаңыз.                                                                                                                                                                                                      

Алынған кестенің барлық тік жолдары көрсетіледі, ал тік жолдаратаулары ретінде олардың аттары қолданылады. Кестенің ат жолдарын  пайдаланушыға түсінікті аттарға өзгертейік.                                                                                            

6.2.8 DBGreed1 кестені белгілеп, контексттік менюден Column Editor   пунктін         таңдаңыз. Ins батырманы басыңыз, жаңа жол пайда болады. Бұл терезенің         әрбір жолы DBGreed1 компонентінің бағанасына сәйкес.                         

6.2.9 Бағананың келесі қасиеттерін орнатайық:                                               

FieldName – осы бағанаға сәйкес кестенің өрісін таңдаңыз (мысалы,         Stud_FAM). Бұл өрістің Stud_FAM атының орнына - «Фамилия студента»     деген атауды орнатамыз. Ол үшін Title сөздің     қасындағы + белгіге           басып, Title тізімді ашыңыз, ат жолының қасиеттерін орнатыңыз:                   

Alignment -  taCenter;                                                                                              

Caption –     Фамилия студента;                                                                  

Font -           полужирный.                                                                    

Сол сияқты Имя, Отчество, Дата рождения атау жолдарын жасаңыз.           

6.2.10                             Query1 компоненті үшін Active = true қасиетін орнатып  мәліметтер барлығы көрінетіндей кестенің тік жолдарының енін жөндеңіз. Бітіргеннен кейін Active := false деуді ұмытпаңыз.                        

Бағдарлама жұмысын тексеріңіз.                                                                                                                                                                              

Мәліметтермен жұмыс жасау                                                        

6.2.11 Бағдарламаны жұмысқа қосыңыз. Кез-келген жазбаны жөндеу үшін, курсорды керекті орнына орнатып, жөндеуді енгізіңіз. Кейбір жабаларды  жөндеңіз.                                                                                                

6.2.11                             Жазбаларды жоюдың процедурасын жасайық. Бейнеге «Удалить» жазуы бар Button3 батырманы орнатыңыз.                       

Батырманың процедурасы:                                                                                  

procedure TForm1.Button3Click(Sender:TObject);                                               

begin                                                                                                                

Query1.Delete;                                                                                       

end;                                                                                                                  

6.2.12                             Жазбаны жояр алдында ескерту хабар көрінуі керек.      

Сондықтан        BeforeDelete оқиғаны жөндеу операторларын      қосыңыз (бұл процедура          SQL компоненттің EVENTS беттегі      BeforeDelete қасиетіне          орнатылады):   procedure TForm1.Query1BeforeDelete(DataSet:DataSet);                           

begin                                                                                                                

if not (MessageDlg(‘Удалить запись?’,  mtError, [mbYes,mbNo],0) = mrYes)                    

then                                                                                                        

begin                                                                                                                         

Abort;                                                                                                     

end;                                                                                               

end;                                                                                                               

6.2.14 Бейненің төменгі жағында TPageControl элементін орнатыңыз (Win32           бөлігінен). Бұл элементтің бір бетінде іздеу элементтерін, басқа  бетінде – бағдарламаны өңдеуші туралы мәліметтерді орнатамыз.              

Компонент өлшемдерін жөндеңіз.                                                    

6.2.15 Компоненттің беттерін жасау үшін контексттік менюден “New Page”           пунктін таңдаңыз. Caption қасиетін келесідей орнатыңыз:                                      

TabSheet1 үшін         «Поиск»,                                                                     

TabSheet2 үшін           «Справка».                                                            

6.2.16 «Поиск» бетінде TLabel, TEdit, TButton компоненттерін  орнатыңыз.                    

Олардың келесідей қасиеттерін анықтаңыз:                                                               

Label1 үшін Caption   – Фамилия;                                                                        

Button4 үшін Caption – Найти;                                                                    

Edit1  үшін Text    - бос болсын.                                                          

Button4 батырма үшін келесі процедураны орнатыңыз:

                                                                                                                

procedure TForm1.Button4Click(Sender: TObject);                                              

begin                                                                                                                          Query1.Locate('Stud_FAM',Edit1.text,[loPartialkey, loCaseInsensitive]);    

end;                                                                                                         

 

Бұл батырманы басқанда Edit1 өрісіне еңгізілген мәтін бойынша осындай символдардан басталатын фамилиясы бар жазба ізделінеді.             

6.2.17 Біздің процедура бойынша мәліметтер қорының жазбалары фамилияның мәтінін бір бөлігі және әріптердің регистрін есепке алмай ізделінеді. Іздеу функцияның тәртібін өзгертейік. Ол үшін бейнеге екі TCheckBox (қосуды өзгертуші) орнатайық.  Олардың жазулары «По части строки» және «Без регистра» болсын. Button4                   батырманың процедурасын келесідей өзгертейік:                                                      procedure TForm1.Button4Click(Sender: TObject);                                              

var LocOpts:TLocateOptions;                                                                                 

begin                                                                                                                    

LocOpts:=[ ];                                                                                                      

if CheckBox1.Checked then LocOpts:= LocOpts+[loPartialKey];                             

 if CheckBox2.Checked then                                                                                        

LocOpts:= LocOpts+[loCaseInsensitive];                                                                    

Query1.Locate (‘Stud_FAM’,  Edit1.Text, LocOpts);                                              

end;                                                                                                         

Енді пайдаланушының орнатқан тәртібіне сәйкес іздеу функциясы өзгеріп тұрады. Процедура жұмысын тексеріңіз.                                     

6.2.18 Кестенің бір неше өрісі бойынша ізденіс өткізілетіндей процедураны  өзгертейік. Бейнеге TEdit, TLabel компоненттерді орнатыңыз, жазуларын  өзгертіңіз.                                                                                                        Button4 батырманың процедурасы келесідей өзгереді:                                                                                                                                                          

procedure TForm1.Button4Click(Sender: TObject);                                                       

var LocOpts:TLocateOptions;                                                                                                    

LocFields:string;                                                                                              

LocValues:variant;                                                                       

begin                                                                                                                    

LocOpts:=[ ];                                                                                                       

LocFields:='Stud_FAM';                                                                                     

if Length(Edit2.Text)>0 then                                                                              

begin                                                                                                                

LocFields:=LocFields+';Stud_IMA';                                                                 LocValues:=VarArrayCreate([0,1],varVariant);                                                    

LocValues[0]:=Edit1.Text;                                                                              

LocValues[1]:=Edit2.Text;                                                                        

end                                                                                                                                

else                                                                                                               

LocValues:=Edit1.Text;                                                                                        

if CheckBox1.Checked then LocOpts:=LocOpts+[loPartialkey];                              

if CheckBox2.Checked then LocOpts:=LocOpts+[loCaseInsensitive];               

Query1.Locate (LocFields, LocValues, LocOpts);                                         

end;                                                                                      

Процедура жұмысын тексеріңіз.                                                                       

6.2.19 PageControl1 компонентінің «Справка» бетінде анықтама          мәліметтерді      орнатыңыз.                                                                                                                                                                                                                             

6.3                                         Лабораториялық жұмысқа тапсырма

Өзіңіздің мәліметтер қоры үшін келесідей қолданбалы бағдарламаны жасаңыз.                                                                                                            

Негізгі бейнеде үш «Таблицы», «Запросы», «Оценки» беттері бар TPageControl компоненті орнатылады.                                                                        

«Таблицы» бетінде ашылатын тізімнен (TComboBox элементі) керекті кесте таңдалынады, «Просмотреть таблицу» (TButton) басып кестенің мәліметтерін TDBGrid элементінде көреміз. DBNavigator компоненті көмегімен кестенің әртүрлі жазбаларын қарап шығамыз.                                            

«Запросы» және «Оценки» беттерде алдындағы бет сияқты қолданылады.     

Студент қолданбалы бағдарламаның өзінің вариантын ұсынуына болады.                                                                                                                        

6.4                                         Бақылау сұрақтары                                                                                  

6.4.1 Қолданбалы бағдарламаның интерфейстік бөлігі деп нені атайды?         

6.4.2 ODBC технологиясы деген не?                                                                      

6.4.3 Мәліметтер қорына қол жеткізуді қамтамасыздандыратын     бағдарламанын атын атаңыз.                                                                                

6.4.4 Бір сервердегі мәліметтер қорына басқа серверден қол жеткізу болама?    

                                                                                                                                  

7 ӨЗІНДІК ЖҰМЫСҚА ТАПСЫРМА          

 

         Өзіндік жұмысқа тапсырманы мұғалім береді.                                                                                        

7.1 Вариант бойынша таңдалынған тақырып өрісінің мәліметтерін анализдеңіз. Белгілі пайдаланушы көз-қарасынан мәліметтік қажеттіліктерді және мәліметтер қорының мәліметтерінің елестетулерін анықтаңыз. Үлгіленетін өрісі үшін мүмкін болатын сұрақтарын құрастырыңыз.

7.2 Үлгіленетін тақырып өрісіне қойылатын көп деген сұрақтарына жауап бере  алатын берілген тақырып өрісі үшін мәліметтік-логикалық үлгіні жобалаңыз: объектілік жиынтықтары мен олар арасындағы байланыстарды анықтаңыз. Объектілер мен олар арасындағы      қатынастарды концептуалды  схемада көрсетіңіз.

7.3 Жасалынған концептуалды үлгіні реляциондық үлгіге түрлендіріңдер.

7.4 Мәліметтер қоры өңделетін ортаны бейнелеңіз.

7.5 Мәліметтер қорының кестелерін жасаңыз. Оларға мәліметтерді еңгізіңіз.

7.6 Қойылған сұрақтарға жауап алу үшін мәліметтер қорында ізденіс жасаңыз. Бұл бөлікте барлық ізденіс мүмкіншіліктерін қолданыңыз.

7.7 Delphi бағдарламада мәліметтер қорының мәліметтеріне (кестелеріне)   қол   жеткізетін және әртүрлі сұраныстарға жауап алуға негізделген   қолданбалы  бағдарламаны өңдеңіз.

7.8 Түсініктеме қолжазбаны бейнелеңіз. Қолжазба келесіден тұрады:

         - тақырып өрісінің бейнелеуі;

         - концептуалды үлгі;

         - мәліметтер қорының реляциондық схемасы;

-         MS SQL Server мәліметтер қорларын басқару жүйесінде жобаны  жасап оны мен жұмыс істеуге қолданған барлық бұйрықтары:                          

кестелерді жасау, кестелерді мәліметтермен толтыру, мәліметтер  ќорына сұраныстарды жасау;

- сұраныстарды орындау нәтижелері;

- Delphi тілінде өңделген бағдарламаның мүмкіншіліктері және

            модулдердің мәтіні.

7.9 Түсініктеме жазба және жасалынған жұмыс (дискетада) мұғалімге

       тапсырылады.

7.10 Жұмыс тексерілгеннен кейін, қорғалады. Жұмысты қорғау үшін

         қолданбалы бағдарлама көрсетіледі, бақылау сұрақтарға жауап беріледі.  

 

 

                                                                                                                                                                                                                                                                                                                  Әдебиеттер тізімі                                                         

 1. Хансен Г., Хансен Д. Базы данных: разработка и управление. –  М.: ЗАО «Издательство БИНОМ», 1999.                                                             

2. Тихомиров Ю. Microsoft SQL Server 7.0 – СПб.: Издательство «Питер», 1999.

3. Плю Р., Стефенс Р.,  Райан К. Освой самостоятельно SQL за 24 часа. – М.: Издательский дом «Вильямс», 2000.                                                      

4. Кандзюба С.П., Громов В.Н. Delphi 6/7. Базы данных и приложения. – СПб:    ООО «ДиаСофт», 2002.                                                                            

5. Бобровский С. Delphi 5: учебный курс. – СПб: Издательство «Питер», 2000.                                                                                                         

                                              

                                                                             

 2004 ж. жиынтық жоспары., реті 19 

 

 

 

 

Лида Куандыковна Ибраева

Елена Григорьевна Сатимова

 

 

МӘЛІМЕТТЕР ҚОРЫН ЖОБАЛАУ

 

Лабораториялық жұмыстарды орындауға арналған әдістемелік нұсқаулар

(барлық мамандықтар студенттері үшін)

 

 

Редакторы Ж.А.Байбураева

 

Басуға рұқсат берілген _________                              Форматы 60х84  1/16

Тиражы 100 дана                                                           №1 типографиялық қағазы

Көлемі 2.5 оқу-баспа т.                                                 

Тапсырыс_____  Бағасы 52 тг.

 

 

Алматы энергетика және байланыс институтының көшірме-көбейткіш бюросы

480013 Алматы, Байтурсын-ұлы көшесі, 126