Делфи және мәліметтер қоры

Автор работы: Пользователь скрыл имя, 08 Июня 2015 в 11:14, реферат

Описание работы

Бұл кезеңдерді локальды мәліметтер қорын қолданып BorlandDelphi7 ортасында орындау әрі жеңіл, әрі тиімді. Осы орайда мәліметтер қорын қолдана отырып ақпараттық жүйелерді құру және автоматтандырудың жобасы жасалынып, оның орындалуына әдістемелік нұсқаулар жазылды.
Оқу құралында келтірілген әр мысалдың Дельфи тілінде жобалық пішіні жасалып, бағдарламалары құрылуы оның практикалық маңыздылығын арттырады деген ойдамыз.

Содержание работы

Кіріспе
1 Мәліметтер қорын жобалау және ақпараттық жүйелер
1.1 Деректердің шамадан тыс қайталануы және аномалиялар
1.2 Ақпараттық жүйелерді жобалау
2 Delphi ортасында мәліметтер қорына рұқсат алу механизмдері
2.1 ADO провайдерлері
3 Мәліметтер қорын құру және басқару
3.1 Мәліметтер қоры кестелерін құру және басқару
3.2 Мәліметтер қоры кестесімен жұмыс
3.3 Клиенттік қосымшада жоғарғы мәзір құру
3.4 Мемо-өрістер, бағандарды жөндеу және деректерді іздеуді ұйымдастыру
3.5 Сұраныс құру
3.6 Есеп құру
4 Delphi7 ортасында локальды деректер қорын қолданып ақпараттық жүйелер құру
4.1 «Кадрлар бөлімі» ақпараттық жүйесінің жобасы
4.2 Мәліметтер қоры өзгерісін журналға тіркеу
5 Серверлік мәліметтер қоры және interbase серверімен танысу
5.1 INTERBASE локальды сервері
5.2 Индекс құру
5.3 Delphi7 және мәліметтер қоры серверлері
5.4 Генераторлар мен триггерлер
Қортынды
Әдебиеттер тізімі

Файлы: 1 файл

621.doc

— 2.30 Мб (Скачать файл)

 

10-сурет-Mamandik кестесінің құрылымы

 

«mamandik» кестесін байланыстырушы кілт екенін бақылауға болады. Тағы бір ерекшелік - N_bilet өрісінің типі санаушы болса, тура осы өрістің «mamandik» кестесіндегі типі бүтінсандық. Бұдан шығатыны: сыртқы кілттің атауы да, типі де негізгі кестедегі кілттен өзгеше болуы мүмкін, бірақ мәндері сәйкес келуі - тиістілік шарты. Бұл арада сыртқы кілтті санаушы деп бермей отырған себебіміз - «mamandik» кестесінде оның қабылдайтын мәндері қайталануы мүмкін. Егер біз сыртқы кілттің типін де санаушы деп берсек, оның мәні қайталанбайды, ол мынандай жағдайда тиімсіз: егер қандай да бір студент 2 мамандықта қатар білім алып жатса, 1-ші мамандығы күндізгі бөлімде, 2-ші мамандығы сырттай оқитын бөлімде болсын делік.

 

Ескерту.

Өте сирек кездесетін жағдай, бірақ мұны Сіздерге қарапайым түрде сыртқы кілттің ерекшелігін түсіндіру үшін ойластырып отырмыз және мұндай жағдайда кестелерді байланыстыру дәрежесі «Бірге-көп» болып анықталады. Тағы бір ескеретін жағдай, мұндай кестелердің арасында сілтемелік толықтылық сақталуын қадағалау керек, яғни басшы кестедегі бір деректі өзгерткенде бағынышты кестедегі деректер де сәйкесінше өзгеріп отыратын болуы керек.

 

Ол студент өзіне студенттік билет алсын, бірақ ол студент екі бөлімде оқитын болса да, студенттік билет бір-ақ рет берілсін, сонда «student» кестесіндегі билет нөмірі «mamandik» кестесінде 2 рет қайталанып тұр (10а-сурет). Бұл кестелерді N_bilet сыртқы кілтімен байланыстыру үшін тиімді. Егер міндетті түрде бір студент тек қана бір мамандықта оқитын шарт қойылса, онда «mamandik» кестесіндегі N_bilet өрісінің типін санаушы деп бере беруге болады. Онда «student» кестесі мен «mamandik» кестесі - бір жазбаға тек қана бір жазба сәйкестендірілетін байланыстырылған кестелер болып саналады, мұндай жағдайда кестелерді байланыстыру дәрежесі «Бірге-бір» болып анықталады.

 

