Автор работы: Пользователь скрыл имя, 17 Декабря 2013 в 17:39, реферат
Мәліметтер қорының әр кестесі өрістердің жиынтығынан тұратын жеке құрылымға ие болады. Әр өрстің мәліметтерінің жиынтығы мәліметтің типін сипаттайтын мазмұнынан тұрады, оған анықталған орында мән сәйкес келуі тиіс.
Delphi тіліндегі мәліметтер қорынының қосымшасындағы әр жинаққа өзіне сәйкес объект тура келеді. Өрістің негізгі объектісі болып Tfield классы табылады, ол абстрактілі өріспен жұмыс жасауға да негізделген. Ол мәліметтердің типіне сәйкес келеді. Осы базалық классқа басқа класстар сәйкес келеді.
Стандартты объектілі
бағдарланған модель ODMG -93
стандартында сипатталған (Object
Database Management Group – бағдарланған
мәліметтер қорын басқару тобы).
ODMG -93 стандартын толық көлемде
меңгеру әлі асырылған жоқ.
Негізгі идеясын баяндау үшін
объектілі бағдарланған МҚ моделінің
жеңілдетілген түрін
Объектілі бағдарланған МҚ-ның құрылымын торабтары объект болып табылатын графикалық тармақ түрінде қарастыруға болады. Объектінің қасиеттері қандай да бір стандартты типпен (мысалы string-жолдық) немесе пайдаланушының құрған типімен (мысалы, class) сипатталады. String типінің мәні символдар жолы болып табылады. Class типінің мәні сәйкес кластың экземпляры болып табылатын объект болады.
Әрбір объект – класс экземпляры объектінің ұрпағы болып есептеледі, ол қасиет ретінде анықталған. Класс экземплярының объектісі өзінің класына жатады және бір ғана ата-анасы болады. МҚ-дағы туыстық қатынастар объектілердің байланыс иерархиясын құрады.
Сурет 11.6.1 - Кітапхана жұмысындағы МҚ-ның логикалық құрылымы
Мұнда кітапхана типті объект абонент, каталог және жіберу объект экземпляр кластарына ата-аналық болып табылады. Кітап типті әртүрлі объектілердің бір немесе бірнеше ата-анасы болуы мүмкін. Бір ата-анасы бар КІТАП типті объектілер ең болмағанда инвентарлық номері бойынша ажыратылуы тиіс, бірақ ISBN, УДК, АТЫ, және АВТОР қасиеттерінің мәні бірдей болуы мүмкін.
Объектілі бағдарланған МҚ-ның логикалық құрылымы иерархиялық МҚ-ның құрылымына ұқсас. Олардың арасындағы негізгі айырмашылық мәліметтерді манипуляциялау әдісінде болуы мүмкін.
Қарастырылып отырған МҚ-да мәліметтермен орындалатын операцияларда инкапсуляция, мұрагерлік (наследование) және полиморфизм тәрізді объектілі бағдарланған механизмдерге күшейтілген логикалық операциялар қолданылады. Кей жағдайда SQL операцияларына ұқсас операциялар қолданылуы мүмкін (мысалы, МҚ-н құру).
МҚ-н құру және түрлендіру мәліметтерді жылдам іздеуге арналған ақпараттан тұратын индекстерді автоматты түрде құрып, одан кейін түзейтіндей болуы тиіс (индексті кестелер).
Объектілі бағдарланған МҚ
моделіне қатысты инкапсуляция, мұрагерлік
және полиморфизм ұғымдарын
Инкапсуляция –объектінің өзі анықталған аралықтағы қасиеттердің аты көрінетін облыспен шектеледі. Егер каталог типті объектіге кітап авторының телефонын қосатын болсақ (телефон деген атауы бар болса), онда біз абонентжәне каталог объектілерінің бір атаулы қасиеттерін аламыз. Мұндай қасиеттің мәні инкапсуляцияланған объектілермен анықталады.
Мұрагерлік – бұл керісінше, объектінің барлық ұрпақтарындағы қасиеттердің көріну облысын кеңейтеді. Мысалы, каталог типті объектінің ұрпағы болып табылатын кітап типті барлық объектіге ата-аналық объект қасиетін беруге болады: ISBN, УДК, АТЫ, және АВТОР. Егер тікелей ата-ана болып табылмайтын объектілерде мұрагерлік жасау механизмін кеңейту қажет болса (мысалы, бір ата-ананың ұрпақтарының арасында), онда олардың ортақ атасында abs типті абстрактілі қасиет анықталады. Кітапхана объектісіндегі билет және номер абстрактілі қасиеттерін анықтау барлық абонент, кітап және жіберу ішкі объектілерінен осы қасиетті шығаруға әкеледі.
Полиморфизм – объектілі бағдарланған программалау тілдерінде қандай да бір программалық кодтың әртүрлі типті мәліметтерімен жұмыс істеу қабілетін көрсетеді. Объектілі программаның орындалуы кезінде сол әдіс аргументтің типіне тәуелді әртүрлі объектілерде қолданылады. Біздің жағдайда, объектілі бағдарланған МҚ-на қатысты, полиморфизм кітап класындағы объектілердің қаиеттерінің жиынтығы әртүрлі болуы мүмкін. Кітап класындағы объектілермен жұмыс істейтін программаның полиморфты коды болуы мүмкін.
Объектілі бағдарланған МҚ-дағы іздеу дегеніміз – пайдаланушының сұраған объектісі мен МҚ-да сақталған объектінің арасындағы ұқсастықты анықтау болып табылады. Объект-мақсат деп аталатын пайдаланушының анықтайтын объектісі, жалпы жағдайда, МҚ-да сақталған барлық объектілер иерархиясының ішкі жиыны түрінде берілуі мүмкін. Объект-мақсат, сондай-ақ, сұраныстың орындалу нәтижесі қорда сақталуы мүмкін. Кітапханада кем дегенде бір кітап алған абоненттің аты мен оқырман билетінің номері жөніндегі сұраудың мысалын былай көрсетуге болады (2.7-сурет).
Реляциялық мәліметтер
қорының моделімен салыстырғанда
мәліметтердің объектілі
Мәліметтердің объектілі бағдарланған моделі мәліметтер қорындағы жеке жазуларды ерекшелеп, оларды өңдеу қызметін анықтау болып табылады.
Сурет 11.6.2 - Бүтін объектілі МҚ фрагменті
Объектілі бағдарланған модельдің кемшілігі ұғымдарының аса жоғары күрделілігі, мәліметерді өңдеудің қолайсыздығы және сұрауды орындаудың күрделілігінде болып отыр.
90-жылдары объектілі
бағдарланған мәліметтер қорын
басқару жүйелерінің
Байланысқан кестелермен жұмыс жасауды қарастыру
Мәліметтер қорының бөлек кестелерінің арасында байланыс болуы мүмкін, ол кестелердің байланыс өрістері арқылы ұймдастырылады. Байланыс өрісі міндетті түрде индекстелген болуы қажет. Кестелер арасындағы байланыста бір кесте - негізгі кесте, ал екінші кесте – бағынышты кесте болып табылады. Кестелер арасындағы байланысты ұйымдастыруда бағынышты кестеде келесі қасиеттер пайдалынады:
▪ MasterSource – негізгі кестенің мәліметтер көзі;
▪ IndexName – бағынышты кестенің ағымдағы индексі;
▪ IndexFieldNames – бағынышты кестенің ағымдағы индексінің өрісі немесе байланыс өрісі
▪ MasterFields – негізгі кесте индексінің өрісі немесе байланыс өрісі
Байланысқан кестелермен жұмысты қойма есебін автоматтандыруға арналған қосымша мысалын қарастырайық. Қойма есебін ұйымдастыруда екі кесте пайдалынады: тауарлар тұратын Tovar кестесі және әр бір тауардың кірісі мен шығысынан тұратын, яғни тауарлар карточкаларынан тұратын Cards кестесі.
Кесте 11.6.1 - Tovar кестесінің құрылымы
Кесте 11.6.2 - Cards кестесінің құрылымы
Кестелер арасында «негізгі-бағынышты» байланысы орнатылады. Tovar кестесі негізгі, ал Cards кестесі бағынышты кесте. Байланысты ұйымдастыру үшін негізгі кестеде байланыс өрісі ретінде S_Code автоинкременттік өрісі алынады. Бағынышты кестеде байланыс өрісі индекстік өріс құрылған C_Code бүтін типті өрісі болып табылады.
Байланыс орналастыру үшін Table2 кестесінің MasterSource қасиетінде DataSource1 мәнін қою керек. Сосын Объект инспекторы MasterFields жолында үш нүктелі түймеге басып, байланыс редактор терезесін (Field Link Designer) шығару. Available Indexes (Индекстерді енгізу) тізімінде бағынышты кестенің C_Code индексін таңдау, сонда Detail Fields (Детальдық өріс) тізімінде байланыс өріс (C_Code) аты пайда болады. Бұл тізімнен бағынышты кесте өрісін, ал MasterFields (Негізгі өріс) тізімінде – негізгі кесте өрісін таңдау қажет (сурет). Енді Add түймесін басу, сонда таңдалған өрістер өз ара байланысады, Joined Fields (Байланысқан өрістер) тізімінде C_Code-> S_Code түрінде бейнеленеді.
Сурет 11.6.3 - Кестені қосымшадан байланыстыру
Мәліметтер қорының кез-келген қосымшасы ең қарапайым екі операцияны орындай алу керек.
Біріншіден, мәліметтер қорының қайда
орналасқандығын білу керек, мәліметтер
қорына қосыла алу керек және МҚ
кестесінен ақпаратты оқи алуы керек.
Бұл функция белгілі бір
Екіншіден, алынған ақпаратты
Сондықтан мәліметтер жиынтығы және
мәліметтердің жиынтығының
Қолданушы қандай болмасын бір санды өзгертуі керек болса, онда ол мәліметтер жиынтығының ұяшығының мазмұнын өзгерту керек болады. Қосымшаны жабу кезінде барлық өзгерісті сақтау керек – бұл мәліметтер жиынтығы саөтау үшін жасалады. Сондықтан базалық функцияларды мәліметтердің жиынытығы үшін қолдана отырып, компоненттер әртүрлі технологиядағы мәліметтермен жұмысты қамтамасыз етуі керек. Класс TDataset иерархияның базалық класы болып табылады, ол абстрактілі мәліметтер жиынтығын инкапсулирлайды және онымен жұмыс жасаудың максимальды мүмкіндігін ашады.
Сурет 11.6.4 - Мәліметтер жиынтығының қызмет етуін қамтамасыз етуіндегі иерарзия классы
Базалық класстың негізінде арнайы компоненттер VCL (Visual Component Library) қолданылады. Ол әртүрлі технологияны іске асыру үшін қолданылады. Сонымен қатар бірдей қасиетті баптай отырып мәліметтер қорының қосымшасын құруға болатындығының мүмкндігін ашады.
Мәліметтердің абстрактілі жиынтығы
Иерархилық кластың негізінде Delphi тілінің мәліметтер қорының қосымшасы мәліметтердің жиынтығын қызмет етуін қамтамасыз ететін TdataSet класында жатады. Демек, олар әдістердің мазмұнынан тұрмаса да мәліметтердің жиынтығының механизімінің негінде жұмыс жасайды.
Осы класс мәліметтер жиынтығының қызмет етуініңің құрылымыдық негізін береді.
Мәліметтердің жиынтығымен жұмыс жасауда іске асатын негізгі механизмдерді қарастырайық:
Мәліметтердің жиынтығы келесі қасиетпен ашылып сол қасиетпен жабылады
property Active: Boolean;
Осы қасиетке міндетті түрде True немесе False мәнін меншіктеу керек. Аналогтық әрекеттер мына тәсілдерді орындайды:
procedure Open;
procedure Close;
Мәліметтердің жиынтығын ашқаннан кейін оны жазбасы бойынша жылжытуға болады.
Бір жазбаға алға немесе артқа жылжыту үшін оған сәйкес тәсілдер
procedure Next;
procedure Prior; қолданылады.
Бірінші және соңғы жазбаға түсу үшін келесі тәсілдерді қолдануға болады
procedure First;
procedure Last;
Жиынтыққа соңғы жазбаның түскендігін бақылау үшін келесі қасиетті қолдану керек
property Eof: Boolean;
Оған міндетті түрде True мәнін меншіктеу керек.
Бірінші жазба үшін функцияны келесі қасиет орындайды:
property Bof: Boolean;
Алға және артқа жылжыту үшін жазба нөмірін беруде келесі тәсілді жазу керек
function MoveBy(Distance: Integer): Integer;
Distance параметрі жазба санын анықтайды. Егер параметр теріс болса, онда – жылжыту мәліметтер жиынтығының басына жылжиды, кері жағдайда соңына жылжиды.
Мәліметтер жиынтығының
procedure DisableControls;
Кері операция келесі тәсілмен орындалады:
procedure EnableControls;
Мәліметтердің жиынтығының жазбасының жалпы саны келесі қасиетті қайтарады
property RecordCount: Integer;
бірақ, онды ұқыпты түрде қолданбаса, әр талап етілуде мәліметтер жиынытығының жаңаруына әкеліп соқтырады. Егер мәліметтер жиынтығы бос еместігін анықтау керек болса, онда келесі тәсілді қолдануға болады
function IsEmpty: Boolean;
Ол True мәнін қайтарады, егер мәліметтер жиынтығы бос болса немесе осы қасиет кездессе
...
if MyTable.Bof and MyTable.Eof
then ShowMessage('DataSet is empty');
...
Ағымдағы жазба саныыне келесі қасиет бойынша білуге болады
property RecNo: Integer;
Жазба өлшемі байтпен келесі қасиет бойынша беріледі
property RecordSize: Word;
Әр мәліметтер жиынытығының жазбасы кесте өрісінің мәнінің жиынтығынан тұрады. Ол компонент типінің және оны реттеудің, өріс санының тәуелділігіне байланысты орындалады.
Мәліметтер жиынтығының
property Fields: TFields;
Ал барлық қажет өріс параметрлері келесі қасиетте орындалады
property FieldDefs: TFieldDefs;
Мәліметтер жиынтығының
property FieldCount: Integer;
Ал BLOB типінің жалпы саны
property BlobFieldCount: Integer; қасиетінде орналасады.
Ағысдағы өріс мәніне мүмкіндікті алу келесі қасиетпен іске асады