SQL език

4.7 Практически въпроси за програмиране.

Почти всички начини за организиране на потребителско взаимодействие с база данни, разгледани по-долу, се основават на модела "клиент-сървър". Тези. приема се, че всяко приложение за обработка на данни е разделено на поне две части:

  • клиентът, който отговаря за организирането на потребителския интерфейс
  • сървърът, който всъщност съхранява данните, обработва заявките и изпраща техните резултати на клиента за показване
Това предполага, че всяка част от приложението работи на отделен компютър, т.е. персоналните компютри на потребители (клиенти) са свързани към специален сървър на база данни с помощта на локална мрежа. Това е най-популярната схема за организиране на изчислителна среда днес. По-подробно обсъждане на архитектурата клиент-сървър и различните начини за нейното прилагане ще бъдат разгледани в Глава 7.

Езикът SQL позволява манипулиране само на данни, но липсват инструментите за създаване на екранен интерфейс, който е необходим за персонализирани приложения. За създаването на този интерфейс се използват универсални езици от трето поколение (C, C ++, Pascal) или четвърто поколение, ориентирани към проблеми езици (xBase, Informix 4Gl, Progress, Jam.). Тези езици съдържат необходимите изрази за въвеждане/извеждане на екрана, както и изявления за структурирано програмиране (цикъл, разклоняване и т.н.). Също така тези езици позволяват дефинирането на структури, съответстващи на записите на таблиците на базата данни, която се обработва. Изходният код на програмата включва SQL изрази, които се предават на сървъра на базата данни по време на изпълнение, който всъщност манипулира данните. Връзките, получени от сървъра, изпълняващ SQL заявки, се връщат в приложението, което попълва предварително дефинираните структури с редове на тези връзки. По-нататъшната работа на клиентската програма (показване, корекция на записите) се извършва с тези структури.

Нека разгледаме различни начини за организиране на достъп на приложна програма до сървъра на базата данни.

Всяка СУБД, в допълнение към интерактивна помощна програма за SQL, трябва да има библиотека за достъп и набор от драйвери за различни операционни системи. Схемата на взаимодействие на клиентското приложение със сървъра на базата данни в този случай изглежда така:

базата данни

Библиотеката за достъп по правило е обектен файл, чийто изходен код е създаден на общ език като ° С. Тази библиотека съдържа набор от функции, които позволяват на персонализирано приложение да се свързва с база данни, да изпраща заявки до сървъра и да получава данни за отговор. Типичен набор от функции за такава библиотека (имената на функциите зависят от използваната библиотека):

  • DB_connect (char * dbname, char * потребителско име, char * парола) - установява връзка с базата данни, връща указател към структурата db, описвайки характеристиките на това съединение
  • DB_exec (db, char * заявка) - изпълнете заявка към базата данни, дефинирана от структурата db. Прилага се за всяка друга заявка, различна от SELECT. Връща кода за изпълнение на заявката (0 - успешно или код за грешка)
  • DB_select (db, char * заявка) - изпълнете заявка за извличане на данни (SELECT). Връща структурата резултат, съдържащ резултатите от заявката (релационна връзка).
  • DB_fetch (резултат) - извличане на следващия запис от структурата резултат.
  • DB_close (db) - затворете връзката с базата данни.
Разбира се, това е минималният набор от функции за работа с база данни. Обикновено библиотеката съдържа и функции, които ви позволяват да определите характеристиките на структурата. резултат (брой, ред и имена на колони, брой редове, номер на текущия ред), движете се по тази структура не само напред, но и назад (DB_next, DB_prev) и т.н. Пример за програма, която използва библиотека с връзки към база данни: Тази програма, която осигурява взаимодействие на потребителя със СУБД, се компилира заедно с библиотеката за достъп. Библиотечните повиквания се преобразуват от драйвера на базата данни в мрежови разговори и се предават от мрежовия софтуер на сървъра.