Келтірілген SQL.

System R қысқаша сипаттамасын қорыта келгенде, техникалық жетіспеушілік жұмысына қарамастан, ойдағыдай SQL тілі керекті барлық құралдарды құрады, яғни оны ДҚБЖ базалық тіл ретінде қолдануға болады.

SQL бекітпесі

SQL System R арнайы операторлар қатысады,яғни олар SQL операторының дәстүрлі программалау тілдерін орнату үшін қолданылады.

(SQL System R негізгі тілі болып PLII табылады)

Негізгі қиын жағдай болғаны, SQL тілін программалау тіліне орналастыру болды, себебі SQL тілі-реляционды тіл, яғни оның операторы мүшеліктермен жұмыс істейтін болғандықтан, ал басқа программалау тілдерінің негізгісі скалярлы операциялар болғандықтан қиынға түсті. SQL есептеу үшін, бұл тілге операторлар қосылады, яғни олар ДҚ түскен сұратулардың нәтижесін қамтамасыз етеді. Сол себептен бұл тілге курсор түсінігі енгізіледі, яғни сонымен таңдау операторы қатынасатын болғандықтан. Анықталған курсорға OPEN операторын қолдануға болады, ол сұратудың қатынау нәтижесінің материализациясын білдіреді. FETCH операторы программа жадысындағы нәтижелік келесі қатынас кортежін таңдауға мүмкіндік береді. CLOSE операторы, берілген курсормен жұмыстың аяқталғанын білдіреді.

10.3 SELECT таңдауының операторы.

Өзімізге ыңғайлы болу үшін осы оператордың синтаксисін қайталайық.

 

<select statement> ::= SELECT [ALL | DISTINCT] <select name> INTO <select target list> <table expression><select target list>::= <target specification> [{,<target specification>}...]

 

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

WHERE операторы.

Егерде кестеде WHERE бөлімі қатысса, онда келесіде сол есептеледі. WHERE бөлімінің синтаксисі келесідегідей:

