Қазақстан Республикасының Білім және ғылым министрлігі
С. Торайғыров атындағы Павлодар мемлекеттік университеті
Физика, математика және ақпараттық технологиялар факультеті
Мәліметтер қорының жүйесі пәні бойынша
5В073200 «Стандарттау, метрология және сертификация» мамандығының студенттеріне арналған
Зертханалық
жұмыстарға әдістемелік нұсқау
Павлодар
Зертханалық жұмыс №1.
1- бөлім. Мәліметтер қорына кіріспе. өрістер. Мәліметтердің жиыны.
"Кітапхана"МҚ демонстрациясы.
Барлық төменде келтірілген мысалдар "Кітапхана " МҚ"-на жатады, оның басқару жүйесі кітаптарды опт түрінде әкелушінің жұмысын автоматизациалау үшін берілген.
Информациондық ағымдарды қорыту.
Кітаптарды опт түрінде әкелуші баспасөздер(кітапты әкелетіндер) мен дүкендер (кітапты сатып алушылар) арасында аралық шеп болып келеді. Бұл шептің болуы бірншісі мен екіншісіне де ыңғайлы болып келеді:баспасөз кітапты шығарысымен тираждың барлығын не бір бөлігін опт әкелушіге, осы арқылы ол көптеген дүкендермен байланысты іздеуден құтылады; дүкендер осы арқылы опт әкелушіде өзіне тек Ресейде ғана емес, Таяу шет елдердің баспасөздермен шығарылған кітаптарды табады. 1 суретте опт әкелуші мен партнердары арасындағы байланыс бейнеленген.
Сонымен,опт әкелуші мен оның партнердары қолданатын құжаттың екі түрі бар: беру, сатып алу немесе қайтару салымдары және төлемдер туралы құжат. Салымдарда кімге, неше, қандай кітаптар сатылды(сатып алынды) беріледі. Төлемдер туралы құжатта төл емдер сомасы мен партнердің аты беріледі.
Сурет1. Опт әкелуші мен парнерларі арсындағы байланыс.
МҚ-ның жобасын жасау.
Біздің МҚ бойынша кем дегенде 5 кесте болу қажет. FIRMS кестеде барлық парнерлар туралы барлық керекті мәліметтер болады. Осы таблицада да әр бір парнердың көбінесе сальдо деп аталатын біріккен қарызы жатады. BOOKS кестесінде кез келген тасымалдап-жеткізушіте(баспасөзде) немесе ауысу арқылы бір рет болса да сатып алынған әр бір кітап туралы мәлімет болады. NAKLS кестесі салымдар туралы мәліметтері болады.кестесінде өрістердің аралық саны бола алмайды, сондықтан салыммен байланысты кітап туралы мәлімет MOVEBOOK кетесінде болады. PAYMENTS кестеде төлемдер туралы мәлімет болады.
Төменде "Кітапхана" МҚ-ның негізгі кестелері берілген.
NAKLS кестесі
өріс аты
|
қызметі
|
NaklID
|
салымның униклды идентификаторы. Осы өріс бойынша алғашқы кілтті жасау керек
|
NDate
|
салымның құрастыру датасы. Осы өріс бойынша салымдарды олардың келуі бойынша теру үшін индексті жасау керек.
|
NRetDate
|
Сатылмаған кітаптардың қайтару ауқыты. Уақыты өткен сайын кітаптар қабылданбайды немесе қайтару бағасы төмендейді. Ауысу салымдарда қолданылмайды.
|
NType
|
салымның типі: 0 — тасымалдап-жеткізушіте сатып алу; 1 — сатып алушыға сату; 2 — тасымалдап-жеткізушіке қайтару; 3 — сатып алушыдан қайтарым; 4 — ауысу арқылы кітаптар алу; 5 — обмен арқылы кітаптар аусады ; 6 — алғытөлем арқылы кітапты сатып алу; 7 — алғытөлеммен кітапты сату
|
NFirm
|
партнердің уникалды идентификаторы (FirmID өрісі FIRMS кестесінің)
|
NCoeff
|
скидка\наценканың өлшемі. FIRMS кестесінің FCoeff өрісінен көшіріледі, себебі бұл өріс уақыт өткен сайын өзгертіледі
|
NSum
|
Сумма накладной с учетом значения поля NCoeff өрістің
|
|
мәнін ескерте салымның сомасы
|
NPayedSum
|
төленген сома. Аусу салымдарда қолданылмайды
|
NRetSum
|
қайтару сомасы. Аусу салымдарда қолданылмайды
|
BOOKS кестесі
өріс аты
|
қызметі
|
BookId
|
кітаптың уникалді коды (алғашқы кілт)
|
BName
|
кітаптың аты (индекстік өріс)
|
BAuthor
|
Автор(лар)
|
BPublish
|
баспасөз
|
BYear
|
шығару жылы
|
В Pages
|
беттер саны
|
BISBN
|
Код ISBN
|
BStand
|
упаковканың стандарты(пачкада кітаптар саны)
|
BQuan
|
складта қалған кітаптар саны
|
В Price
|
кітапты сатып алу бағасы
|
BOpt
|
оптік сатып алу бағасы
|
BRozn
|
розница бағасы
|
FIRMS кестесі
өріс аты
|
қызметі
|
FirmId
|
Партнердің уникальі идентификаторы (алғашқы кілт)
|
FName
|
Партнердің аты (индексті өріс)
|
FAddress
|
Адрес
|
FCity
|
қала
|
FPhone
|
Телефон(дар)
|
FEMail
|
Электрнды почтаның аресі
|
FPerson
|
Контактті адам (адамдар)
|
FFinDelta
|
Финанстік сальдо
|
FCngDelta
|
Аустыру сальдо
|
FCoeff
|
скидки/наценки коэффициенті
|
FRetDays
|
Қайтару күндерінің саны
|
MOVEBOOK кестесі
өріс аты
|
қызметі
|
MoveId
|
Уникальді идентификатор (алғашқы кілт)
|
MNakt
|
NAKLS кестесінің NaklId өрісінен салым коды (индексті өріс)
|
MBook
|
BOOKS кестесінің BookId өрісінен кітап коды (индексное поле)
|
MQuan
|
Кітаптың экземплярының саны
|
M Price
|
скидки/наценки ескеруімен бір экземплярың бағасы
|
PAYMENTS кестесі
өріс аты
|
қызметі
|
PayID
|
Төлем құжатының уникальді идентийикаторы (алғашқы кілт)
|
PFirm
|
FIRMS кестесінің FirmId өрісінің партнер коды
|
Pout
|
Төлем бағыты: True — партнерге; False — парнерден
|
Pdate
|
Төлем датасы
|
PSum
|
Төлем сомасы
|
Кестелер мен өрістердің аттары.
Файл-сервердік МҚ-да кестенің аты файлың атымен сәйкес келеді. 32-разрядты Windows версиялары орыстіліндегізын аттарына рұқсат беретіндіктен, кестелерді КІТАПТАР, САЛМУАР, т.б. деп атау ыңғайлы болушы еді. Бұны жасауға болмайды , себебі кириллицаны SQL пайдалануға болмайды.
Өрістерің атында кесте атының бір екі әріпінен құрылған префиксті қоюға пайдалы(NAKLS кестесінде барлық аттар «N» әрпінен басталады, FIRMS кестесінде «F» әрпінен т.с.с.). Бұл сіз өрісті SQL тілінің резервті сөзімен атауынан құтқарады. Өрістер атын мүмкіншілігіңіз бойынша локаничный етуіңізге тырысыңыз – бұл бағдарламаның кодын қысқарады және оның құрастыру мерзімін.
Кестелерді құрастыру .
МҚ-ны құрастырудан бұрын оның каталогын құрастырамыз - C:\BIBLDATA. файл-серверді МҚ кестелерін жасау утилиті арқылы жасалады , әкелу комплексіне кіреді.
утилиті арқылы кестені жасауға өзгертуге, жазуларды жасау, өзгерту , оларды қарауға болады. Өкінішке орай ол кириллицаны қабаламайы, сонықтан біз орыс тіліндегі жазулармен жұмыс істей алмаймыз. Басқа оның сондай үлкен кемшілігі клиент-сервердік МҚ-да қолдана алмайтынымызда.
Пуск ► Программы ► Borland Delphi 7 ► Database Desktop командасы арақылы DBD қосыңыз. Бірінші істейтініміз, утилитаның жұмыс каталогын жөнге келтіру керек, ол үшін File > Working Directory командасын тандап, шыққан терезеде каталогына ссылканы тандаңыз(1.3 суреті).
NAKLS Кестесін жасау үшін File ► New ► Table команасын танап, DBD Create Table терезені ашады, онда кесте типін танауға болады. Кестенің типі оның көп қасиеттерін анықтайды. Paradox 7 типі файл-сервердік кестелері үшін ең жақсысы деп есептеуге болады: ОК батырмасына басып Paradox 7 нұқасына қосыламыз. Экранда кесте структурасын құрасытыру және өзгертуге арналған терезе ашылады(1.4 сур.).
Сурет 2. жұмыс каталгын орнату.
Сурет 3. кетенің структурасын құрастыру терезесі.
Бұл терезенің Field roster кестесінде құрастырылатын кестенің әр бір өрісіне бір жазу сәйкес келеді: Field Name бағанына өріс атын енгізу керек, Туре бағанаға - өрістерде саталынатын мәліметтердің типін анықтайды, Size бағанаға - өрістің ұзындығын анықтайтын символын(өрістің барлық типіне міндетті емес), Key бағанасына – жұлдысша символын, егер бұл өрістің мәні бойынша алғашы кілтті құрастыру керек болса.
Бірінші өрістің NaklId атын енгізіңіз және келесі бағанаға өту үшін табуляция пернесін басыңыз, онда өрістің типі енгізілеі. DBD утилиті бола алатын типтерін көрсету үшін пробелді басыңыз және онда Autoincrement типін танаңыз. Автоинкриментті типті өрістер бірмәнде жазуды анықтайтын уникальді саны жасау үшін қолданылады: бірінші ажзу үшін - 1 саны , екіншісі үшін – 2, т.с.с. белгілі бір жазуды алып тастағанда ол үшін белгіленген сан жанадан қолданылмайды. Key бағанасына басыңыз. Пробел пернесіне басыңыз, өріс бойынша алғашқы кілтті жасау үшін.
1.5 суретте көрсетілген дей NAKLS кестені толтыруды жалғастырыңыз. Алғашқы 4 өрісі бойынша Required Field флажокты қойыңыз. 4 басқа өріс келесі жазуды енгізген кезде анықталмауы да мүмкін, олар үшін Default value жолында мәнін енгізуге болады: NCoeff өрісі үшін мұндай мән 1 болады, қалғаны үшін 0. NDate өрісі бойынша индексті анықтау керек (кестелерінің терминологиясыеда ол екіншілік деп аталады). Бұл үщін терезенің оң жақ бұрышында Table properties тізімін ашыңыз, Secondary Indexes пункті таңдаңыз және пайда болған Define пернесіне басыңыз. Тересінде Define Secondary Index (1.6 сурет) кестенің өрістер тізімінде NDate өрісті тандаңыз содан кейін он жаққа бағдаршамен пернесіне басыңыз, ол Indexed fields тізіміне өрісті ауыстыру үшін.
4 сурет. кестенің өрістер структурасы.
5 сурет. интексті өрісті анықтау.
Index options топты флажоктар арқылы келесі индекс өзгешеліктерін анықтауға болады:
Unique - индекс уникальді мәндерін сақтайды;
Maintained —индексті өрістер мәндерінің артуы бойынша сортталады.;
Case sensitive — индекс мәтіндік өрістерде әріптер регистіріне сезімтал;
Descending — индексті өрістер кему бойынша топталады.
Біздің жағдайда бұл фажоктар қалпын өзгеріссіз қадырамыз. DBD индекс атын сұрайды(МҚ серверінің көбіндегіндей кестелерінде индекстер есімделеді ) Nakls_date – жолын енгізіңіз, ОК пернесіне басыңыз. Қайтадан пайда болған кестенің структурасын анықтау терезесінде Save as пернесіне басыңыз және содан кейін файл атын енгізіңіз - Nakls .
Жаңа ғана біз NAKLS кестенің структурасын жасадық. өрістер сипаттауын қолданнып сендер өзіңіз көрсетілімді МҚ-ның басқа қалған кестелердің сруктурасын жасай аламыз.
Қойғызу кестесі.
Кестенің қайсыбір өрісне басқа таблицаның өрісімен бітмәнді байланысты орнату керек. Бұл жағдайда BDE бірінші кестенің өрісіне жаңадан енгізілетін жазудың мәні басқа ,бұл кезде қойғызу кестесі еп аталатын, кестенің белгіленген жазудың мәні болатындай етіп бақылауы жүзеге асырады. Мысалы, біздің МҚ-да DBD арқылы MOVEBOOK кестенің MNakl өрісі мен Nakls кестенің NAKLS өрісімен байланысты орнатсақ, MOVEBOOK BDE кестені енгізген немесе редактілген кезде Nakls қойғызу кестенің NaklID өрісінің мәнінің біреуімен сәйкес келмейтін мәндерін қабылдамай қояды.
Байланысты орнату үшін Table properties тізімінде Table Lookup пункті тандау керек және Define кнопкаға басу керек(4 сур.). пайда болған (6 сур.) Fields тізбегінде мәнін баыанатын өріс тандалады, оңға деген бағдаршалы кнопкаға басып сол өрістің аты Field name жолына көшіріледі. Lookup table тізбегінде керекті кесте тандалады және солға бағаршалы кнопкаға басып, осы кестенің алғашқы кілт өрісінің аты Lookup table жолына көшіріледі.
Переключатель бекітілуі:
Just current field — тек байланысқан өрістердің сәйкес келуі тексеріледі;
All corresponding fields — екі кестенің барлық өрітердің сәйкес келуі текскріледі;
Fill no help — Тексерілетін өрісті редактілеген кезде қойғызу кестесі көрсетілмейді;
Help and fill — Тексерілетін өрісті редактілеген кезде қойғызу кестесі көрсетіледі;
Қарапайым бағдарлама мысалы
Бұл бөлімде қиын емес бағдарламаны құрудың мысалында МҚ үшін негізгі бағдарламалау приемарын көрсетеміз. Жмысшы бағдарламаның терезенің түрі 7 суретте көсетілген (проект Chap_01\Nakls\Nakls.dpr).
7 сурет.
Негізгі форманы құрастыру.
Жаңа проекті бастап, келесі қасиеттерін өзгертіңіз:
Caption = 'Накладные на книги' Name = 'fmNakls'
Одан кейін моульді арнайы fmNaklsU атындағы бумада сақтаңыз, ал проекті – NAKLS атына.
Формаға екі TPanel панельді қойыңыз, оладың Align қасиеттеріне alBottom мәндерін:оның ең астындағы навигатор батырмалары мен бағарламаны жау батырмасы үшін құрастырыады, ал оның үытінде орналасқан – DBGrid сеткасы үшін, онда кітаптар тізбегі оранласады. Қолданушы панельдің биіктігін өзгерте ала үшін, форманың бос орнына TSplitter бөлу вешкасын орналастырыңызз, оның Align қаситеіне alBottom мәнін ал Beveled қасиетіне - True мәнін және Height қасиетіне – 5. формаға тағы бір панельді орналастырыңыз, оның Align қасиетіне alClient мәнін – бұл панельде салымдар туралы мәліметермен DBGrid сеткасы орналастырылады.
Үстіңгі және ортаңғы паненльдерге TDBGrid компоненттерін орналастырыңыз және олардың Align қасиеттеріне alClient мәндерін қойыңыз.
8сурет құрастыру барысында жұмыс терезесінің түрі.
Ең астындағы панельде Caption қасиетін тазартып, оған МҚ TDBNavigator навигаторының батырмаларын орналастырыңыз және TBitBtn батырмасын. Навигаторы сол , ал батырманы – оң жағына орналастырыңыз. Anchors батырманың қасиеттер тізімін ашыңыз және навигаторды оң жақ шет бойынша түзілеңіз: False -ні akLeft қасиетіне, True -ні akRight қасиетіне. Батырманың қасиетіне мәнін қойыңыз. Барлық жасаған өзегртулеріңізді дискте сақтаңыз.
МҚ псевдонимін құрастыру.
МҚ псевдонимі - бұл жай МҚ аты. Файл-сервердік МҚ-лары үшін МҚ файлдарына жолын ашады.
Database ► Explorer командасы арқылы SQL Explorer утилитасын қосыңыз, ашылға терезенің Databases вкладкасында узелде тышқанның оң жақ батырмамен шертіп контексті мәзірден New командасын таңдаңыз. Standard Нұсқасын таңдаңыз. Ол типті псевонимер файл-сервердік МҚ-лары үшін жасалған.(9сур).
9сурет Псевдонимді анықтау.
Одан кейін STANDARD1псевдоним аты пайда болады, Definition вкладкасында ның қасиеттері берілген болады. STANDARD1 атты BIBLDATA атына өзгертіңіз. Енді Definition вклакасына өтіңіз PATH қасиетінің оң жағындағы бос өрісіне МҚ файларына жолын жазыңыз: С: \BIBLDATA. Databases вкладкасында жаңадан құрастырылған псевдонимде тышанның оң жақ батырмамен шертіңіз, Apply командасын тандаңыз. Жаңадан құрастырылған псевдонимді сақтау туралы командасын растаңыз.
Енді сіз егер Databases вклакасындағы шиырылған узелге бассаңыз, ал соданкейін – Tables шиырылған узелнің значегіне бассаңыз, сіз МҚ-ның барлық кестелерін көре аласыз.(сур10)
10сурет. SQL Explorer Тересінде кестенің мазмұнын қарау.
Мәліметтер модулі.
Программада бізге TTable 5 компоненті қажет блады және 2 TDataSource компоненті. Оларды бөлек мәліметтер модулінде орналастырамыз.
File ► New ► Others командасын тандаңыз, ол обьектілер сақтаушысын ашу үшін, ашылған терезенің New вкладкасында Data Module белгіде екі рет шертіңіз. Мәліметтер моулінің қасиетіне мәнін қойып, файлда сақтаңыз. Модульді проектімен байланыстыру үшін , панель инструментінің батырмасына басып, жаңа ғана құрастырылған dmNaklsU. файлды тандаңыз.
МҚ-мен кестелерді байланыстыру үшін Delphi компонент палитрасында BDE вкладкасында TDatabase компоненттті қолданыңыз,оған шертіңіз, одан кейін обьектілер ағашының терезесіндегі DM моульдің атында. Обьектілер инспекторы терезесіне AliasName қасиеттер тізімін ашыңыз, BIBLDATA псевдонимін тандаңыз. DatabaseName қасиетінің жолына локальі псевонимнің қайсы бір атын жазыңыз(мысалы ААА) , ол TDatabase компонентін құрастыраы.
Енді обьектілер терезесіне TTable компонетті орнатыңыз(вкладкасы)
, оны «ААА» псевдониміне апарыңыз. Обьектілер инспекторінің тересінде жаңа DatabaseName компонентің қасиетінде автоматты түрде локальді псевоним аты пайда болады, бірақ компоненттің оң жағынан қызыл белгі болады, ол TTable компоненттің жұмысқа даяр еместігінің белгісі.
TTable Компоненті МТ болып есептеледі. Ол көбінесе файл-сервердік жүйелерінде кез келген бір кестеден мәліметтерге шығу үшін қоолданылады. Компонетті жұмысқа даярлату үшін, ол кестенің атын анықтау тиіс: TableName қасиеттерінің тізбегін ашыңыз және онда NAKLS кестесін тандаңыз. Кейін бізге осы компонеытке көп рет келуіміз мүмкін, сондықтан оның Table1 атын онымен байланысан кестенің атына ауыстырыңыз: Name қасиетінің жоланы NAKLS енгізіңіз.
Компонент палитрасының Data Access вклакасында TDataSource компонентін ерешелеңіз, одан кейін обьектілер ағашында NAKLS компонетке шартіңіз, ол оны МҚ-мен байланыстыру үшін.
Енді негізгі терезенің екінші сеткасында MOVEBOOK кестенің мәліметтерін көрсету үшін екінші параны даярлаймыз: ААА псевдониміне TTable мәліметттер наборын «салыңыз» ал оған – TDataSource мәліметтер источнигін; МТ-ні MOVEBOOK кестесімен байланыстырып, оған атты беріңіз. әліметттер модулінің қалпы осы ауқыттағы 15 сур.көрсетілген.
NAKLS және Move мәліметтер наборы бір біреуге деген реляционды байланысқан: бірінші МТ-де жалғыз(салым) жазуына екіншісіндегі бірнеше жазулары (кітаптар ) сәйкес келуі мүмкін. МТ оларды білу үшін оларды даярлау керек. Мәліметтер модулінің кодының тересінде вкладкасына өтіңіз(батарманы басыңыз ол шығу үшін), тышқан арқылы NAKLS және Move компоненттерін обьектілер ағашының терезесінен Diagram вкладкасына аударыңыз. Ауысу Drag&Drop классикалық әдіс бойынша жүзеге асады: обьектілер ағашы терезесінде компонентке тышқанның сол жақ батырмамен басып тұрып Diagram вклакасына ауысады, одан кейін босатылады. Кестелерді Diagram вкладкасында бірбірнің астынан 11 суретте көрсетілгендей орналастырыңыз.
11сурет. екі МТ-мен және обьектілер ағашының терезесі.
12 сурет. тересінде кестелердің орналасуы.
Кестелер арасындғы байланысты орнату үшін панель инструментінде батырмаға басыңыз тышкан курсорны сызылған курсор қалпында етіп үстіңгі кестенің астыңғы шегіне апарыңыз(сол ауқытта белгі крестикке ауысады) , тышқанның сол жақ батырманы басыңыз, оның басатын қалпында астынға кестенің үатіңгі шебіне дейі сызықты сызыңыз. Экранда байланысконструкторының терезесі пайа болады. (сур.13)
Байланысты орнату үшін, родительская және дочерняя кестелерінде байланыстыратын өрістерді бегілеу қажет. Өрісті ауыстыру үшін Available Indexes тізімін ашу қажет , MOVEBOOK_NAKL индексті тандау қажет. Одан кейін Detail Fields өрісінде MNakl аты пайда болады – оған және Master Fields тізімінде NaklID өріске шертіңіз, одан кейін Add батырмаға басыңыз. ОК басыңыз.
14 суреті – терезесінің түрі.
15 сурет. кестелер арасындағы байланысты орнатқаннан соң.
Movebook.DB Кестеге басыңыз және Move МТ-ні ашыңыз: обьектілер инспекторында оның Active қасиетіне True мәнін қойыңыз. Солай Nakls кестесің ашыңыз.
File ► Use Unit Командасы арқылы негізгі терезесінің модулін мәліметтер мулімен байланыстырыңыз. DBGrid1 үстіңгі сеткасы үшін DataSource қасиеттер тізімін ашыңыз және онда DataSource1 пункті тандаңыз – сетка бірден Nakls МТ-ден мәліметтермен толтырылады. Солай астыңғы сеткасын DataSource2 мәліметтер негізімен байланыстырыңыз. DBNavigator1 МҚ DataSource1 навигаторымен источнигімен байланыстырыңыз.
Обьект өрістерін жасау.
Сеткаларында парнерлардың және кітаптар аттарын көрсету үшін басқа кестелерден қосымша өрістерін МТ-ға қосып, МТ-ді кеңейту керек. Ол үшін бағдарламарың прогонын аяқтап, мәліметтер модуліне оралыңыз. Мәліметтер модулі терезесін бейнелеунуі үшін F12 пернесін басыңыз, және терезенің ортасында бір орынға жиналған компоненттер бірін-бірі басып орналастырмауы үшін оларды терезенің жан жағына таратыңыз. Nakls компонентіне екі рет шертіп, өрістерін редактілейтін тересін ашыңыз, контекстік мәзірінде Add all fields командасын тандаңыз – редактор терезесі Nakls кестенің барлық өрістер тізімімен толтырылады. Бұл тізім Nakls МТ-дің әр бір өрісі үшін арнайы өзінің қасиеттерімен, әдістерімен,және оқиғаларымен обьект жасалғандақтың белгісі. Егер сіз өрістерді редактілеу терезесінде кез келген өрісіне шертсеңіз, онда обьектілер инспектрі терезесінде өрістер-обьектісінің қасиеттері мен оқиғалары шығады. Үнсіз келісім бойынша Delphi өріс-обьектісіне атын береді, ол МТ аты мен өріс атының қосындысынан тұрады, енді бағдарламада NaklsNaklID, NaklsNFirm, NaklsNDate және т.б. аттары бар компоненттір пайда болады.
Move МТ үшін өрістер-обьектісін жасаңыз.
МТ-ріне басқа кестелердің өрістерін қосу үшін осы кестлері үшін сәйкесінше МТ-ді істеуіміз қажет: обьект ағаштарының терезесінде DB компонентіне тағы 3 TTable компонетті «салыңыз» ; оның біріншісін FIRMS кестемен байланыстырыңыз, екінші BOOKS атын беріп МТ-ні BOOKS кестесімен, үшіншісін TYPENAKL атын беріп TYPENAKL кестесімен байланыстырыңыз(бүл кесте салым типті кодының разшифрофкасы бар). Тағы да Nakls компонетінде екі рет шерту арқылы өрістері редактілеу терезесін ашыңыз, контекстік мәзірі шақырып, онда New Field командасын таңдаңыз, ол жаңа өрісті жасаушысын шақытту үшін істелінеді.
16 сурет. жаңа өрісті құрастырушы терезесі.
Жаңа өрістері құрастырушы арқылы МТ-де жаңа өрістерді 3 типтіңбіреуіне жасалуы мүмкін(тип Field type тізіміндегі ауыстырылымдарда анықталады).
Data —өрістер арнайы мәліметтерді сақтайды ; Calculated —есептеленетін мәліметтерді сақтайды; Lookup — өрістер подстановка кестесінің мәліметтерін сақтайды;
Бірінші типті өріс бұл өрістің OnGetText оқиғаны қорытушыда толтырылатын бос бағананың сеткасында бейнеленеді. Есептеленетін өріс OnCalcFields МТ-ің оқиға қорытушыда толтырылады. Подстанвка өрісін толтыру шін мәлімттер басқа МТ-нің керекті өрісінен алнады.
өрісті құрастырушы терезесінің Name жолында жаңа Firm Name өрістің атын енгізіңіз, Туре тізімін ашып , өріс үшін String типті тан даңыз, оның Size өлшемін 40 тең етіп қойып, Lookup переключатель орнатыңыз, Key Fields өрістер тізімін ашып, МТ-де NFirm өрісін таңдаңыз, Dataset тізімінде Firms МТ-ні тандаңыз, Lookup Fields тізімінде – FirmID кілттік өрісті тандаңыз, Result Field тізімінде - FName өрісті тандаңыз. ОК басыңыз.
Nakls МТ-не мәтіндік типті атты өрісті құрастырыңыз, 23 символды ұзындығымен , ол үшін NType кілтік өрісті тандап, оны TypeNakl мәліметтер теруінің TypeID өріспен байланыстырыңыз және қорытынды өріс ретіне осы МТ-ның TName өрісті тандаңыз.
Move МТ үшін 3 атты ауыстыру Name, Author және Publish өрістерін құрастырыңыз, оларды МВоок өрісі арқылы Books МТ-мен байланыстырып, BName, BAuthor, BPublish қорытынды өрістер ретіне сәйкесінше алыңыз. Бұл өрістер кітаптар тізімінде құрамды өрісті форматтау үшін керек болады. өрістердің өлшемдері сәйкесінше – 75, 30 ,40 .
2 бөлім. Кестелер. Сұраныстар. Мәліметтерді визуациялау.
SQL - сұраныстарын құрастыру.
SQL -сұраныстарын жасау үшін Delphi ортасынан Database ► Explore командасын немесе негізгі мәзірден Пуск ► Программы ► Borland Delphi 7 ► SQL Explorer командасын орындаңыз. Одан кейін брандмаузер терезесінде BIBLDATA псевдонимін тауып, оның сол жақтағы байланыс батырмасына басыңыз, ол «кітапхана» МҚ-ға шығу үшін жасалады. Бұл МҚ файл-серверік болғандықтан онда тек кестелер сақталады. BIBLDATA байланысты ашып, кез-келген кестенің атыа басыңыз, одан кейін Enter SQL вклакасына өтіңіз.(17 сурет)
17 сурет. SQL –сұранысты форматтау және оны орындалуы.
Үнсіз келісім бойынша берілген сұраныстың шрифтін өзгертіңіз, оны Courier New моноширный шрифтке ауыстырыңыз (View ► Text Font командасы арқылы тандалады). Дайын оған сұранысты орныдау сұраныс панельің оң жағынағы батырмасы арқылы істеуге болады.
Байланысқан кестелер арасынан сұрыптау.
Келесі сұранысты қарастырайық:
SELECT * FROM Nakls, Firms
Егер осы сұранысты орындасақ , онда ешкімге керек емес әр бір салымы кестесінде неше өрістер бар болса, сонша рет қайталанатындай МТ аламыз. өрістері үшін реляционды байланысты ескеру үшін тандау критериін орналастыру керек:
Кестелердің мұндай байанысын кейде олардың деккартық көбейтумен атайды.
WHERE арнайы сөзінен басталатын секциясына танау критериі жасалынады. екі кестені байланыстыру үшін , NAKLS кестесінің әрбір жазуы үшін NFirm өрісінде онымен байланысқан FIRMS кестесіндегі жазудың шифрі бар екенін бегіледік. Қорытыны МТ-де сонша жазу NAKLS кестесінде нешеуі бар болса сонша болады, әрбір жазуына он жағынан FIRMS кестесінің барлық өрістер жазулары қосылады.
Келесі сұраныс 1 сабақтың бағдарламаның DBGridl сеткасында берілген NAKLS МТ-ні қайталайтын МТ-ні құрастырады(18 сурет) :
SELECT
NaklID, NDate, FName, TName, NSum, NPayedSum,
NRetSum, NCoeff, NRetDate FROM
Nakls, Firms, TypeNakl WHERE
FirmID=NFirm AND TypeID=Ntype
Ескерту: 1 сабатағы бағарламаның наборынағы ауыстыру өрістеріне қарағанда сұраныста кестелерді байланыстырғанда ауыстыру өрістердің индекстерін керек етпейді, бірақ егер ондай индекстер бар болса(бізің жағайымыздағыдай), оны пайдаланады.
18 сурет. үш кестені байланытырудың нәтижесі.
Жазуларды сұрыптау.
Жаңағы мысал нақты түрде NAKLS МТ-ні қайталанатындай болуы үшін, NaklID өрісі бойынша жазуларды теруіміз керек. ORDER BY арнайы сөзден басталатын секциясы қолданылады:
SELECT
NaklID, NDate, FName, TName, NSum, NPayedSum,
NRetSum, NCoeff, NRetDate FROM
Nakls, Firms, TypeNakl WHERE
FirmID=NFirm AND TypeID=NType ORDER BY NaklID
Кестелер арасынан байланысты орнатқандай сұрыптауды кезкелген өрістерінен құрастыруға болды.
Қиын тандау критерийлері.
WHERE секциясы арқылы кестелері байланыстырумен бірге, қиын тандау критерийлерді құрастыруымызға болаы. Бұл үшін секцияда NOT, AND, OR түрдегі логикалық операцияларымен байланысқан, оперыторлар саны белгіленеді, мұндағы тильда(~) бегісі қатынастың белгісі:
SELECT
NaklID, NDate, FName, TName, NSum, NPayedSum,
NRetSum, NCoeff, NRetDate FROM
Nakls, Firms, TypeNakl WHERE
FirmID=NFirm AND TypeID=NType AND (NSum>100000 OR NRetSum>0) ORDER BY NaklID
19 сурет. жазулардың қиын тандау критерийдің қорытындысы.
Қатынас опеациясының оң жағынан мәні белгіленеді. Егер ол – мәтінің немесе ауқыт-дата типті болса, ол апострофқа немесе екілік ковычкаға алынуы тиіс. Одан басқа LIKE операциясын қолдана аламыз, ол LIKE операциясынан оң жағындағы мән бүкіл өрісті емес, тек бір бөлігін құрастырса болады.
SELECT BName FROM Books WHERE BName LIKE "Я%" ORDER BY BName
Бұл сұраныс кестеден кітаптің тек «я» әрпінен басталатын
мәндерін алады(20 сурет).
21 сурет. LIKE операцияны қолдануың нәтижесі.
(%) Белгісі оның орнында кезектелген символдар бола алтыны көрсетеді. Келесі сұраныс атында бір рет болса да «Я» әрпі кезесетін кітаптарды тандайды:
SELECT BName FROM Books WHERE BName LIKE "%я%" ORDER BY BName
IN арнайы сөзі арқылы өрістің бола алатын мәндерін тере аламыз. Келесі сұраныс кестенің 1,3,7-ші кітантаптардың аттарын тереді(22 сутер):
SELECT BName FROM Books WHERE BookID IN (. 1, 3, 7)
22 сурет. IN операциясын қолданудың нәтижесі.
23 сурет. SELECT операторымен салынған тізімнің құрастырудың нәтижесі.
IN Операциясынан кейінгі жай жақшада бола алатын міндерін жазудың орнына, SELECT операторын орналастыра аламыз. Егер оларға әкелінген кітаптарды төленбеген барлық сатып алушыларың тізімін көру керек болса, келесі сұранысты құрастыра аламыз(23 сурет).
SELECT FName FROM Firms WHERE FirmID IN
(SELECT NFirm FROM Nakls WHERE NPayedSum=O AND NType IN (1, 7)) ORDER BY Fname
Кестелердің псевдонимері және коментарийлер.
Біздің кестелерде өрістердің сәйкес келетін аттары жоқ, бұл кестенің кез келген өрістің аты кесте аттарының бас әріптерінен басталатындықтан. Ал екі не одан да көп кестелердің өрістер аттары сәйкес келгенде нені істеуіміз керек? Егер біз біздің ережені қолданбасақ, яғни префикстарды қоймасақ, онда екі аты пайда болушы едіжәне келесі фрагмент біркелкілікеместікке әәкелуші еді:
SELECT
NaklID, Date, Name, Name, Sum, PayedSum,...
Біркелкілікеместікті жою үшін өрістер аттары, олардың кестелер аттарымен толтырылады.
SELECT
NaklID, Date, Firms. Name, TypeNakl. Name, Sum, PayedSum,...
Қайталанатын кестелер аттары сұраныстың басқа да секцияларыда кездесетіндіктен оларды атауды қысқарту үшін SQL –де кестелерің аттарының орнына оның псевдонимін қолдануға:
SELECT
NaklID, Date, F. Name, T. Name, Sum, PayedSum,... FROM Nakls, Firms F, TypeNakl T..
Псевдоним секциясында кестенің атынан кейін белгіленеді. Сұраныстың кез-келген комментарий болуы мүмкін:
SELECT
/* өрістерінің қайталанатын аттары кестенің псевдонимдерімен толтырылады*/
NaklID, Date, F. Name, T. Name, Sum, PayedSum,... /* псевдонимдер кестенің атынан кейін символдарымен беріледі*/ FROM Nakls, Firms F, TypeNakl T...
Агрегатты функциялар және жазуларды топтау.
Өрістердің аттарының орнына және/немесе олармен бірге SELECT секциясында келесі агрегатты функцияларының бірін қолдануға болады:
AVG —аргументтің ортаңғы мәнін қайтарады;
COUNT —МТ барлық жазуларына аргументтердің кіру санын есептейді;
MAX —аргументтің максимальді мәнін қайтарады;
MIN —аргументтің минимаьді мәнін қайтарады;
SUM —аргуметтің мәнерін қосады.
Агригатты функцияға келгенде аргуметтің орнына МТ өрістерінен құрастырылған керекті мән болуы ммкін. Мысалы, келесі сұраныс сатып алушылардың қарыздарының орташа мәнін шығарады(24сурет):
SELECT AVG(NSum-NPayedSum-NRetSum)
FROM Nakls
WHERE NType in (1, 7)
24сурет. Сатып алушылар қарыздарының орнташа .
Әкелінген барлық кітаптардың бағасымен барлық әкелушілердің тізімін келесі сұраныс береді ( 25 сурет):
SELECT SUM(NSum), FName FROM Nakls, Firms
WHERE FirmID=NFirm AND NType in (0, 6) • GROUP BY FName
Рис. 25. әкелушілер тізімі.
Толықтай түрдегі агрегатты функцияларымен бірге кестелердің өрістері де бар сұраныстар үшін топты секциялар қажет етеді, онда міндетті түрде барлық секциясында берілген өрістер жазылады.
Агрегатты функцияларды қолданғанда тізімнен қайталанатын өрістер аттарын алып тасталынуы тиіс. Бұл үшін DISTINCT арнайы сөзі қолданылады. Мысалы , төмендегі сұраныс кітаптарды әкелумен байланысқан салымар тізімін қайтарады(26 сурет):
SELECT COUNT(NFirm) FROM Nakls WHERE NType IN (0, 6)
Рис. 26. әкелу туралы салымдардың саны.
Келесі сұраныс әкелушілер санын қайтарады (27сурет):
SELECT COUNT(DISTINCT NFirm) FROM Nakls WHERE NType IN (0, 6)
27сурет. әкелушілер саны