10а-сурет-Байланыстырылатын «student», «mamandik» кестелері

 

Бұл екі кестелерді байланыстыру үшін байланыс дәрежесін анықтау керек. Байланыс дәрежесінің келесі түрлері бар екенін білесіздер:

    • бірге - бір;
    • бірге - көп;
    • көпке – бір;
    • көпке – көп.

Егер «student» кестесі мен «mamandik» кестесі «бірге-бір» байланыс дәрежесімен байланыстырылатын болса, онда екі кестенің біреуін басшы кесте деп, екіншісін бағынышты кесте деп анықтаймыз. Біздің мысалымызда «student» кестесі – басшы кесте, себебі студенттердің ең негізгі деректері сонда сақталып тұр, ал «mamandik» кестесі – бағынышты кесте. Ол үшін біз негізгі

кестені өзгеріссіз қалтырып, бағынышты кестенің структурасын ашамыз  (құрал-жабдықтар тақтасындағы Restructure пернесін басу арқылы) да, структура терезесінің сол жақ жоғарғы бөлігінде орналасқан Table Properties тізімінен  Secondary Indexes командасын таңдаймыз. Осыдан кейін диалогты терезе (11- сурет) көрініс береді.

 

11-сурет-Secondary Indexes элементі

 

Жаңа индекс құру үшін, Define батырмасын басамыз. Ашылған диалогтық терезенің Fields тізімінде бағынышты кестенің өрістер тізімі көрсетіледі (12-сурет).

12-сурет-Индекс құрамына кіретін өрістерді анықтау

 

