2.5 Delphi-де мәліметтер қорымен байланысты ұйымдастыру
Delphi-де мәліметтер қорымен жұмыс істеуінің негізі Borland Database Engine (BDE)-Borland фирмасы мәліметтер қорының процессоры болып табылады. DE мәліметтер қоры мен қосымша арасында делдал қызметін атқарады. Бұл мәліметтер қорын реализациялауда қолданушыға мүмкіндік береді. Осыған байланысты мәліметтер қоры реализациясын ауыстырғанда қосымшаны өзгертуге болады. Delphi қосымшасы ешқашан да мәліметтер қорымен тікелей жұмыс істемей, BDE арқылы ғана жұмыс істейді.
Delphi қосымшасы мәліметтер қорымен байланысар кезде BDE-ге барады да, мәліметтер қорының псевдонимін және ондағы қажет кестені хабарлайды. BDE динамикалық тіркестірілген кітапханалар Dle түрінде ұйымдастырылған. Олар, басқа кітапханалар сияқты IDAPI (Integerated Database Application Program Interface) деп аталатын API-мен Application Program Interface-қолданбалы программалар интерфейсімен қамтамасыз етілген. Бұл қосымша пайдаланатын мәліметтер қорымен жұмыс істеу процедуралар мен функциялар тізімі.
BDE псевдоним арқылы көрсетілген мәліметтер қорына сәйкес драйвер табады. Драйвер – бұл қандай да бір анықталған типті мәліметтер қорымен қалай хабарласу керек екенін көрсететін көмекші программа. Егер BDE-ның мәліметтер қорын басқару жүйесіне сәйкес келетін өзінің драйвері бар болса, онда BDE мәліметтер қорымен және ондағы қажет кестемен байланысады, қолданушы сұранысын өңдейді және қосымшаға өңдеу нәтижесін хабарлайды. BDE Microsoft Access, Fox Pro, Paradox, dBase сияқты мәліметтер қорына өздігінен ене алады.
Егер BDE-нің өзінде қажет мәліметтер қорын басқару жүйесінің драйвері болмаса, онда ODBC драйвері қолданылады. ODBC (Open Database Connectivity)- бұл BDE функцияларына аналогты DLL, бірақ Microsoft өзінің офистік өнімдеріне ODBC қолдануын қосқан соң және ODBC үшін барлық мәліметтер қорын басқару жүйесі драйверлер қосылғандықтан, Borland фирмасы ODBC-ты қолдануға мүмкіндік беретін BDE қосты. Шындығында ODBC арқылы жұмыс жасау BDE-ге қосылған мәліметтер қорын басқару жүйесінің өз драйверіне қарағанда жәй жүргізіледі. Бірақ ODBC-пен қатынасқа байланысты Delphi масштабы үлкейіп, қазір Delphi кез-келген мәліметтер қорын басқару жүйесімен жұмыс жасай алады.
BDE SQL- сұраныстардың стандарт тілін қолдайды, ол Sybase, Microsoft SQL, Oracle, InterBase сияқты SQL-серверімен мәліметтер алмасуға мүмкіндік береді.Бұл мүмкіндік клиент/сервер платформасында жұмыс кезінде кеңінен қолданылады.
Delphi 5/6 ортасында мәліметтер қорымен жұмыстың басқа альтернативті мүмкіндігі бар. Бұл Microsoft өндіріп шығарған Activex Data Object (ADO) техналогиясы. ADO-бұл реляциялық және реляциялық емес. Мәліметтер қоры, электрондық пошта, жүйелік, текстік және графиктік файлдармен қоса мәліметтердің кез-келген типіне қолданушы интерфейсі.Мәліметтермен байланыс OLEDB деп аталатын техналогия көмегімен жүргізіледі.
ADO-ны қолдану мәліметтермен жұмыстың тиімді жолын қамтамасыз етеді.Бұл мүмкіндікті пайдалану үшін компьютерде ADO 2-1 немесе одан да үлкен версиялары болуы қажет.Сонымен қатар, мәліметтер қорына енудің клиенттік жүйесі, мысалға Microsoft SQL сервері қолданылуы керек. Delphi 5/6 ортасы үшін тағы бір мәліметтер қорымен тікелей хабар алысу үшін мүмкіндік енгізілген. Ол InterBase мәліметтер қорымен тікелей қатынасты қамтамасыз ететін InterBase Express- технологиясы.
Мәліметтер қоры – (бұл жерде реляциялық мәліметтер қоры туралы сөз болмақ)бұл ең бірінші кестелер жиыны,бірақ мәліметтер қорына процедуралар және басқа да обьектілер кіре алады.
Кестені қандай да бір обьектілер жиынының сипаттамалары (атрибуттары) бар қарапайым екі өлшемді кесте түрінде елестетуге болады. Кестенің аты – идинтификатор болады, солар арқылы кестеге сілтеме жасауға болады.
Кесте бағандары обьекті - өрістің қасиеттеріне сәкес келеді. Әрбір өріс қордағы мәліметтердің аты және типімен сипатталады. Өріс аты – бұл идинтификатор, ол мәліметтерді манипуляциялау үшін әртүрлі программаларда қолданылады. Бұл ат латын символдарымен жазылады. Өріс типі өріс қорындағы мәліметтер типімен сипатталады. Бұл жол, сан, бульдік мән, үлкен текст, кескін және тағы басқалары болуы мүмкін.
Кестенің әрбір жолы берілген кестеде сипатталған обьектілердің біреуіне сәйкес келеді. Ол жазба деп аталады және берілген обьект сипаттайтын барлық өрістер мәнінен тұрады. Мәліметтер қоры кестесін тұрғызғанда ақпараттардың қарама-қайшылықсыз болуын қамтамасыз ету қажет. Жалпы бұл әрбір жазбаның қайталанбауын қамтамасыз ететін кілттік өрісті енгізгенде жасалынады. Кілттік өріс бір немесе бірнеше өрістер бола алады.
Кестемен жұмыс кезінде қолданушы немесе программа жазбаларда курсормен жылжып отырады. Уақыттың әрбір мезетінде жұмыс жүргізілетін қандай да бір ағымдағы жазба болады. Мәліметтер қоры кестесіндегі жазба ешқандай тәртіпсіз физикалық орналасуы мүмкін. Бірақ кесте мәліметтері қолданушыға ұсынылғанда рет-ретімен орналасуы мүмкін. Мәліметтерді реттеу үшін индекс ұғымы қолданылады. Индекс кестені қандай тізбекте қарау керек екенін көрсетеді. Ол қолданушы мен кесте арасындағы тілші ролін ақтаратын сияқты.
Курсор индекс бойынша жылжиды, ал индекс кестеде жазбаларын көрсетеді. Қолданушылар үшін кесте реттелген болып көрінеді, сонымен қатар индексті алып тастай алады және қарастырылып отырған жазбалар реті өзгереді. Бірақ, шындығында сол кесте қайта құрылуымен және ондаған жазбалардың физикалық орын ауысуымен байланысты емес. Тек қана индекс, яғни жазбаларға сілтемелер тізбегі ғана өзгереді.
Индекстер біріншілі және екіншілі болуы мүмкін. Мысалғы, біріншілі болып мәліметтер қорын құрған кездегі кілттік болып белгіленген өрістер бола алады. Ал екіншілі индекстер мәліметтер қорын құру кезінде немесе одан кейінгі жұмыс процесінде басқа өрістерден құрылады. Екінші индекстерге оларды пайдалануға болатын аттар идинтификаторлар меншіктеледі. Егер индекс өзіне бірнеше өрістерді қоссақ,онда мәліметтер қорын реттеу алдымен бірінші өріс бойынша жүзеге асырылады, ал бірінші өрістің бірдей мәндерінен тұратын жазбалар үшін- екінші бойынша және тағы басқа. Мысалы, қандай да бір мекеменнің жұмысшыларының мәліметтер қорын бөлімдер бойынша, ал әрбір бөлімнің ішінде алфавит бойынша индекстеуге болады.
Мәліметтер қорында көптеген әртүрлі кестелер болады. Қолданбалы программалар жиі жеке кестемен ғана емес, кестелердің кейбір жиынымен жұмыс істейді. Бұл жағдайда қосымшада бірнеше кестелердің бір-бірімен байланысы құрылады. Жалпы оларды біреуі басты,ал бастысы басқаратын басқасы немесе қалғандары-қосымша (көмекші) болып тағайындалады. Басты және көмекші кестелер бір-бірімен кілт арқылы байланысады. Кілт ретінде екі кестеде де бар өрістер бола алады. Курсор басты кестенің индексі бойынша жылжиды және басты кестенің әрбір жазбасында кілт көмекші кестенің жалпы жағдайдағы жазбалар жиынына сәйкестендіріліп қойылады.
Жалпы жағдайда мәліметтер қоры кестелерден бөтен басқа да обьектілерден тұрады:
Ішкі кестелер – бұл жағдайда бір кестенің өрісінің мәніне басқа қандай да бір кесте сәйкес келеді. Мұндай ішкі кестелер, мысалға, Oracle 8-де болады.
Шолу немесе қарау (View)- қандай да бір критерийлер бойынша таңдалған қандай да бір жазбалардың ішкі жиынынан тұратын виртуальды кестелер.
Триггерлер – бұл кестедегі жазбалар өзгеруіне дейін немесе одан кейін автоматты түрде орындалатын ішкі программалр.
Генераторлар,олар кілттік өріс құру үшін қажет қайталанбайтын мән құрады.
Сақталынатын (қордағы) процедуралар – қандай да бір параметрді алатын және берілген мәліметтердің өңделу нәтижесін қайтаратын ішкі программалар.
Мәліметтер қорын құратын және оларға сұранысты өңдейтін мәліметтер қорын басқару жүйесі – МҚБЖ. Өздерінің мүмкіндіктерімен ерекшеленетін немесе бірдей мүмкіндікті және бір-бірімен бәсекелес МҚБЖ-і бар: Paradox, dBase, Microsoft Access, Foxpro, Oracle, InterBase және тағы басқа.
Әртүрлі МҚБЖ мәліметтер қорын әртүрлі ұйымдастырады және сақтайды. Мысалға, Paradox пен dBase-де әрбір кесте үшін бөлек файл болады.Бұл жағдайда мәліметтер қоры – кестелер файлы сақталатын каталог болады. Microsoft Access пен InterBase-де бірнеше кестелер бір файл ретінде сақталынады. Бұл жағдайда мәліметтер қоры – бұл оған кіре алатын жолы бар файл аты. Клиент/сервер типті жүйелер, Sybase немесе Microsoft SQL сияқтылар барлық мәліметтерін бөлек компьютерде сақтайды және клиентпен SQL деп аталатын арнайы тіл арқылы хабарласады.
Мәліметтер қорының нақты қасиеттері әртүрлі болғандықтан, қолданушыға жұмыс жасау қиын болар еді, егер ол өзінің қосымшасында осы барлық каталогтар, файлдар, серверлер және тағы басқа болатын болса. Қосымшаны мысалға каталог құрылымы немесе бір компьютерден екіншісіне ауысқанда өзгертуге болады. Бұл мәселені шешу үшін мәліметтер қоры псевдонимі қолданылады. Псевдоним (alias) мәліметтер қорына енуді қамтамасыз ететін ақпараттан тұрады. Бұл ақпарат тек псевдоним құрылған кезде ғана хабарланады. Ал псевдоним мәліметтер қорының қосымшамен байланысын пайдаланады. Бұл жағдайда қосымшаға мәліметтер қоры, ал көп жағдайда бұл мәліметтер қорымен жұмыс жасайтын МҚБЖ қайда физикалық орналасқанда ешқандай қатынасы болмайды.
Каталог, сервер және тағы басқа орнын ауыстырғанда қосымшада ешнәрсені өзгертудің қажеті жоқ. Тек мәліметтер қорын ұйымдастырушы (администратор) псевдонимге қажетті информацияны енгізсе болғаны.
Мәліметтер қорымен жұмыс кезінде барлық өзгерістерді кэштеу желі қолданылады. Бұл қолданушы жүргізілетін барлық мәліметтерді өзгерту, жаңа жазба қосу, сәйкес жазбаларды өшіру, яғни мәліметтерге әсер ету алдымен мәліметтер қорының өзінде емес, уақытша, виртуальды кестеде жадыда сақталады. Тек қана ерекше бұйрық (команда) бойынша мәліметтер қорына енгізу дұрыстығы тексерілгеннен кейін қолданушыға не осы барлық өзгерістерді мәліметтер қорына енгізу, не бұдан бас тартып, редакциялауға дейінгі түріне қайтып келуіне мүмкіндік ұсынылады.
Мәліметтер қорындағы өзгерістерді фиксациялау транзация көмегімен жүзеге асырылады. Бұл мәліметтер қорын өзгертетін командалар жиыны. Транзакция кезінде қолданушы мәліметтерді бір нәрсені өзгерте алады. Сонда қолданушыға транзакцияны аяқтауға немесе нақты мәліметтер қорына өзгерістер енгізуіне немесе бұдан бас тартып транзакцияға дейінгі күйге қайтып келуге мүмкіндік болады.
Транзакцияның басты функциясы – мәліметтердің бүтінділігін қамтамасыз ету. Транзакцияға сұранымдар, циклдар және тағыда басқалары кіреді.Егер осы сұранымдардың біреуінде қате берсе, онда берілген транзакцияның барлық сұранымдарының нәтижесі тіркелмейді. Сондықтан, мәліметтер қорының бір бөлігі өзгерген, қалғаны өзгермеген және нәтижесінде мәліметтердің бүтіндігі мен қарама-қайшылықсыздығы бұзылған жағдайлар қаралмайды.