81160 ullman205 (2)

81160 ullman205 (2)



I. SrSUŁMUWB ASI-MU Y iIjiCYKA ?>0L

szego programu zapisanego w konwencjonalnym języku programowania, na przykład w C. W bieżącym rozdziale opiszemy, w jaki sposób można łączyć kod SQL ze zwykłymi programami.

Na rysunku 7.1 przedstawiono schemat typowego systemu programowania, który zawiera elementy SQL. Programista przygotowuje program w standardowej formie, ale z wstawionymi instrukcjami $QL, które nie należą do języka podstawowego. Gotowy program jest analizowany przez preprocesor, który powoduje zamianę kodu SQL na kod zapisany w języku podstawowym. Interpretacja SQL w najprostszym przypadku sprowadza się do wywołania funkcji, której argumentem jest tekst instrukcji SQI. i która uruchamia tę instrukcję. Na schemacie pokazano, że zamiast osadzać kod SQL w programie programista może w swoim programie bezpośrednio wywołać funkcję, która uruchamia SQL.

Język podstawowy +

Osadzony SQL

i

Preprocesor


Język podstawowy +

Wywołania funkcji

i

Biblioteka SQL


Kompilator języka

podstawowego *

Program

języka

podstawowego

RYSUNEK 7.1

Przetwarzanie programów z osadzonymi instrukcjami SQL

Po fazie preprocesowania program jest kompilowany w zwykły sposób. Dostawcy systemów baz danych na ogół dołączają do systemu biblioteki z definicjami niezbędnych funkcji. Potem funkcje, które implementują $QL, można wywoływać w programach zapisanych w innych językach; stanowią z nimi spójną całość.

7.1.1. Problem niedopasowania falowego

Podstawowy problem przy łączeniu instrukcji SQL z konwencjonalnym językiem programowania można porównać z brakiem dopasowania falowego w fizyce, a wynika on z dużych różnic między modelami danych języka SQL i innych języków programowania. Jak wiemy SQL ma zaimplementowany relacyjny model danych. Natomiast C i inne języki konwencjonalne operują modelem typów strukturalnych z podstawowymi typami danych: całkowitym, rzeczywistym, znakowym itp. oraz strukturami typu macierz. Ani w'języku C, ani w innych językach imperatywnych zbiory nie mają bezpośredniej reprezentacji, natomiast w języku $QL nie można w bezpośredni sposób korzystać ze wskaźników, macierzy ani innych typów strukturalnych, które powszechnie stosuje się w językach konwencjonalnych. W wyniku tego nie istnieje bezpośrednie przełożenie między' strukturami SQL i innych języków, a więc trzeba tworzyć dodatkowe mechanizmy umożliwiające przepływ danych między fragmentami programu zapisanymi w jeżyku SQL i w języku podstawowym.

Języki, z którymi standardowo łączy się SQL2

Standard SQL2 narzuca wymaganie, aby jego implementacje umożliwiały połączenie z następującymi językami programowania: ADA, C, Cobol, Fortran, M (poprzednio nazywany Mumps), Pascal oraz PL/1. Każdy student informatyki powinien znać te języki, być może z pominięciem M czy Mumpsa, którego stosowanie było ograniczone do środowisk medycznych. W naszych przykładach bodziemy korzystać z języka C.


Na pozór mogłoby się wydawać, ze najlepiej używać jednego języka: albo wszystkie obliczenia zapisywać tylko w języku SQL, albo zaniechać jego stosowania i całość zapisać w innym języku programowania. Jednakże, gdy ma się do czynienia z działaniami na bazach danych, wówczas bardzo szybko odrzuca się pomysł zaniechania $QL. System SQL służy bowiem w ielką pomocą, jeśli działania na bazie trzeba wykonywać w sposób efektywny, a przy tym nic trzeba rezygnować z programowania wysokopoziomowego. Programista zostaje odciążony od konieczności ręcznego organizowania danych w pamięci oraz od wymyślania optymalnych algorytmów przeszukiwania bazy danych.

Jednakże $QL nie zapewnia obsługi wielu innych ważnych zadań. Na przykład w języku $QL nie da się zażądać obliczenia silni liczby n (/z! = n x x (/z—1) x...x 2 x 1), co jest jednym z najprostszych zadań programowania w języku C czy innym podobnym języku. Z poziomu SQL nie uda się także wyrazić zgrabnego formatu dla wyników, na przykład w postaci wykresu. A zatem w praktyce przy programowaniu baz danych trzeba korzystać jednocześnie zarówno z języka $QL, jak i konwencjonalnego języka, który będziemy nazywać językiem podstawowym.


Wyszukiwarka

Podobne podstrony:
page0174 - 173 — był uczyć dzieci po domach; a lubo mu to przynosiło jakikolwiek dochód, jednakże wł
22526 ullman144 (2) 5. )£.Ć1K BAZ. ŁJAMYL-M SOL Ćwiczenie 5.1.3. Należy zapisać w SQL podane poniżej
IMAG0010 Pamiętnik drugi zadusił, więc mu się wargi wywróciły i zęby w wargach wprawione miał. A wte
212 213 212t l 4 I K U (MU » »t Rys. 5.102. 10-bitowy konwerter liczb dwójkowych na BCD wykorzystują
P1000501 względem dramaturgu mu/ycwej. }ak j * r,ci Akcent pada przede »wvs.kim na sccnlc^*^.
009 7 .....w.mu uzupcmn u
DIGDRUK00167217 2R 27 szą sypano mu mogiłę; gdy la urosła już duża, wówczas zapalano na niej łuczyw
mu) może sprawiać trudności mało doświadczonym osobom. Należy mieć na uwadze, że w tym okresie odczy
lastscan05 Gto = G1 mU. powłoki kN G1o = 52.8 — m2.2 Obciążenie parciem wody na ściany i dno zbiorni
546 (2) tif Żadna, ale mu tego nie powiem. -    Mówiłem ci kiedyś, że zasługuję na śm
0000003 (15) U-, = mU U-X ■ ZoZo + Z/u (2.3) Napięcie uchybowe UA jest to napięcie występujące na za

więcej podobnych podstron