Aktualności i artykuły

Opublikowano: 12 września 2014
Kategoria wpisu: poradniki

Pliki logiczne i selekcja

Plik logiczny to plik bazy danych powiązany lub inaczej mówiąc, wskazujący na jeden lub kilka plików fizycznych zawierających dane bazy. Plik logiczny za pomocą swojego opisu określa jak dane mają być udostępniane i może być użyty do dostępu do bazy danych zamiast korzystania bezpośrednio z pliku fizycznego.
LF plik logiczny

Dodanie warunków selekcji (select/omit) pozwala na zawężenie zbioru rekordów zwracanego, a raczej „widocznego” za pomocą pliku logicznego. Jednakże sposób działania warunków wyboru jest inny niż zwykło się sądzić na pierwszy rzut oka i może przysporzyć problemów jeśli nie jest się świadomym jak naprawdę funkcjonuje.

Otóż składnia i format może sugerować, że warunki selekcji działają na podobnej zasadzie jak klauzula WHERE w SQL’u, gdzie dany rekord zostanie wybrany lub pominięty jeśli będzie spełniał wszystkie podane reguły. W przypadku reguł zdefiniowanych w pliku logicznym są one niejako stosowane jedna po drugiej, co oznacza, że jeśli dany rekord został wybrany lub pominięty przez pierwszy z warunków selekcji, nie będzie już uwzględniany w kolejnych warunkach. Może to prowadzić do sytuacji, w której zmiana kolejności reguł będzie skutkowała różnymi wynikami wyboru (zbiorami wybranych rekordów).

Najłatwiej jednak posłużyć się przykładami.

Przykład

     A    S PENSJA      CMP(GT 4000)        
     A      WIEK        CMP(GT 45)
     A    O MIASTO      VALUES(‘WARSZAWA’ ‘PUŁTUSK’)
     A    S WOJEW       CMP(EQ ‘MAZOWIECKIE’)
     A    O             ALL

Powyższa definicja DDS dla pliku logicznego będzie przetwarzana następująco:

– wybrane zostaną wszystkie rekordy z pliku fizycznego na który wskazuje prezentowany plik logiczny, które w polu PENSJA mają wartość większą niż 4000 i w polu wiek wartość większą niż 45;

– z pozostałych rekordów (nie wybranych w pierwszym kroku), pominięte zostaną te które w polu MIASTO mają wartość WARSZAWA lub PUŁTUSK;

– spośród rekordów nie objętych poprzednimi dwoma warunkami, wybrane zostaną te z wartością MAZOWIECKIE w polu WOJEW;

– pozostałe rekordy, nie wybrane poprzednio zostaną pominięte;

Dla przykładowych zapisów w pliku fizycznym bazy danych:

PENSJAWIEKMIASTOWOJEWÓDZTWO
5.00050WARSZAWAMAZOWIECKIE
6.00060PUŁTUSKMAZOWIECKIE
7.00070KATOWICEŚLĄSKIE
4.00040WARSZAWAMAZOWIECKIE
3.00030MIKOŁÓWŚLĄSKIE
2.00020PIASECZNOMAZOWIECKIE

Otrzymamy następujący rezultat (widok otrzymany przy użyciu pliku logicznego):

PENSJAWIEKMIASTOWOJEWÓDZTWO
5.00050WARSZAWAMAZOWIECKIE
6.00060PUŁTUSKMAZOWIECKIE
7.00070KATOWICEŚLĄSKIE
2.00020PIASECZNOMAZOWIECKIE

(jak widać mimo nie spełnienia warunku dotyczącego wysokości pensji i wieku, na podstawie kolejnych reguł rekord może być wybrany)

Reguły

A oto zestawienie reguł – operatorów które możemy użyć w definicji pliku logicznego bazy danych DB2 na serwerze AS/400:

znaczeniesymbol
równyCMP(EQ 5)
większy lub równyCMP(GE 5)
większyCMP(GT 5)
mniejszy lub równyCMP(LE 5)
mniejszyCMP(LT 5)
nie równyCMP(NE 5)
nie większyCMP(NG 5)
nie mniejszyCMP(NL 5)
wartośćVALUES('ALA' 'AS' 'KOT')
zakresRANGE(5 10)

 

 

^