<where clause> ::= WHERE <search condition><search condition> ::= <boolean term> ( <search condition> OR <boolean term><Boolean term> ::= <boolean factor> ( <boolean term> AND <boolean factor><boolean factor> ::= [NOT] <boolean primary><boolean primary> ::= <predicate> | (<search condition>)

 

WHERE бөлімінің есептелуі келесі ережелермен есептеледі: R-FROM бөлімінің есептеу нәтижесі деп алайық, онда іздеу шарты барлық R жолына қолданылатын болады, және WHERE бөлімінің нәтижесі кесте болып табылады. Үш жолдан тұратын R үшін іздеу шарты true болып табылады. Егер таңдау шарты сұратуларды қосатын болса, онда әр сұрату әр R кестесінің кортежі үшін есептелінетін болады. (Стандартта “EFFECTIVELY” термині қолданылатын болады, сол мағынада, егер әр сұрату шын мәнәнде әр R кортежі үшін қайтадан есептелініп отыратын жағдайда болса).

Ескерте кетейік, егер SQL/89 ДҚ анықталмаған мәндерді қатынастыратын болса, онда іздеу шартының есебі мәнде емес, үштік логика, яғни TRUE, FALSE және UNKNOWN мәндерінде болады(белгісіз).

Кез келген предикат үшін, қандай жағдайда UNKNOWN мағынасын туындайтыны белгілі Бульдік операциялар AND, OR және NOT келесі үш мәндік логикалардай жұмыс істейді:

 

true AND unknown = unknownunknown AND true = unknownunknown AND unknown = unknowntrue OR unknown = trueunknown OR true = trueunknown OR unknown = unknownNOT unknown = unknown

 

Шартты іздеу предикатының ішінен SQL/89 қатысты келесідегідей предикаттар болуы мүмкін: салыстыру предикаты, BETWEEN предикаты, IN предикаты, LIKE предикаты, NULL предикаты, кванторлы предикат және EXISTS предикаты. Ескертетін болсақ, SQL барлық үлестірулерде сұратудың орындалу тиімділігіне және жай предикатты салыстырудың іздеу шартына да өте қатты әсер етеді. (Кестелерді жолдар мен салыстыру константасын беретін предикаттар). Ондай предикаттарды ұстау үшін ДҚБЖ сұратуды толтыру кезінде индекстерді қолдануды ұсынады, яғни кестені толық қарастырмау керек.

Бірақ SQL тілі пайдаланушыларға таңдау шартындағы предикаттар жайында ойландырмайды, SQL -бағдарламасындағы ондай техникалық жағдайларды ескеріп отыру керек.

Негізгі әдебиеттер [1] бет 166-178

Қосымша әдебиеттер [2] бет 127-141

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

1. Белгілеу мен қолдану облысы туралы айтып бер?

2. SQL тілінің структурасын сипатта?

3. Динамикалық SQL дегеніміз не?

4. Бекітілген SQL дегеніміз не?

5. Таңдау операторының функцияларын сипатта?

11 Дәріс. Деректер қорының тұтастығы және қауіпсіздігі. Қатынаумен басқару.

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

Транзакция- бір немесе бірнеше SQL операторларынан тұратын элементарлы жұмыс бірлігі; Транзакцияның барлық қорытындысы толығымен сақталады (фиксерленеді) немесе толығымен кейінге қалдырады. Транзакция фиксациясы өзгерістерді деректер қорына апарып біржолата жасайды және транзакция фиксирленгеннен кейін өзгертулер жойыла алмайды. Сырғыту барлық ендірмені кейінге қалдырады. Транзакцияда жасалынған модификация мен өшірулер; транзакция сырғытуынан кейін оның өзгерісі фиксирленбеуі мүмкін. Транзакция фиксация процесі SGA КЭШ тізіміне орналасқан дисктегі оперативті тізімді файлдар өзгеріс жазбасы жобаланады. Егер бұл дисктік кіріс/шығыс жақсы болса, мәтін жақсы аяқталған фиксация транзакциядан хабар алады ( хабар мәтіні инструментальді өзгереді). Фондық процесс DBWR буферлік SGA КЭШ дерекқорына Oracle актуальды берілген блоктарды кейінірек жазуы мүмкін. Кедергі жағдайында Oracle жүйесі тізім файлынан өзгерістерді автоматты түрде қайталауы мүмкін, тіпті егер Oracle нақты блоктары кедергі алдында деректер қорының файылына жазылмаған болса да.

Oracle сондай-ақ сырғыту идеясын оператор деңгейінде өңдейді. Егер оператор орындау барысында бір ғана кедергі болса, барлық оператор жақсы аяқталмайды. Егер оператор транзакция бөлімінде нақты болмаса, басқа транзакция операторлар ауытқытылған жағдайда болады және фиксирленуі керек немесе сырғытылуы керек. Барлық транзакциямен алынған блакировкалар транзакция фиксирленгенде немесе сырғытылғанда, немесе фондық процесс PMON транзакцияны қабылдамаған жағдайда автоматты түрде босатылады. Бұдан басқа, басқа ресурстар жүйесі (сырғыту сегменті сияқтылар) басқадай транзакциямен қолдану үшін босатылады. Сақтау нүктесі транзакция ішінде маркерлер орналастыруды рұқсат етеді және ол транзакцияда жасалған жұмыс бөлігін ғана қабылдамайтын мүмкіндік тәрізді жасалынады. Анықталған оператор үшін өзгерістерді қабылдамау мүмкіндігі үшін, сақталу нүктесін ұзын және күрделі транзакцияларда қолданады. Бірақ бұл қосымша ресурстар жүйесінің шығынын қанағаттандырады оператор жұмысын орындайды, ал өзгеріс содан қабылданбайды. Негізгі тексеру жиынын ізінде жетілдіру - өңдеу логикасында көбіне оптимальді шешім болып табылуы мүмкін. Oracle қабылданбаған операторлармен алынған блакировкаларды босатады. Деректердің бүтіндігі деректер қорымендің кепілдіктің ақиқаттан тексеру ережесін анықтаумен байланысты,яғни жарамсыз деректер қорымен кестеге түспейтінін. Oracle бұл ережені деректер қорының объектілері үшін сақтауға және анықтауға мүмкіндік береді, яғни өзіне қатысты, осындай үлгімен, яғни оларды бір рет қана кодтау керек. Өзгерістің бір түрі кестеде жүріп жатқанда қай программада қойылымды орындап жатқанына қарамастан модификация мәндеріне өшіруіме, олар бірнеше рет активтеледі. Бұл контроль деректер қорының триггерлерімен және шек бүтіндігі түрінде жүргізіледі.

Шектік тұтастығы деректер қоры деңгейінде бизнес-ережелерді орналасады, кесте жүйесі үшін тексеру жиынын анықтай отырып. Бұл тексерулер кестеде берілген модификация және жойылу, қою операторы шақырылғанда бірнеше рет автоматты түрде орындалады. Егер қандайда бір шектеулі бұзылса, оператор керек етілмейді. Транзакцияның басқа операторлары ауытқытылған жағдайда қалады және логикалық мәнге сәйкес фиксирленуі немесе алынып тасталуы мүмкін.

Негізгі әдебиеттер [1], бет 376-381

Қосымша әдебиеттер [2], бет 145-165

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

1. Транзакция деген не, ол қалай түрленеді?

2. “Мәлімет бүтіндігі” сущьность?

3. Бүтін деректер қорыменді шектеу деген не?

4. “Мәлімет бүтіндігінің ” негізгі ережесін анықтап бер?

5. Бүтін деңгелік ереже деген не?

12 Дәріс. Постреляциялық дерек тер қоры. Қатынаумен өшіру.

12.1 Постреляциялық деректер қоры.

Біз SQL/92 стандартында SQL тілінің мүмкіндіктерін жоғары сипаттаймыз. Бұл қазір ойланатындай емес, қанша дегенмен жалғыз қатынауы SQL/92

Үлестіру, жақсы Oracle V7 версиясы болып табылады.

Бірақта біздің ұжымға бірнеше коментариямен SQL динамикалық операторларды қосу тиімді болып көрінеді, бірақта SQL/92-де SQL тілінің бөлімінің стандарттық бірінші бөлімі алынған, және бұл сипаттаманы кемдегенде эталон сапасында түрлі үлестірумен салыстыра қолдану мүмкін. Дәріс соңында SQL-3 жаңа стандартта жұмыс жалғасатын күтуге болатын қысқаша мүмкіндіктер айтылады.

Деректер қорындағы обьектілі-бағдарланған концепция және архитектура.

Көптеген жалпы және классикалық тұрғыда обьектілі-бағдарланған көрініс келесі концепцияда базаланады;

· Обьектілі және идентификаторлар обьекті.

· Атрибуттарды және әдістері

· класстарды

· иерархия және мұрагер класы

Кез-келген өмірдің маңыздылығы обьектілі-бағдарланған тілдерде және жүйелерде обьект түрінде модельденеді.

Кез-келген обьект өзінің құрылуында генерирленген жүйемен уникальды идентификатор алады, яғни оның қызметі барлық уақытта обьектімен байланысты және өзгеріс барысында обьект жағдайы өзгермейді. Әрбір обьект жағдай мен тәртіпті қамтиды. Обьект жағдайы - атрибуттар мәнінің жиыны. Обьект тәртібі- тәсілдер жиынтығы (программалық код), обьект жағдайынан операцияланатын. Обьект атрибутының мәні - бұл да бір обьект немесе бірнеше обьектер. Обьект жағдайы және тәртібі обьектіде инкапсурлинген: Обьектердің өзара іс-әрекеті хабар алмасу негізінде және сәйкес тәсілдердің орындалуында жүргізіледі.

Көптеген обьектер бір ғана жиынмен атрибуттар және тәсілдер класс обьектлермен түрлендіреді.Обьект бір ғана классқа тиесілі болу керек (егер мұрагерлік мүмкіндіктерін санамағанда). Алдын-ала анықталған класстар түрі, атрибуттарды қамтымайтын, бүтін қатар т.б обьект беттері рұқсат етіледі. Басқа класс обьектлердің атрибут белгілеріне қызмет етуге болатын класс, обьектер- осы атрибуттардың домені деп аталады. Негізгі жүргізілетін класста негізінде шыққан жаңа класс нәтижесі мұрагерлік болады. Бұл жағдайда жаңа класс, кластың ішіндегі ішкі класс деп аталатын (суперкласстың),суперкласстың тәсілдері мен атрибуты ие болады. Ішкі класста сонымен қатар қосымша атрибуттар мен тәсілдер анықталуы мүмкін. Мұрагерліктің қарапайым және көп жағдайлары ерекшеленеді. Бірінші жағдайда ішкі класс бір супер класс негізінде ғана анықталуы мүмкін, екінші жағдайда супер класстар көп болуы мүмкін. Егер тілде немесе жүйеде ие болатын класстар бірлігі тұрады, класстар жиынтығы ағаштүріндегі иерархияны түрлендіреді.Көп ие болу класын құру кезінде класс торы деп аталатын бағдарланған граф түбірімен байланысты. Ішкі класс объектісі осы класстың әрбір суперкласына жататын болып есептелінеді. Обьект-бағдарланған амалдың кейінгісі, ішкі класс ішіндегі суперкласстың тәсілдері мен атрибуттарын алдын-ала анықтау мүмкіндігі болып табылады (тәсілдер жүктемесі). Бұл мүмкіндік иілгіштікті көбейтеді, бірақ қосымша жағдай туғызады; обьект-бағдарланған программаны компеляциялау кезінде, объектінің программалық код тәсілдері мен құрылымы белгісіз болуы мүмкін, бірақ оның класы(жалпы жағдайда суперкласс) белгілі. Бұл жағдайға рұқсат үшін кейінгі тәсіл байланысы қолданылады, ол жұмыс барысында программаның интерпретациялық режимін орындайтын, оған хабарды жіберу уақытысында объект детальдары мен танысуды жүзеге асыруды білдіреді.Ішкі класстар тәсіліне бірнеше шектеулер кіріспесі интерпретацияның көмегінсіз эффекті жүзеге асыруға жетуге мүмкіндік береді. Көрініп тұрғандай, осындай базалық түсініктер жиынында, егер класстар мұрагерлік мүмкіндігін ескермесек және сәйкес жағдайлар, обьектілі-бағдарланған тәсіл деректер қорымен типінің абстрактылы программалау тілінің тәсіліне өте жақындығы. Басқа жағынан, егер аспектілі обьектіден абстракцияланса, обьект-бағдарланған тәсіл деректер қорымендің семантикалық модельдеу тәсіліне көбірек жақын (тіпті және терминология бойынша). Семантикалық модель негізінде жатқан, фундаментальді абстракциялар обьект-бағдарланған тәсілде анық қолданылмайды. Агрегацияны абстракциясына, басқа обьектлер болу мүмкін.Бар атрибуттар мәнімен, күрделі обьектілер құрі негізделеді. Топтау абстракция-обьект класын түрлендіру негізі. Абстракцияда специализация/ талдап қорытуға класс торларын немесе иерархия құру негізделген. Обьект-бағдарланған тәсілге жетуге рұқсат ететін ОБДҚ көбінесе жаңа сапасы, мінез-құлықты обьектлері аспект болып табылады. Қолданбалы ақпараттар жүйесінде, ДҚ-ға негізделген ұлттық ұжыммен (оған дейінгі,яғни деректер қорымендің семантикалық моделінде негіздену), құрылымдық және мінез-құлықтық бөлім арасында принципиальді ажырау қолданылады. Жүйенің құрылымды бөлімін ДҚ барлық аппаратымен үзбей отыру, оны модельдеу және верифицирлеуге болады т.б, ал мінез-құлықтықбөлімі жеке құрылуы керек. Жекеше, формальді аппарат және бірлескен модельдеудің жүйелік қолдау және бұл құрылымдық (статикалық) және мінез-құлықтық(динамикалық) бөлімінің келісушілік гарантиясы қатысу керек. ОБ ортасында жобалау, құрылымды және поведенческии аспектлер интегрирленетін, қолданбалы жүйенің ере жүруі процесс болады. Әрине, бұл үшін, обьектлерді анықтайтын және олардың негізінде қолданбалы жүйені құратын арнайы тілдер керек.

Обьектілі-бағдарланған тәсілді қолдану спецификасы ДҚ басқару және ұжымы үшін, класстың концепциялар және бірнешеуінің кеңейтілуін анық талқылауын талап етеді. Бұл обьектлердің сыртқы жадыда ұзақ уақыт сақталуын талап етумен анықтайды, обьектлерге ассоциативті қатынау, мулти қатынау шартында ОБДҚ-ң бірлескен жағдайын қамтамасыз ету және деректер қорының өзіне тән қажетті мүмкіндіктері. Ұлттық парадигмада қатысушы, бірақ ОБДҚ-да талап ететін үш аспект ерекшеленеді. Бірінші аспект - класс анықтау барысында спецификация амалын білу талабы жатады (дедукция ережесі, бүтін шексіздігі т.б). Екінші аспект- механизмде әртүрлі обьектлер арасындағы семантикалық байланыс түрін анықтау, жалпы айтқанда әртүрлі класстарды.Фактылы түрде бұл деректер қорымендің семантикалық амалын ОБДҚ-да кеңейтілуін талап етуді анықтайды. Ассоцирлеу абстракцияда қолдануды талап ету автомотизирленген жобалау және инженерия ортасында ООБ қолдану байланысында белгіленеді. Үшінші аспект-класс түсінігін қайта қараумен байланысты.Контексте ОБДҚ көптеген мәлімет түрінің обьектлері сияқты ыңғайлы көруді қажет етпейді, яғни обьектлер класын, және типін және түсінігін біруақытта қолдау. Кіріспеде белгіленгендей, ОБДҚ-ны іздеу ортасында және жүйе жұмысшылары ортасында толық келісім қатысады, бірақ көптеген практикалық жұмыста обьектілі-бағдарланған тәсілдің бірнеше кеңейтілулері қолданылады.

12.2 Обьектілі - бағдарланған деректер қорының құрылу принциптері.

Бірінші формализмді және жалпы қабылданған модельдің негізі реляциондық кодта моделі болады. Бұл модельде, келесідегідей үш аспектке бөлінген-құрылымдық, тұтастығы және манипуляцялық. Берілгендердің құрылымы реляционды модельде кеңейтілген нормальді қатынаста негізделеді, тұтастық шексіздігі бірінші қатардың логикалық амал көмегімен беріледі және соңғысы берілгендермен манипулирлеу реляционды алгебра негізінде немесе реляционды есеп шығаруға теңкүшті негізде жүреді. Көптеген зерттеушілер сияқты өзінің жетістігін деректер қорымендің реляциондық моделі көп нәрсеге міндетті, яғни оның көптік теорияның қатаң математикалық аппаратқа сүйенеді, бірінші қатардың қатынасы және логикасы. Кез-келген реляционды жүйенің жұмысшысы өзінің қарызын, өзінің моделін берілген жалпы реляционды моделімен сәйкестігін көрсету деп есептейді, яғни жүйенің “реляциондық” сапасында жүру. Обьектілік- бағдарланған модельдеу деректер қорымендің негізгі қиындықтары, мұндай математикалық аппараттан, деректер қорымендің жалпы обьектілі-бағдарланған моделі сүйейтін, жүргізілмейді. Жоғары қадамда сол үшін осы кезге дейін базалық обьектілі-бағдарланған модель жоқ. Басқа жақтан қарағанда, бірнеше авторлар классикалық тұрғыдағы жалпы обьектілі-бағдарланған модель анықталмайтынын, обьектілі-бағдарланған парадигмада деректер қорымен моделінің классикалық түсінігін себебі бойынша дәлелдейді. Деректер қорымен моделінің облыс аймағындағы ең танымал теоритиктердің бірі Беери, жалпы жағдайда ОБДҚ жалпы түрін береді, толық емес және ұлттық тұрғыда нақты мәлімет моделі болмайтын, бірақ зерттеушілерге және жұмысшыларға ОБДҚ жүйесін бір тілде сөйлеуге мүмкіндік береді (егер, әрине, Беери мәселесі кеңейтілсе және қолданыс тапса). Бұл деректер қорымендің тағдырына қарамастан біз оларды айтуды тиімді деп есептейміз. Біріншіден,көптеген ОБДҚ практикасында обьектілі модельдің екі деңгейі бөлініп көрсетіледі: төменгі (құрылымдық) және жоғарғы(поведенческии) құрылымдық деңгейде күрделі обьектлер болады, олардың идентификациясы және “isa” байланысының әртүрлілігі. Деректер қоры- «классқа кіретін» немесе «атрибут болып табылатын» байланыс қатынасымен, берілген элементтер жиынтығы. Осындай үлгімен, ДҚ бағдарланған граф тәрізді қаралады. Ең керекті сәт жиындарды құрайтын обьект түсінігі, мән түсінігі болып табылады. Қажетті аспект болып ДҚ схемасы және ДҚ өзі болып табылады. ОБДҚ схемалық деңгейінің бірінші концепция сапасында кластар және түр жүреді. Барлық қолданыстағы жүйелерде бір ғана түсінік көп тиелген: тип көп мәнді болуды білдіреді, осы типтің деректер қорымен құрылымын анықтайтын; класс сондай-ақ обьектлер көп болуын береді, бірақ бұл көптік пайдаланушымен анықталады. Осындай үлгімен, типтер және класстар әртүрлі роль атқарады, және қатаңдық және тиянақтылық үшін екі түсініктің біруақыттылық қолданысы керек. Беери ОБДҚ-ның құрылымдық деңгейінің толық формальді моделін көрсете алмайды, бірақ мұндай модельді формальдау үшін ағымдық деңгейдің түсінігі жеткілікті екенін береді. Мінез-құлықтық деңгейге келетін болсақ, оған талап етушіге логикалық аппарат үшін жалпы амал-тәсіл көрсетілген (логиканың бірінші деңгейі жеткіліксіз). Қажетті, бірақ жеткіліксіз негізгі болжамы, Беери ұлттық дәстүрлі деңгей-схемалар және деректер қорымен ОБДҚ үшін жеткіліксіз болып табылады. ОБДҚ-ны нақты анықтау үшін ДҚ схемалық деңгейіне жіберілетін, байланыстар мен обьектлер түрін анықтау мүмкіндігін құрайтын мета-схема деңгейі талап етіледі. Деректер қорымен моделінің реляционды құрылымды бөлімі деректер қорындағы реляциондық схема үшін атқаратын ролін де, мета-схема ОБДҚ үшін атқарады. Обьект-бағдарланған деректер қорымен моделінің тақырыбына қатысты көптеген жариялар бар, бірақ олар жеткілікті сұрақтарды қозғайды немесе бұл үшін тиянақты математикалық аппарат қолданады (Мыс; бірнеше авторлар обьектілік-бағдарланған деректер қорымен моделін теория категория негізінде анықтайды).

Тәсіл - программалық код, нақты классқа тиелген және осы класстың обьектісіне жарамды. Тәсілді О2-де анықтау екі этапта өтеді. Алғашында тәсіл сигнатурасы жарияланады, яғни оның аты, классты, типі немесе аргументтер класы және тип немесе класс қорытындысы. Тәсілдер жариялық болуы мүмкін (обьектлер ішінен басқа классқа тиімді) немесе жәй әшейін (деректер қорымен класының ішінде ғана тиесілі). Екінші этапта программалау тілдің бірі О2-де класс үлестіруді анықтайды ( толығырақ тілдер біздің келесі бөлімде талқыланады). О2 модельде супертип/ ішкі тип қатынасы негізінде көптеген класс мұрагерлігі құрайды. Ішкі класста және/ немесе атрибуттармен тәсілдері қосу жіберіледі. Екі бағытты мұрагерлік жағдайында (атрибут және тәсіл атаулары бойынша) ауыстыру жолымен, немесе бастапқы мұрагерді нақты көрсету жолымен шешіледі. Ішкі класс обьектісі әрбір суперкласс обьектісі болып табылады, нақты ішкі класс шыққан негізде. Ішкі класс торының түбірі болып табылатын, алдын-ала анықталған “object” класы құрылады. Кез-келген басқа класс “object” класының анық мұрагері емес болып табылады және алдын-ала анықталған тәсілге сүйенеді (“is-same”, “is-value-equal” және т.б ). О2 моделінің спецификалық негізгісі қосымша “ ерекше” атаулы обьектлер үшін атрибуттар және тәсілдерді жариялау мүмкіндігін талап етеді. Бұл, класты таныстыратын нақты атаулы обьект класс типінің ішкі типін басқару мүмкіндігін бар тип. Әрине, мұндай атрибуттар мен стандартты класс тәсілдері жұмыс істемейді, бірақ арнайы атаулы обьект үшін қосымша тәсілдер анықталуы мүмкін, олар, қосымша атрибуттар мен тәсілдер нақты обьектлерге байланыспайды, атына яғни әртүрлі уақыт мезгілінде жалпы айтқанда әртүрлі обьектлер. Ерекше атрибуттар мен тәсілдерді үлестіру үшін техниканың кейінгі пайда болған байланысы талап етіледі. Келесі бөлімде біз қарапайымдар арасында рограммалау тілінің негізгілерін және О2 жүйесінің сұранымдарын, яғни деректер қорымен модификациясының спецификациясымен байланыстыларын қарастырамыз.

Обьектілі-бағдарланған деректер қорындағы программалау тілдері көптеген зерттеулер мен жұмысшылардың белгілеуі сияқты, обьектілі-бағдарланған ДҚ жүйесі өзімен пограммалау жүйесі мен ДҚБЖ байланысын көрсетеді.

Реляционды ДҚБЖ-да сұраным тілдері және пограммалау тілдері арасындағы сәйкестіктің жоғалуы. Біз айтқандай, ОБДҚ-ғы практикалық негізгі қажеттілік әртүрлі интигрирленген ортада күрделі ақпараттық жүйені құруда талап етумен байланысты. Бұл ортада құрылымдық және мінез-құлықтық жоба бөлімінде үйлеспеушілік қотысады және сыртқы жадыда мәліметтің күрделі құрылымды эффективті басқару құру керек. Жүйенің реляционды жағдайынан айырмашылығы, мәнді құру кезінде скалярлы мәндермен бағдарланған біруақытта процесстің программалау тілі және жұмысқа бағдарланған декларативті сұрау тілі (оны сәйкестік жоғалуы деп атау көрсетілген-impedance mismatch), ОБДҚ тілдік ортасы-обьектілі-бағдарланған программалау жүйесі, ұзақтығы обьект мен жұмысты қосатын қарапайым орта.

“Қарапайымдылық” жұмыс ортасының ДҚ программалау тіліне қосылуы, обьектінің ұзақ уақытты жұмысы (сыртқы ДҚ-да сақталады) синтаксистік конструкция негізінде жүруі керек, және жұмыс уақытысымен программа обьектлерімен жұмыс уақытысында жүруі. ОБДҚ жағы ДҚ программалау тілінің жақын бағытына неғұрлым жақын.

Негiзгi әдебиет [2], бет 154-165.

Қосымша әдебиет [3], бет 112-129.

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

1. Деректер қорының концепциясы және обьектiлi-бағдарланған архитектураны сипатта.

2. Деректер қорының обьектiлi-бағдарланған принципi қалай құрылады?

3. Деректер қорының обьектiлi-бағдарланған программалау тiлдерiн сипатта.

4. Деректер қорының обьектiлi-бағдарланған сұраныс тiлдерiн сипатта.

5. Сұраныстардың новигацияланбаған тiлдерi дегенiмiз не?

 

13 Дәріс. Қосымшаларды өңдеуде SQL тілін қолдану. Бекiтiлген SQL қолданып программалау. Деректерді манипуляциялау операторы.

SQL/89 стандартында сұратулар структурасы туралы айтудан бұрын, мiндеттi түрде синтаксистiк ережелердi енгiзіп бастау қажет:

 

<cursor specification> ::= <query expression> [<order by clause>]<query expression> ::= <query term>| <query expression> UNION [ALL] <query term><query term> ::= <query specification>| (<query expression>)<query specification> ::= (SELECT [ALL | DISTINCT] <select list> <table expression>)<select statement> ::= SELECT [ALL | DISTINCT] <select list> INTO <select target list> <table expression><subquery> ::= (SELECT [ALL | DISTINCT] <result specification> <table expression><table expression> ::= <from clause> [<where clause>] [<group by clause>] [<having clause>]

 

SELECT кiлттiк сөзiнiң басталатын 3 конструкциялық синтаксистi типтердi енгiзедi. Курсордың спецификациясы (cursor specification), таңдау операторы (select statement), сұрату (subquery). Олардан да ең негiзгiсi болып табылатыны “кесте тұжырымдамасы (table expression)” синтаксистiк конструкциясы.

From, where, group by және having бөлiмдерiн қолдана отырып берiлген from кесте бөлiмiнде жаңа нәтижелейтiн кесте құрылып отыр, яғни ол жолдардың тiзбектелу тiзiмi анықталмаған және олардың iшiнде көшiрiлмесi де болуы мүмкiн, шын мәнiнде SQL/89 тiлiн қарастыратын, осы кестелiк структура тұжырымдамасы. Оны бiз төменде қарастырамыз, ал қазiр айтылып кеткен үш конструкциямен, кестелiк тұжырымды қоса қарастырып кетейiк.

Курсоды ашу операторы.

Оператор келесiдегiдей синтаксистiк ережелермен орындалады:

 

<open statement> ::= OPEN <cursor name>

 

SQL тiлiнде мiндеттi түрде мәтiндiк курсордың хабарламасы курсордың ашылу операциясына сәйкес келуiн талап етедi. Ол орындалып отырған операторлардың iшiнен бiрiншi болуы тиiс. Жалпы жағдайда курсордың негiзгi тiлдер мәнiмен байланысы туындалады, яғни SQL немесе модульдер параметрi кезiнде болады. Көпшiлiк жағдайда, бекiтiлген SQL жағдайын орындау кезiнде курсорды ашу операторы курсордың спецификациясын компеляциялануына әкеп соғады.

Курсордың кезектi жолының оқу операторы.

Оператордың синтаксисi:

 

<fetch statement> ::= FETCH <cursor name> INTO <fetch target list><fetch target list> ::= <target specification>[{,<target specification>}...]

 

Оқу операторында курсодың аты мен INTO бөлiмi мiндеттi түрде көрсетiледi, яғни белгiлеу спецификациясының тiзiмi (SQL модулiнiң “шығыс” параметрлерi). Белгiлеу тiзiмiндегi сандар мен типтер курсордың таңдау спецификасының мәлiмет типiмен сәйкес келуi керек. Кез келген ашық курсордың әрқшанда позициясы болады: ол кестенi нәтижелейтiн кез келген жолдың алдында орындалуы мүмкiн, кез келген нәтиженiң жолыменен немесе соңғы нәтиженiң жолыменен. Егер курсор көрсетiп тұрған кесте бос болса, немесе курсор не соңғы, не содан кейiнгi жолға позицияланатын болса, онда курсордың оқу операторы орындалу кезiнде соңғы жолға позцияланып, SQLCODE параметрiне 100 мәнi жүктеледi, мақсаттарға ешқандай мән берiлмейдi: идентификацияланатын INTO бөлiмiнде. Егер курсор жолдың алдында позицияланатын болса, онда ол осы жолға орналастырылады және осы жолдың мәнi сәйкес келетiн мақсаттарға жүктеледi. Егер курсор r жолына орналастырылатын болса, онда курсор жолға орналасып, яғни келесi r-ге, және осы жолдардан кейiнгi жолға жүктеледi.

Анықталмаған мәндегi курсорды қандай жағдаймен параметрлеуге болады деген сұрақ туындалады. Жауабы: SQL/89 ол параметрлi идентификторлар көмегiмен iсек асады. Егер ДҚБЖ программасынан берiлетiн, немесе ДҚБЖ қабылдайтын негiзгi программа анықталмаған болуы мүмкiн және осы факт қолданбалы программистi қызықтыруы мүмкiн, онда спецификация параметрлерi SQL операторында мынадай түрде болады: <parametr name>[INDICATOR]<parametr name> параметрлердi спецификациялау кезiнде, және <embedded virable name>[INDICATOR]< embedded virable name>.

Позициялык жою операторы.

Синтаксисi.

 

<delete statement: positioned> ::= DELETE FROM <table name> WHERE CURRENT OF <cursor name>

 

Егер операторда көрсетiлген курсор ашық, және қайсыбiр жолға орналасқан; және курсор өзгерiп отырған кестенi анықтайтын болса, онда курсордың ағымдағы жолы жойылып, курсор келесi жолдың алдына позицияланатын болады. DELETE операторының FROM бөлiмiнде көрсетiлетiн кесте, спецификацияланатын курсордағы FROM бөлiмiнде кесте болуы керек.

Келесi синтаксистiк ережелермен сипатталады:

 

<update statement: positioned> ::= UPDATE <table name> SET <set clause:positioned>[{,<set clause:positioned>}...] WHERE CURRENT OF <cursor name><set clause: positioned> ::= <object column:positioned> = { <value expression> | NULL }<object column: positioned> ::= <column name>

 

Егер көрсетiлген операторларда курсор ашық болса және қайсыбiр жолға орналасқан болса, онда ағымдағы курсордың жолы SET бөлiмiмен сәйкес модификацияланады. Курсордың позициясы өзгермейдi.

DELETE операторының FROM бөлiмiнде көрсетiлетiн кесте, спецификацияланатын курсордағы FROM бөлiмiнде кесте болуы керек.

Курсорды жабу операторы:

Синтаксисi:

<close statement> ::= CLOSE <cursor name>

Егер осы оператоды орындауға дейiн курсор ашық жағдайда болған болса, онда оператор курсорды жабық жағдайға ауыстырады. Бұдан кейін онымен тек OPEN операторы ғана орындалуы мүмкін.

SQL динамикалық операторымен курсор арқылы жұмыс.

Мұндай операторды орындау үшін SQL стандартының курсорлар механизімінің кеңейтілуі қолданылады. Біріншіден курсорды анықтау кезінде курсордың литералды спецификацияланатын ғана көрсетіп қоймай, сонымен қатар PREPARE операторының көмегімен атын енгізуге болатынын көрсетуге болады (мұндай жағдайда PREPARE оператоы мәтінді түрде DECLARE операторын жоғары болуы керек).

DECLARE операторының толық синтаксисі:

 

<declare cursor> ::= DECLARE <cursor name> CURSOR FOR { <cursor specification> | <statement-name> }

 

Ондай курсор үшін статикада кірістік және шығыстық параметрлері жайында ақпарат белгісіз болса, онда OPEN және FETCH оператоына басқа форма қолданылады.

Толық синтаксисі:

 

<open statement> ::= OPEN <cursor name> [USING { <host-vars-list> | DESCRIPTOR <descr-name> }]<fetch statement> ::= FETCH <cursor name> { INTO <fetch target list> ( USING <host-vars-list> ( USING DESCRIPTOR <descr-name> }

 

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

Біріншіден, таңдау операторы үшін қолдану, яғни кіріс немесе шығыс нормальды жинақтары үшін. Екіншіден, динамикалық компеляцияланған операторлармен жұмыс істеу дескрипторлы динмаиканың параметрлер тізімін формулирлейтін талап етеді. Осының бәрі программистке жүктеледі. Қате болған кезде Си программасының жадысы бұзылуы мүмкін.”Курсордың спецификациясы” жалпы конструкциясы болып табылады. Курсор дегеніміз- бұл SQL тілінің түсінігі яғни, арнайы оператор жинағының көмегімен ДҚ сұрату нәтижесіне тез арада қатынас жасау мүмкіндігін береді.

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

Негізгі әдебиет [1], бет 618-625

Қосымша әдебиет [2],бет 201-217

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

1. Қосымшаларды өңдеу кезіндегі SQL қалай қолданылады?

2. Курсорды хабарлау операторы?

3. Позициялық модификациялау операторы?

4. Сұрату құрылымын өңдеңіз?

5. SQL операторының динамикалық курсор арқылы жұмысы?

14 Дәріс. Деректер қоры қосымшаларын өңдеу. Delphi-дің аспаптық құралдары.

14.1 Деректер қоры қосымшаларын өңдеу. Delphi-дің аспаптық құралдары.

Delphi ортасын орындау кезінде автоматты түрде жаңа жоба құрылады.Ол сіздің ыңғайыңыз үшін жасалған. Егер сізге жаңа жоба құру керек болса, онда Delphi ортасын жүктемей-ақ, жай меню File/New/Applacation командасын орындаңыз. Нәтижесінде ескі жоба жабылып, оның орнына жаңа құрылады. Жаңа жобаға Delphi ортасы әрқашанда таза форманы орналастырады. Қолданбаны орындау кезінде формаға компаненттер қосуыңыз керек болады, жағдайды өңдеу деп жазыңыз, жобаға дочерлік форманы қосыңыз, яғни қолданбаныжобалауыңыз керек. Ол үшін бас менюдің негізгі командасын орындаңыз меню File/Save All. Орталық бірінші программаның модулі үшін бірінші форма мен атау сұрайды, содан кейін жоба үшін атау сұрайды. Егер файл енгізілген атаумен дискте енгізілген болса, онда Delphi ортасы сізден атты өзгертуге сұрату жібереді. Егер жобаның атын өзгерту керек болса, онда меню File/Save Project As…командасын қолданамыз. Егер модульдің атын өзгерту керек болса, онда меню File/ Save As… командасын қолданыңыз. Delphi ортасында, басындағы дискте сақталған жобаны ашу үшін, меню File/OPEN…командасын орындау жеткілікті. Экранда сұхбат терезесі пайда болады, ол жердесіз берілген тізімнен жүктелінген жобаның каталогын және атын көрсетуіңіз керек.

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

Компиляцияжәне жобаны жинау.

Компиляция және жобаны жинау жобаны өңдеудің кез келген стадиясында орындала алады. Компиляция сөзінде шығу мәтіндер программалық модульдерден (DCU-файлдар) жасалған объекті модульдерді (PAS-файлдар) алу мағынасы жатыр. Жинау сөзінде объекті модулбдерден жасалған орындалатын файлдарды алу мағынасында. Delphi ортасында компиляция және жобаны жинау сыйымды.

Компиляцияны орындау үшін Project | Compile <Жоба аты> командалық менюін орындау немесе Ctrl+F9 коДҚинациялық пернесін басу жеткілікті. Сонымен қатар шығу файлдары компилирленеді, құрамы соңғы компиляциядан кейін өзгереді. Қорытындысында, әр программалық модульге

DCU (Delphi Compiled Unit сөзінен қысқартылған) кеңейтілуіндегі файлмен жасалады. Содан кейін Delphi ортасы жасалған жобаның басты файлын компирлейді және аттары жобаның атымен сәйкес DCU-модульдер орындалатын файлдарды жинайды. Профессионалдардың айтысы бойынша,

Delphi ортасының компиляторы орындалатын файлдан қажетсіз программалық кодтарды лақтырып тастайды, сондықтан да қосылған модульдерде бар артық объектілермен ішкі программалар үшін алаңдамауға болады.

Компиляцияның және жинаудың ерекше түрі бар - жобаның барлық программалық модульдерін толық еріксіз компиляциялау, оларға келесі орындалатын файлдарды жинаудан шығатын мәтіндер тиімді. Осыдан кейін келесі компиляцияда оларға өзгертулер енгізілді ме, жоқ па оның маңызы болмайды. Жобаны толық компиляциялау басты менюдің Project | Build <Жоба аты> командасы арқылы орындалады. Нәтижесінде тағы да орындалатын файл құрылады, бірақ оған көбірек уақыт жұмсалады.

Дайын қосымшаны іске қосу. Көптеген компиляциядан кейін сіз барлық қателерді түзеп және орындалатын файлды алғаннан кейін, күш салған еңбегіңіздің нәтижесін көруге болады. Ол үшін құрылған қосымшаны Run | Run командалық менюі немесе F9 пернесі арқылы орындауға болады. Орындалар алдында автоматты түрде компиляциялау процесі қайталанады (егер жобаға түзетулер енгізілсе) және қосымшаның сәтті аяқталуынан кейін орындауға жіберуге болады. Нәтижесінде сіз экранда оның басқы формасын көресіз. Жоба туралы айтылу керек нәрселердің барлығы осылар. Толығына келсек сіздер жобаның не екенін білесіз және оны қалай басқару керектігін де білесіз. Жобаны құру бөліктерімен танысуға да уақыт келді және Delphi - формаларды ортасында кез келген қосымшаның негізгі элементтерімен де танысуға болады.

Форма. Форма түсінігі.

Бірінші бөлімнен сіздер форма туралы жалпы мағлұматты білесіздер, енді оны толығырақ игерудің уақыты туды.

Оқиғалы форма - қосымшаның басқы компоненті, ол бұрыннан белгілі компоненттер сияқты өзінің қасиеті бар.Форманың негізгі қасиеттері: басы,биіктігі, ені, орны, фон түсі,және т.б. Delphi ортасында жаңа форма құру кезінде форма қасиеттеріне алғашқы мәндерді өзі береді, бірақ сіз оларды өзіңізге қалауыңыз бойынша өзгерте аласыз. Оны форманы жобалау (қасиеттер терезесінде) кезінде немесе қосымшаны орындау (Delphi тілінің операторларының көмегімен) кезінде жасауға болады.

Форманың қасиеттері өте көп, сондықтан да оларды шатастыру өте оңай. Шатасу алфавиттік реттен құралған Object Inspector қасиеттер терезесінде болатынын практика жүзінде көз жеткізуге болады: мағыналары бойынша бір-біріне жақын сөздер әр ұяшықтар тізіміне бөлініп тасталынады. Сізде форманың мүмкіндіктері туралы түсінік пайда болсын десеңіз, онда олардың маңызды деген негізгі форма қасиеттерін қарастырамыз. Ол үшін бізге жаңа қосымша керек болады.

Менюден File | New | Application командасын таңдаңыз. Delphi ортасы автоматты түрде жаңа жобада таза форма құрады және оның шығу мәтінін код редакторына кіргізеді.

Оларға мағыналы ат беру үшін жоба мен оның формасын бірден сақтаңыз. Менюден File | Save All командасын таңдап және модульге Main.pas атын беріп, ал жобаны FormTest.dpr. атымен сақтаңыз. Форманы игеру жағдайлары жасалды, енді тек олардың қасиеттерімен айналысу керек.

Форманың аты және басы

Форманы баптауды ең алдымен Name қасиеті арқылы орындайсыз. Ол программадан формаға өту идентификаторынан тұрады. Форманың алғашқы терезесінде автоматты түрде Form1 атымен басталады. Біз әр қашан форманың атын өзгертуге ақыл береміз, өйткені оның аты қосымшада қандайда бір рөл атқарады. Мысалы, форманың алғашқы қосымшасын MainForm деп атауға болады (егер есіңізге басқа ештеңе түспесе).

Таныса келе Name қасиеті кез келген компонентте бар екенін байқайсыз және ол қасиеттер терезесінде өзгеріске ене алады. Әрбір қосымша формасында оның атқаратын қызметін көрсететін басы болуы керек. Басы Caption қасиетінде көрсетіледі. Біздің форма негізінен оқуға байланысты, сондықтан оған Main атын береміз, ол тек жай ғана басты форма екенін көрсетеді.

Форманың өлшемі және экрандағы орны

Енді форманың өлшемдері және экрандағы орнын айқындап алайық. Тышқанның көмегімен жобалау кезінде форманың өлшемі мен экрандағы орнын орнату оңай. Ал, басқа тәсілді алсақ, ол - қасиеттер терезесіне барып, Width жәнеHeight қасиеттер көмегімен формаға өлшем беру, ал орнын - Left және Top қасиеттер көмегімен (мәндері пикселмен беріледі) орнатуға болады.

Сонымен бірге, Position қасиеті көмегімен форманың экранда автоматты түрдегі орнын ұйымдастыруға болады. Оны келесі мәндерді таңдау арқылы іске асыруға болады:

§ poDefault - форманың өлшемдері және орны экранның өлшемінен шыға тұрып алынады.

§ poDefaultPosOnly - форманың орны автоматты түрде алынып, ал биіктігі мен ұзындығы сәйкес Width жәнеHeight қасиеттері мәнімен анықталады.

§ poDefaultSizeOnly - форманың өлшемдері автоматты түрде орнатылады да, ал орны Left және Top қасиеттерінің мәнімен анықталады.

§ poDesigned - форманың орны мен өлшемдері Left, Top, Width, Height қасиеттері мәндерімен анықталады.

§ poDesktopCenter - форма жұмыс үстелінің ортасына қойылады(яғни, тапсырмалар панелі алынған экранда). Форма өлшемдері WidthжәнеHeight қасиеттерінің мәнімен анықталады.

§ poMainFormCenter - форма басты формаға қарай орталықтанады. Форма өлшемдері WidthжәнеHeight қасиеттерінің мәнімен анықталады.

§ poOwnerFormCenter - форма басқарушының формасына қарай орталықтана бастайды. Форма өлшемдері WidthжәнеHeight қасиеттерінің мәнімен анықталады.

§ poScreenCenter - форма экранның ортасына орналастырылады. Форма өлшемдері WidthжәнеHeight қасиеттерінің мәнімен анықталады.

Кей кезде форманың өлшемдері компоненттері орналасқан оның ішкі жұмыс облысының (client area) өлшемінен шыға есептеледі. Жұмыс облысына жақтауша мен тақырыпша кірмейтіні белгілі. Жұмыс облысының өлшемдері ClientWidth және ClientHeight қасиеттерінде сақталады. Оларды орнату кезінде Width және Height қасиеттерінің мәні автоматты түрде есептеледі (керісінше де).

Форманың өлшемін таңдау кезінде экранның өлшемін ескеру керек кезеңдерде болады. Қазіргі замандағы видео-адаптерлер әртүрлі рұқсаттары бар көптеген режимдерді қолдайтындықтан, мынандай сұрақ туындайды: дисплейдің рұқсаты бар мүмкіндігіне қарамастан форма мен экранның арасында бірдей пропорцияны қалай орнатуға болады. Бұл жағдайға формада

Scaled қасиеті қарастырылып қойылған. Егер ол True мәнімен орнатылған болса, онда дисплейдің рұқсат қабілетіне байланысты автоматты түрде масштабталады.

Экранда қозғалту кезінде форма кішкене болса да экранның шеттеріне жабысып тұруы мүмкін, егер форманың шеттері аз ғана қашықтықта тұрған болса. Бұл жағдай егер ScreenSnap қасиетінің мәні True-ге тең болған кезде орындалады. Форманың экранның шетіне дейінгі қашықтығы, яғни форма жабысып тұратын жерін, SnapBuffer қасиетінде беруге болады және пикселмен есептеледі.

Пайдаланушы қосымшамен жұмыс жасау кезінде, сәйкес батырмалардың көмегімен форманы бүкіл экранға жайып немесе қайыртын мүмкіндікке ие болады.Форманың бұл жағдайы (жаюы немесе қайыруы) WindowState қасиетімен анықталады, олар келесі мәндерді қабылдайды:

§ wsNormal - форма қалыпты жағдайда тұр (қайырылмаған, бүкіл экранға созылмаған);

§ wsMinimized - форма қайырылған;

§ wsMaximized - форма бүкіл экранға жайылған.

Егер сіз жобалау барысында WindowState қасиетінің мәнін wsMinimized немесе wsMaximized ауыстырсаңыз, онда сіз автоматты түрде тапсырмалар панелінде жиюлы тұрған немесе жаюлы тұрған форманы ала аласыз.

Бір немесе бірнеше мониторы бар компьютерлерге форма үшін монитор таңдап алу мүмкіндігі бар, ол онда кескінделеді. Ол үшін DefaultMonitor қасиетін келесі мәндерде орнату керек:

§ dmDesktop - форма ағымдағы мониторда кескінделген; форманы қандай да бір белгілі мониторға орналастыру мүмкін емес;

§ dmPrimary - форма Screen объектісінің Monitors тізімінің бірінші мониторында кескінделеді;

§ dmMainForm - форма басты форма орналасқан мониторда кескінделеді;

§ dmActiveForm - форма активті берілген форма орналасқан экранда кескінделеді.

14.2 ДҚ- мен жұмыс жасауға арналған Delphi компоненттері.

Delphi ортасы үшін компонент түсінігі ең негізгісі болып саналады. Компоненттерсіз қосымшаның барлық визуалдық артықшылықтары өшеді және айтатын ештеңе қалмайды. Сондықтан да компоненттерді қолдану техникасына көп көңіл бөлгеніңіз жөн.

Компоненттерге деген екі көзқарас бар.

§ Сыртқы көзқарас, дәлірек айтсақ қосымшаны визуалдық өңдеу ортасынан. Осы көзқарас бойынша компоненттер - бұл жеткілікті құру блоктары, оларды компоненттер палитрасынан аласыздар және өзіңіздің формаңызды құру үшін ауыстырасыз. Компоненттер мысалы сізге белгілі: батырмалар, тізімдер, қолтаңбалар, және басқалар.

§ Сонымен қатар ішкі көзқарас та бар, яғни программадан Delphi тіліне деген көзқарас. Осы көзқарас бойынша компоненттер - олар класстар, published-қасиеті бар TComponent класстарынан тура енемесе жанама туындаған. Компоненттер экземплярлары - бұл форманың жазығы ретіндегі класстар объектісі. Шығарылып қойған компоненттер қасиетінің ішінде аты (Name) болуы керек, ол бойынша компонент экземпляры басталады.

Бұл екі көзқарастың бірігуі компоненттер туралы толық түсінік бере алады. Қосымшаны визуалдық өңдеуде компонентпен жұмыс жасау кезінде сіздер әрқашан оның беттік жағын көре аласыз. Бірақта, сіздер оқиғаларды өңдеулерді жаза бастағанда, сіздер компоненттің программалық жағын көресіз, оның негізі - объектілері. Сонымен, Delphi сиДҚиоз визуалдық және объекті - ориентирленген программалаумен қамтамасыз етеді.

Компоненттің құрылымын зерттеу кезінде, оның табиғаты үштік екені анықталады және мына формуламен жақсы анықталады:

Компонент =күйі(қасиеті)+тәртібі(әдістері)+кері реакция(оқиға).

§ Компоненттер жағдайы оның қасиеттерімен анықталады. Қасиеттер өзгеретін (оқу және жазу үшін) және өзгермейтін (тек қана оқу үшін) болады. Осыған байланысты, жобалау қадам кезінде(design-time) немесе программаны орындау уақытында (run-time) қасиеттер мән қабылдай алады. Әрбір компонент үшін ең бірінші қасиеттер терезесінде орнатылады және компоненттің басқы жағдайын анықтайды. Қосымшаны орындау кезінде бұл қасиеттер программалы өзгеріске енуі мүмкін, сәйкес сыртқы көрінісі мен компонент тәрбиесі өзгереді. Екінші топ - бұл терезелер қасиетінде көрсетілмеген қасиет, және олармен тек қана программалы басқаруға болады. Delphi тілінің көзқарасы бойынша, бұл топтар арасындағы айырмашылығы, олар секцияда бірінші published, ал екінші - public секциясында болып табылады.

§ Компонент тәрбиесі оның процедуралары және функциялары (әдістері) көмегімен сипатталады. Компоненттер әдісін шақыру программаның шығу кодына енгізіледі және қосымшаны орындау кезінде ғана болады. Әдістерде өзімен визуалдық негізі болмайды.

§ Компоненттің кері реакциясы - ол оның оқиғалары. Мысалы, оқиғалар батырманы басуды форма әдісін шақырумен байланыстыра алады. Оқиға қасиеттер көмегімен орындалады, олардың әдістерге сілтемелері бар.

Негізгі әдебиет [2], бет625-637

Қосымша әдебиет 211-223

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

1. Жобаны басқару терезесін баптау қалай жүзеге асады?

2. Жобаның параметрлерін баптауға мысал келтіріңіз.

3. Форманың бірнеше стилін құрыңыз.

4. Есеп беру форма стилін құрыңыз.

5 ДҚ үшін Delphi ортасының жақсы жақтарын сипаттаңыз.

Дәріс 15. Деректер қорының Oracle Server, MS SQL Server – таратылған серверлерінің техникалық мінездемелері.

Серверлерге арналған көп таралған қолданбалы жүйелер классының бірі ретінде және компьютерлік техниканы шығарушылардың компанияларының жүйелерінің көбісі деректер қорына жүйелік басқару болып табылады (ДҚЖБ). ДҚЖБ серверлері желілік файлдар жүйесінен NFS -тен әлдеқашан маңыздырақ. Стандартты реляциялы ДҚЖБ (SQL) тілдері NFS-ке қарағанда көп. Сонымен қатар, бірнеше белгілі коммерциялық ДҚБЖ үлестірулері бар, олар әртүрлі компаниялар серверіне тиімді, олардың әрқайсысының әртүрлі мінездері бар. Соған байланысты келесі материалдың жеткілікті жалпы мінездемесі болады.

«Қанша пайдаланушы берілген тип бойынша берілген жүйені қамтиды?»- деген сұраққа тура жауап беру мүмкін емес. Жалпы жағдайда, берілген конфигурация онымен жұмыс жасай алады дегеннен, жүйенің анықталған конфигурациясы берілген тапсырманы орындай алмайды деп шешуге болады. Мысалы, дискіге өз еркімен жіберу операциясы кезіндегі бір дискілік жинақтаушысы бар жүйе секундына 130 көрсету жасай алмайды, өйткені бір диск секундына тек қана 65 көрсету ғана жасайды. Бірақта, осындай екі дискісі бар жүйе, ондай қиындықты жеңуі немесе жеңбеуі де мүмкін, дискілік жинақтаушымен ешқандай байланысы жоқ дискіде басқа тары орын болуы мүмкін.

Деректер қорын қолдануға бағытталған қосымшалар сияқты, ДҚБЖ де өз ұйымдары бойынша бөлінеді. Егер файлдық сервер базасындағы жүйені салыстырмалы түрде жұмыс қиындығының типіне қарай екі әртүрлі класстарға бөлуге болатын болса (файлдар атрибутын интенсивті өңдеумен және берілген деректер қорымендің өзін интенсивті өңдеумен), онда деректер қоры және ДҚБЖ қосымшалары арасында ондай классификациялар жүргізуге болмайды.

Қазіргі таңда көптеген деректер қорының әртүрлі архитектурасының толық бір қатары бар болса да, UNIX-жүйе рыногі реляциялық моделге тоқтады. Көптеген абсолютті инсталлирленген жүйелер реляциялық, себебі бұл архитектура мынандай Sybase, Ingres, Informix, Progress, Empress және DBase өндірістерден таңдалған. Software AG компаниясының ADABAS – бұл иерархиялық жүйе, стандартты SQL-ді өңдей алады.

Көптеген басатын жүйелер жалғыз сол концептуалды жалпы сұлбамен жұмыс жасайтынын біле отырып, әртүрлі өнімдер арасында көп архитектуралық айырмашылықтар бар. Ең тиімдісі ДҚБЖ үлестіруі болып табылды.

 

Көп ағымды 2N
Oracle Version 7 (optional) Oracle Version 6 және үнсіз күйде Oracle Version 7
Sybase v4.9.x, System10 Informix v5.x
Ingres v6.x Ingres v

5rik.ru - Материалы для учебы и научной работы