Podsumowanie
Wykształcone w latach 70-tych koncepcje dotyczące języków zapytań z definicji zakładały brak algorytmicznej uniwersalności.Ponieważ taka uniwersalność jest niezbędna do tworzenia aplikacji opartych na bazie danych, przyjęto, że języki zapytań będą "pod-językami" w środowisku wytwórczym oprogramowania.
Co za tym idzie, to środowisko powinno być oparte na popularnym języku programowania. To oznacza konieczność połączenia języka zapytań z językiem programowania, w taki sposób, aby:
- zapytania mogły być używane wewnątrz programów;
- zapytania mogły być parametryzowane (dynamicznie, w praktycznie dowolny sposób) przez wartości zmiennych języka programowania;
- wyniki zapytań mogły być przetwarzane przez programy.
Różnice w koncepcji języków spowodowały znaczne trudności techniczne w realizacji tego rodzaju połączenia - niezgodność impedancji.
Są to nieodłączne cechy języka zapytań. Użytkownik języka musi być w pełni świadomy celów formułowania zapytania, związków zapytania zarówno z jego celem (biznesowym), jak i strukturą danych. Musi być świadomy technicznych i biznesowych własności struktur danych oraz technicznych i biznesowych własności zwracanego przez zapytanie wyniku.
Warunkiem koniecznym umożliwiającym formułowanie zapytań jest informacja co zawiera baza danych i jak jest zorganizowana.
- Ta informacja musi mieć algorytmiczną precyzję.
- Determinizm programów komputerowych (w tym zapytań) oznacza, że użytkownik lub programista posiada wiedzę o logicznej organizacji danych.
- Terminem "logiczna" określa się organizację danych wyrażoną w terminach precyzyjnego "zewnętrznego" modelu danych, abstrahującą od fizycznej reprezentacji danych.
Im więcej informacji semantycznej znajduje się w strukturach danych, tym mniej złożone i krótsze są zapytania.
- Jeżeli model danych nie daje możliwości zapisu pewnych informacji semantycznych, wówczas schemat danych niezbędny do rozumienia biznesowej roli danych jest prosty formalnie, ale złożony koncepcyjnie.
- Jest mniej czytelny dla programisty, co wydłuża czas formułowania zapytań.
- Programista formułujący zapytanie musi te zależności uwzględnić w zapytaniu, przez co jest ono bardziej złożone.
Zbyt prosty model danych powoduje dalsze straty:
- zwiększony rozmiar programów aplikacyjnych,
- zwiększony koszt ich tworzenia i pielęgnacji,
- zwiększony koszt/czas ewaluacji bardziej złożonych zapytań.
- Optymalizacji zapytań w relacyjnych SZBD zajmuje się częściowo reperowaniem tego, co zostało zepsute poprzez zgubienie informacji semantycznej.
Zbyt złożony model danych jest też niekorzystny - trudniej dopasować sytuacje w dziedzinie biznesowej do decyzji w zakresie struktur danych. |