53
сұраныс үстінде олар деректер қорының бірдей көрініс көреді. Осы суретпен
әрекет IMMUTABLE функциясындағы SELECT командасына да тарайды.
Әдетте IMMUTABLE функцияларында мәліметтерді кестелерден алу негізсіз,
өйткені кесте мазмұны өзгерсе [laquo ]тұрақты[raquo ] функциясы бұзылады.
Алайда PostgreSQL осы әрекеттен бас тартуға мәжбүрлемейді. Кең таралған
қателік
функцияны IMMUTABLE деп белгілеу, бірақ оның нәтижилері
конфигурация параметрлерінен тәуелді. Мысалы, уақытпен жұмыс жасайтын
функция TimeZone параметрінен тәуелді нәтиже шығаруы мүмкін. Сенімдік
үшін осындай функцияларды STABLE деп белгілеген жөн.
PostgreSQL STABLE және IMMUTABLE фунциялары мәліметтер
өзгеруін аладын алу үшін SELECT басқа командалар болмауын талап етеді.
6.6 Ішкі функциялар
Ішкі функциялар
С тілінде жазылған, және PostgreSQL серверінде
орындайтын кодқа статикалық жиналған функция. Функцияны анықтау үшін
«денеде» С деңгейінде функция аты беріледі, ол кейіннен міндетті түрде SQL
қолдануда арналған деп шақырылған атаумен сәйкес келмеу керек. Кері
сәйкес үшін, функция денесі бос болуы мүмкін, яғни С деңгейіндегі функция
атауы SQL
дегі атауымен сәйкес келмейтінін білдіреді.
Әдетте серверде көрсетілген барлық ішкі функциялар деректер қорының
кластерінің инициализациясы кезінде хабарланады, бірақ пайдаланушы
CREATE FUNCTION командасын пайдаланып және ішкі функцияға қосымша
жалған аттар (псевдоним) қосу мүмкіндігі бар. Ішкі функциялар internal тілінің
атауымен CREATE FUNCTION командасында жарияланады. Мысалы, sqrt
функциясы үшін жалған атау жасауға болады:
CREATE FUNCTION square_root(double precision)
RETURNS double precision
AS 'dsqrt'
LANGUAGE internal
STRICT;
Көптеген ішкі функциялар «strict» деп жариялануы қажет. Барлық
«алдын
ала анықталған» фунциялар жоғарыдағы мысалда көрсетілегендей
«ішкі» болып табылмайды. Кейбір «алдын
ала анықталған» фунциялар SQL
тілінде жазылған.
54
Сурет 6.6
PostgreSQL ішкі функциялар көрінісі
55
7 Веб
құрылымның серверлік бөлігін жобалау
Жобаны іске асыру үшін келесі тапсырмаларды орындау:
- онлайн-сервис жұмысын тапсырыс беруші талаптары
бойынша
сәйкестеу;
- онлайн-сервис жұмысының деректер қорын жобалау;
- онлайн-сервис функционалын әзірлеу;
Веб-құрылым мамандар мен тапсырыс берушілерді біріктіретін бірегей
платформа:
- Тапсырыс берушілерге уақытты үнемдеп керекті маман профиль
бетіне кіріп, сұраныс қалдыра алады немесе «Шақыру» батырмасы арқылы
хабарласа алады.
- Мамандарға өздерінің портфолиосын жасап, пайдаланушылардан
тапсырыс ала алады.
Деректер қорымен жұмыс pgAdmin III бағдарламасы арқылы жүзеге
асады.
7.1
сурет
pqAdmin III бағдарламасы
56
Жобалау кезінде деректер қорында 64 кесте құрылды.
Сурет 7.2
Кестелер көрінісі
57
Сурет 7.3
Кестелер көрінсі (жалғасы)
Сурет 7.4
Көріністер
59
Сурет 7.6
Функциялар көрінісі
Сурет 7.7
Функциялар көрінісі (жалғасы)
60
Сурет 7.8
Функциялар көрінісі
Сурет 7.9
Орнатылған кеңейтілулер
PL/pgSQL PostgreSQL деректер қорын басқару жүйесіне арналған
процедуралық тіл. PL/pgSQL жобалауының мақсаты болып келесі амалдарды
орындайтын жүктелетін процедуралық тіл болды:
функциялар мен триггерлерді жасауға қолданылады;
SQL тіліне басқару құрылымын қосады;
күрделі есептеулерді орындай алады;
барлық пайдаланушылық типтер, функциялар мен операторларды
мұрагерлік етеді;
сенімді тіл ретінде
анықталады;
қолданыста қарапайым.
PL/pgSQL фунциялары ендірілген функциялар рұқсат етілген жерлердің
бәрінде қолданыла алады. Мысалы, күрделі есептеулері мен шартты логикасы
бар функция құруға болады, одан кейін оларды операторлар немесе индекс
өрнегін анықтауда қолдануға болады.
9.0 және одан жоғары нұсқалы PostgreSQL жүйесінде PL/pgSQL әдепкі
бойынша орнатылады. Дегенменде, бұл бұрынғыдай жүктелетін модуль.
Сурет 7.10
Кеңейтілудің іске асуы