Мәліметтер қорларын жобалау
Мәліметтер қорларының жүйесі объекттердің екі түрін — объекттерді және байланыстарды — көрсетуге мүмкіндік беруі керек. Дегенмен, олардың арасында принципті айырмашылық жоқ: байланыс — арнайы түрдегі объект.
Мәліметтерді модельдеудің үш негізгі амалы бар: иерархиялық, желілік, реляциялық. Олар пайдаланушыға байланыстарды көрсету және өңдеу тәсілдерімен ерекшеленеді.
Неге мәліметтер қоры қажет болды?
Индексті-тізбектелген файлдар белгілі бір жазбаға тікелей қол жеткізу мәселесін ішінара шешті. Мысалы, САТУЛАР файлынан бірінші жазбаны оқып, клиенттің аты мен адресін анықтау үшін клиент идентификаторын қолдануға болады.
Мәселенің түйіні
Егер керісінше есепті шешу керек болса — белгілі клиентке (мысалы, ID=100) қатысты барлық сатуларды табу — файлдық жүйеде бұған тікелей жауап алу қиын, кейде тіпті мүмкін емес.
Осындай қолданбалы есептерді шешу үшін мәліметтер қорын басқару жүйелері (МҚБЖ) жасалды. Мәліметтер қорын пайдаланатын алғашқы ақпараттық жүйелер XX ғасырдың 60-жылдарында пайда болып, көбіне иерархиялық модельге сүйенді.
Иерархиялық модель
Мәліметтер арасындағы қатынастардың иерархия түріндегі құрылымы бар модель иерархиялық модель деп аталады. Бұл модельдер ертерек пайда болғандықтан, қазіргі заманғы реляциялық модельдерге қарағанда сирек қолданылады. Дегенмен, осы модельге негізделген жүйелер әлі де кездеседі.
Көптеген нақты байланыстардың табиғаты иерархияға сәйкес келетіндіктен, объекттер кластары арасындағы өзара байланыстарды көрсету үшін иерархия қарапайым әрі орынды тәсіл болды.
Негізгі бірліктер
- Мәліметтер қоры — сақталатын құрылымдардың жиынтығы.
- Сегмент — DBTG терминологиясында жазбаға сәйкес келетін бөлік.
- Өріс — пайдаланушы қол жеткізе алатын минималды бөлінбейтін мәлімет бірлігі.
Кілт және сәйкестендіру
Әр сегмент типі біртекті жазбалар жиынын құрайды. Жиындағы әртүрлі жазбаларды ажырату үшін сегмент типінде кілт немесе кілттік атрибуттар жиыны болуы керек.
Кілт — сегмент данасын бірмәнді сәйкестендіретін мәліметтер элементтерінің жиыны.
Құрылым және шектеулер
Иерархиялық модельде сегменттер бағытталған ағаш құрылымды графқа бірігеді. Бағытталған қабырғалар сегменттер арасындағы иерархиялық байланыстарды көрсетеді: жоғары тұрған (аналық) сегменттің әр данасына төмен тұрған (бағынышты) сегменттің бірнеше данасы сәйкес келеді.
Атаулар
Бастапқы сегмент — аналық, ал бағынышты сегмент — ұрпақтық сегмент.
Шектеу
Әр бағынышты сегмент тек бір аналық сегментпен байланыса алады.
Егіздер
Бір аналық сегментпен байланысқан бір типті ұрпақ даналар егіздер деп аталады.
Иерархиялық мысал: клиент — шот — шот жолдары
Сатуларды бір жазба түрінде сақтау орнына ШОТТАР файлын енгізейік: әр клиентте бірнеше шот болады. Әр шот бірнеше жолдан тұрады, ал шот құрамы ШОТ_ЖОЛДАРЫ файлында сақталады. Осылайша САТУЛАР файлының орнына екі файл пайда болады: ШОТТАР және ШОТ_ЖОЛДАРЫ.
Иерархия логикасы
- Клиенттерге шоттар бағынышты.
- Шоттарға шот жолдары бағынышты.
Иерархиялық МҚ-да бұл байланыстар көбіне физикалық көрсеткіштер арқылы іске асады: көрсеткіш — жазбаның дискідегі орнын белгілейтін физикалық адрес. Клиент жазбасында — оның алғашқы шот жазбасына, ал шот жазбасында — келесі жазбаларға және шот жолдарына көрсеткіштер сақталады. Нәтижесінде жүйе белгілі клиенттің барлық шоттарын және шот жолдарын тез таба алады.
Иерархиялық мәліметтер қорына клиенттер туралы қосымша мәліметтер енгізейік. Мысалы, клиенттер — сауда компаниялары болса, әр компанияның дүкендерінің тізімі қажет болуы мүмкін. Бұл сұлбаны кеңейтеді. Мұнда ӨКІЛ деп белгілі дүкенге тауарларды сатып алушыны түсінеміз.
Иерархиялық модельдің әлсіз тұсы
Барлық қатынастарды иерархия түрінде көрсету мүмкін емес. Мысалы, шоттар мен сауда агенттері арасындағы байланысты енгізу қажет болуы мүмкін (делдалдық ақыны есептеу үшін). Бірақ мұнда бір бағынышты файлдың екі аналық файлы пайда болады — бұл иерархиялық құрылымға қайшы.
Желілік модель
Егер файлдағы әр жазба басқа бірнеше файлдардың жазбаларына бағынуы мүмкін болса, мәліметтер арасындағы мұндай қатынастар желілік деп аталады. Осындай қатынастарды өңдеу қажеттіліктеріне байланысты XX ғасырдың 60-жылдарының соңында желілік МҚБЖ пайда болды.
Иерархиялық жүйелердегідей, желілік жүйелерде де мәліметтерді байланыстыру үшін алдын ала анықталған физикалық көрсеткіштер қолданылды. Айырмашылығы — желілік модель әртүрлі файлдардағы жазбалар арасында әлдеқайда күрделі қатынастарды қолдай алды.
Негізгі объекттер
- Мәліметтер элементі — қол жеткізілетін ең кіші бірлік.
- Мәліметтер агрегаты — жалпылаудың келесі деңгейі (векторлық және қайталанатын топ түрлері бар).
- Жазба — объект класын сипаттайтын агрегаттар жиыны (иерархиялық модельдегі сегментке ұқсас).
- Жиын — екі жазба типін «бір-көпке» қатынасымен байланыстыратын құрылым.
Жиын: иесі және мүшесі
Жиын екі деңгейлі граф ретінде қарастырылып, жазбалар типтері арасындағы байланысты көрсетеді: аналық тип — жиын иесі, ал ұрпақтық тип — жиын мүшесі.
Екі жазба типі үшін оларды байланыстыратын жиындардың кез келген саны берілуі мүмкін. Бұл нақты ортадағы көп-көпке қатынастарды модельдеуге мүмкіндік береді — желілік модельдің маңызды артықшылығы.
Маңызды шектеу
Жазбаның бір типі бір уақытта әрі жиын иесі, әрі жиын мүшесі бола алмайды.
Физикалық көрсеткіштерге тәуелділіктің салдары
Көрсеткіштер арқылы байланысқан мәліметтерді алу жылдам болуы мүмкін, бірақ байланыстар алдын ала анықталуы тиіс. Егер логикалық байланыс бар болғанымен, физикалық көрсеткіш орнатылмаса, қажетті мәліметті алу күрделене түседі немесе өте ұзақ бағдарламалауды талап етеді.
Мысалы, ТАУАРЛАР файлы ШОТ_ЖОЛДАРЫ файлымен физикалық көрсеткіш арқылы байланыспаса, сатып алынған тауарлардың өндірушілері туралы мәліметті тікелей алу қиын болады — логикалық байланыс бар, бірақ физикалық «жол» жоқ.
Реляциялық модель: Кодд ұсынған революция
1970 жылы доктор Е. Ф. Кодд (сол кезде IBM корпорациясында) маңызды идея ұсынды: мәліметтерді физикалық көрсеткіштер арқылы емес, логикалық өзара қатынастары арқылы байланыстыру қажет. Егер бастапқы мәліметтерде оларды біріктіруге жеткілікті логикалық ақпарат болса, пайдаланушы әртүрлі көздерден мәліметтерді еркін комбинациялай алады.
Кодд мәліметтердің қарапайым моделін сипаттады: барлық мәліметтер жолдар мен бағандардан тұратын кестелерде беріледі. Мұндай кестелер реляциялар деп аталады, сондықтан модель реляциялық деген атауға ие болды.
Негізі
Реляциялық модель жиындар теориясы мен предикаттар логикасының математикалық принциптеріне сүйенеді.
Не анықтайды?
- мәліметтерді көрсету тәсілі (құрылым);
- қорғау және бүтіндігін сақтау тәсілдері;
- мәліметтермен орындалатын операциялар.
Маңызды қағида
Реляциялық модельде концептуалды деңгейде мәліметтер қатынастар түрінде беріледі, ал физикалық деңгейде олардың қалай сақталатыны қатаң түрде таңылмайды.
Логикалық және физикалық деңгейлерді бөлу
Коддтың тағы бір маңызды жаңалығы — мәліметтерді жазба-жазба емес, тұтас кестелер жиыны деңгейінде бір бұйрықпен өңдеу идеясы. Бұл логикалық және физикалық деңгейлерді бөлуге, ал соның нәтижесінде мәліметтер қорларын программалаудың тиімділігін арттыруға мүмкіндік берді.
Мәліметтерге логикалық көзқарас маман емес пайдаланушыларға да түсінікті сұраныстар тілдерін жасауға жол ашты. Мұндай тілдерді жобалау қиын болғанымен, реляциялық сұраныстар тілдері мәліметтер қорына қолжетімділікті айтарлықтай кеңейтті.
Реляциялық тілдердің қалыптасуы
XX ғасырдың 70-жылдарындағы Кодд жарияланымдары реляциялық жүйелерді зерттеу мен коммерциялық дамытуды жеделдетті. Нәтижесінде 70-жылдардың екінші жартысында келесі тілдерді қолдайтын реляциялық жүйелер пайда болды:
-
SQL
Structured Query Language — құрылымдалған сұраныстар тілі.
-
Quel
Query language — сұраныстар тілі.
-
QBE
Query-by-Example — үлгі бойынша сұраныстар.
Қазіргі кезде реляциялық мәліметтер қорлары мәліметтермен жұмыс істеуге арналған көптеген коммерциялық жүйелер үшін де-факто стандарт болып саналады.
Пайдаланылған әдебиеттер
-
Л.К. Ибраев. Мәліметтер қорларын жобалау. А.: АЭжБи, 2010.
-
Харрингтон Дж. Разработка баз данных. М: ДМК Пресс, 2005.
-
Дейт К. Дж. Введение в системы баз данных. М.: Издательский дом «Вильямс», 2008.
-
Григорев Ю. А., Ревунов Г. И. Базы данных. М.: Изд. МГТУ им. Н. Э. Баумана, 2002.