Бұл терезедегі Indexed Fields бөлігіне біз қай сыртқы кілт арқылы байланыс орнататын болсақ, сол өрісті көрсетіп (яғни Fields тізімінен N_bilet өрісін белгілеп, Indexed Fields тізіміне өткізу үшін оң жаққа сілтеуішті (->) басу керек, сосын ОК батырмасын шертеміз. Сонда сыртқы кілт бойынша индекс құрылып, оны сақтау үшін атау сұрайды (13-сурет). Индекс атауы сыртқы кілт атауымен бірдей болмауы керек, әйтпесе қате шығарады. Біз мысал үшін индекс атауын nb деп енгіздік, сосын ОК батырмасын шерту арқылы сақтаймыз.

Құрылған индексті осы терезеде бірден көруге болады, егер оны белгілесе, онда Modify – индексті жөндеу, Erase – индексті өшіру пернелері белсенді болады (14-сурет). Барлық өзгерістерді сақтау үшін Save пернесін басамыз.

Егер «student» кестесі мен «mamandik» кестесі «бірге-көп» байланыс дәрежесімен байланыстырылатын болса, онда екі кестенің біреуін басшы кесте деп, екіншісін бағынышты кесте деп анықтаймыз. Біздің мысалымызда «student» кестесі – басшы кесте, себебі студенттердің ең негізгі деректері сонда сақталып тұр, ал «mamandik» кестесі – бағынышты кесте. Ол үшін біз негізгі кестені өзгеріссіз қалтырып, бағынышты кестенің структурасын ашамыз

 

13-сурет-Индексті сақтау терезесі

 

(құрал-жабдықтар тақтасындағы Restructure пернесін басу арқылы) да, структура терезесінің сол жақ жоғарғы бөлігінде орналасқан Table Properties тізімінен Referential Integrity командасын таңдаймыз (14а- сурет).

 

 

14-сурет-«mamandik» кестесі үшін анықталған индекс

 

Сілтемелі толықтылықты сақтау

Есептің қойылымынан белгілі болғандай «student» кестесі мен «mamandik» кестесі “бірге-көп” деген қатынаста, олай дейтініміз «student» кестесіндегі бір жазбаға «mamandik» кестесінен екі не одан көп жазба сәйкес келеді. Байланыс өрісі болып 2 кестеде де бар N_bilet өрісі болып табылады. Кесте мәліметінің бүтінділігін қарастырайық. Paradox–те сілтемелік бүтінділік бірінші кестедегі деректер өзгеріске ұшырағанда оған байланысты екінші кестедегі деректердің өзгеруін бақылайды.

 

14а-сурет-Сілтемелік толықтылық командасын таңдау терезесі

 

Сілтемелік толықтылықты құруды әрі қарай жалғастыру үшін Table Properties сұлама тізімінде Refrential Integrity элементін таңдаймыз және Define батырмасын шертеміз, сонда қай өрістердің деректері бір бірімен байланысты екендігін анықтауға көмектесетін терезе ашылады (15-сурет).

 

15-сурет-Сілтемелік толықтылықты құруға арналған терезе

 

Бұл терезенің Fields бөлімінде бағынышты кестенің өрістер тізімі келтірілген, ал Table бөлімінде басшы кестенің атауы көрініп тұрады. «student.db» атауын белгілеп сол жаққа сілтеу пернесін басамыз, сосын сол жақ шеттегі тізімнен N_bilet кілтін белгілеп,  оң жаққа сілтеу пернесін, сосын ОК пернесін басамыз, өзгерісті сақтаймыз, ол үшін құрылатын сілтемелік индекске атау енгізіп, ОК пернесін басамыз (16-сурет).

Бұл терезедегі Cascade командасы қосылса – бағынышты кестеден жазуларды жоюды каскадты түрде орындайды;  Prohibit - негізгі кестеде жазбаны жою немесе байланыс өрісіне өзгерісті шектеуді орындайды. Cascade

16-сурет-Сілтемелік толықтылық шартын анықтау

 

таңдап Ok пернесін басамыз.

 

Өзін өзі бақылау сұрақтары:

  1. Деректер қоры структурасы деген не?
  2. Дельфи ортасында деректер атрибуты немесе өрістерінің қандай типтері

   бар?

  1. Деректер қоры альясы деген не? Ол қалай құрылады?
  2. Деректер қоры кестесі қалай құрылады?
  3. Индекс деген не? Оның қандай түрлері бар? Кестені индекстеу қалай

   орындалады?

  1. Сілтемелік толықтылық деген не? Байланысқан кестелер қалай

    индекстеледі?

  1. Деректер қоры структурасын қалай жөндейді?
  2. Кестелерді жазулармен қалай толтырады?

 

    1. Мәліметтер қоры кестесімен жұмыс

 

DataAccess компоненттер панелінен Ttable компонентін қалыпқа орналастырамыз. Осы объектіні белгілеп ObjectInspector терезесінде компонент қасиетін көрсетеміз:

  1. Мәліметтер қорының атауы  DatabaseName жолында жазылады (Мысалы Primer).
  2. Ttable компонентімен байланысқа түсетін кестені көрсету  TableName жолында жазылады (Мысалы: student.db).
  3. Осы кестеге программа арқылы қатынасу керек болса Active жолында True деп жазамыз.

Осы операциялардан кейн қалыпқа орнатылған компонент көрсетілген мәліметтер қоры кестесіндегі деректермен байланысады. Бірақ байланысты бірден тура осылай орнатпай, аралық деңгейдегі деректер көзі деп аталатын TdataSource компонентін де қолдануға болады. Әрбір деректер көзі деректер модулінде орналастырылғаннан кейін белгілі бір кестемен DataSet қасиеті арқылы байланысады.

Мәліметтерді өңдеуге қолданылатын компоненттер.

  1. Деректер кестесі деп аталатын DBGrid компоненті

Мәліметтер қоры кестесіндегі жазуларды өшіру, жөндеу, жаңа жазу қосу керек болса ол үшін программалық код жазудың қажеті жоқ, қалыпқа DataControls (мәліметтерді басқару элементтері) деп аталатын панельде орналасқан TDGrid  компонентін орналастырып, DataSource қасиетінде қажетті деректер көзін көрсету керек.

  1. Навигатор компоненті DBNavigator

Бұл компонент кестенің жазуларын навигациялау үшін қолданылады. Навигация жазу бойымен жылжу дегенді білдіреді. Бұл компонент 10 батырмадан тұрады:

  1. First –  бірінші жазуға жылжу
  2. Prior – алдыңғы жазуға жылжу
  3. Next – келесі жазуға жылжу
  4. Last – соңғы жазуға жылжу
  5. Insert – көрсеткіш орналасқан жазу орнына жаңа жазу қою
  6. Delete – ағымдағы жазуды өшіру, егер ConfirmDelete қасиетін True деп қойса өшіруді орындауды құптау хабарламасы шығады.
  7. Edit – ағымдағы жазуды жөндеу
  8. Post – кестеге енгізілген өзгертулерді сақтау
  9. Cansel –енгізілген өзгертулерді сақтамау
  10. Refresh – мәліметтер қорынан мәліметтердіжаңадан оқып кестенің жазуларын жаңарту.
  11. Деректер тақырыбы (надпись) компоненті DBText:

Ұзақ мәтін сақталған өріс жазуларын көрсету, өзгерту үшін қолданылады. Tlabel компонентіне ұқсас. DataSource  қасиетінде деректер көзі көрсетіледі, DataField қасиетінде қолданылатын өріс көрсетіледі.

  1. Жөндеу өрісі компоненті DBEdit:

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

  1. Бейне компоненті DBImage:

Мәліметтер қорында сақталған бейнелерді, суреттерді экранға шығаруды орындайды. Егер AutoDisplay қасиеті True десе өрістегі бейне автоматты түрде экранда көрінеді. Егер ол қасиет көрсетілмеген болса LoadMemo әдісін шақыру арқылы орындауға болады. Бейнені өріске қою, көбейту, т.б. операциялар Picture қасиетінде көрсетіледі.

  1. Деректер тізімін қолдану компоненті DBComboBox:

Бұл компонент ашылған тізімнен (сұламалы) деректі таңдау, қолдануды орындайды. Енгізу облысындағы мәтін жиыны қажетті жазуға жылдам жылжу, немесе тізімде жоқ элементті енгізуге мүмкіндік береді. ComboBox компонентіне ұқсас, тек қосымша қасиеті Style  жолында TcomboBoxStyle арқылы тізімге енетін элементтердің бейнелену стилі көрсетіледі.

  1. Деректер жалаушасы (флажок)  компоненті DBCheckBox:

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

  1. Мәліметтерді топтап ауыстырып-қосу (группа переключателей) компоненті DBRadioGroup:

Бұл компонент өрістің шектелген міндер жиынын көрнекі түрде шығаруды орындайды. Әр мәнге ауыстырып қосу тобының біреуін сәйкестендіруге болады. Ауыстырып қосу атауларының тізімі Items қасиетіне енгізіледі, оның типі Tstrings болады. Тізімге сәйкес мәндер  Values қасиетінде сақталады, типі  String болады.

Кестені шығару.

Кестені экранға екі түрде шығаруға болады: торкөз түрінде, жеке өрістер түрінде. Мысалмен көрсетсек: «student» кестесін торкөз түрінде шығару керек болсын (17-сурет).

 

17-сурет-Student.db кестесін торкөз түрінде шығару қалыбы

 

Ол үшін қалыпқа DataAccess қатпарынан DataSource1, BDE қатпарынан table1, DataControls қатпарынан DBGrid1, DBNavigator компоненттерін орналастырамыз. Table1 компонентін белгілеп, DataBaseName қасиетіне  Primer деп алиас атауын көрсетеміз, сосын кесте атауын көрсету үшін TableName қасиетіндегі тізімнен Student.db атауын таңдаймыз, кесте активті болсын Active қасиетін True деп береміз. DBNavigator1, DBGrid1 компоненттерін белгілеп, деректер көзіне қосу үшін dataSource қасиеттеріне TdataSource1 деп, DataSource1 компонентін белгілеп, DataSet  қасиетін Table1 деп көрсетеміз.

Енді «student» кестесін экранға бір жазбадан шығаруды қарастырайық. Ол үшін қалыпқа Ttable, TdataSource компоненттерін орналастырамыз. Алдыңғы мысалдағы сияқты компоненттердің тиісті қасиеттерін көрсетеміз:

  1. Мәліметтер қорының атауы DataBaseName -  Primer деп.
  2. Кесте атауын TableName – Student.db деп.
  3. Кесте активті болсын Active  - True деп.
  4. TdataSource1 ді белгілеп, DataSet қасиетін  - Table1 деп.

DataControl панелінен қалыпқа  DBGrid компонентінің орнына қажетінше DBEdit компоненттерін, бір DBText, бір DBMemo (студенттерге қосымша мағлұмат шығару үшін) компоненттерін орналастырамыз да қасиеттерін көрсетеміз. DBEdit компоненттерінің dataSource қасиетін белгілеп dataSource1 деп, шығарылатын өрістерді көрсету үшін  DataField жолында тиісінше өріс атауын тізімнен таңдап көрсетеміз (мысалы: N_bilet, FIO, Adres, Naz, Data т.б.).

Student.db кестесінің структурасына өзгерістер енгізейік. Ол үшін осы кестені ашып, структурасына еніп, студенттердің мінездемесін енгізу үшін Memo типті Kharacter, фотосуреттерін сақтау үшін Graphic типті Photo өрістерін құрып, кестені сақтайық.

Сосын қайта қалыпқа көшіп,  DBMemo, DBImage компоненттерін қоямыз да, олардың dataSource қасиетін белгілеп dataSource1 деп, шығарылатын өрістерді көрсету үшін  DataField жолында тиісінше өріс атауын тізімнен таңдап көрсетеміз, біздің мысалымыз бойынша олар Kharacter, Photo деген атаулар (17а-сурет).

Информация о работе Делфи және мәліметтер қоры