Teoretyczne podstawy informatyki

Podobne dokumenty
TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Teoretyczne podstawy informatyki

RBD Relacyjne Bazy Danych

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Technologie baz danych

Teoretyczne podstawy informatyki

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Wykład XII. optymalizacja w relacyjnych bazach danych

Plan wykładu: Operacje relacji: suma, przekrój, różnica, złączenia proste, iloczyn kartezjański, złączenia teta.

1 Wstęp do modelu relacyjnego

Systemy GIS Tworzenie zapytań w bazach danych

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Bazy danych Algebra relacji Wykład dla studentów matematyki

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Przestrzenne bazy danych Podstawy języka SQL

Autor: Joanna Karwowska

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

Model relacyjny. Wykład II

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

PLAN WYKŁADU BAZY DANYCH ETAPY PRZETWARZANIA ZAPYTANIA OPTYMALIZACJA ZAPYTAŃ

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Model relacyjny. Wykład II

RBD Relacyjne Bazy Danych Więzy realcji

Teoretyczne podstawy informatyki

Wyrażenia regularne.

Wprowadzenie do baz danych

Fazy przetwarzania zapytania zapytanie SQL. Optymalizacja zapytań. Klasyfikacja technik optymalizacji zapytań. Proces optymalizacji zapytań.

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Oracle11g: Wprowadzenie do SQL

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Podstawy Automatyki. Wykład 13 - Układy bramkowe. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wprowadzenie do języka SQL

P o d s t a w y j ę z y k a S Q L

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

SZKOLENIE: Administrator baz danych. Cel szkolenia

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Język SQL. Rozdział 2. Proste zapytania

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Spis treści. Przedmowa

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

Bazy danych wykład trzeci. Konrad Zdanowski

Teoretyczne podstawy informatyki

Tadeusz Pankowski Relacyjne bazy danych. są podstawą zachodniej cywilizacji

Bazy danych Wykład zerowy. P. F. Góra

Zapytania, złączenia, optymalizacja zapytań, planowanie zapytań, optymalizacja indeksów.

PLAN WYKŁADU BAZY DANYCH ZALEŻNOŚCI FUNKCYJNE

forma studiów: studia stacjonarne Liczba godzin/tydzień: 1, 0, 2, 0, 0

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Relacyjny model danych

Projektowanie relacyjnych baz danych

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Technologie baz danych

Wprowadzenie do baz danych

SQL Structured Query Language

Technologie baz danych

Autor: Joanna Karwowska

Dr Michał Tanaś(

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Bazy danych. Dr inż. Paweł Kasprowski

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Hurtownie danych. Przetwarzanie zapytań. ZAPYTANIA NA ZAPLECZU

Jak wiernie odzwierciedlić świat i zachować występujące w nim zależności? Jak implementacja fizyczna zmienia model logiczny?

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Alicja Marszałek Różne rodzaje baz danych

Technologie Informacyjne

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

SQL - Structured Query Language. strukturalny język zapytań

1. Zakłada się, że każda operacja (read, write) w harmonogramie obejmuje również blokowanie i odblokowanie jednostki. Czy następujący harmonogram

Bazy danych. Informacje podstawowe

Optymalizacja poleceń SQL

Optymalizacja poleceń SQL Metody dostępu do danych

3. Podzapytania, łączenie tabel i zapytań

Definicje. Algorytm to:

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W NOWYM SĄCZU SYLABUS PRZEDMIOTU. Obowiązuje od roku akademickiego: 2011/2012

Funkcjonalność systemów zarządzania bazami danych przestrzennych w kartografii internetowej (PosrtgreSQL/PostGIS) Krzysztof Kuśnierek

Autor: Joanna Karwowska

Administracja i programowanie pod Microsoft SQL Server 2000

Transkrypt:

Teoretyczne podstawy informatyki Wykład 8b: Algebra relacyjna http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2009/tpi-2009 Prof. dr hab. Elżbieta Richter-Wąs 1

Algebra relacyjna Algebra relacyjna (ang. relational algebra) to specjalny język opracowany w celu ułatwienia i sformalizowania zapytań realizowanych w bazach danych. Umożliwia przekształcanie wyrażeń realizujących zapytania za pomocą odpowiednich praw algebraicznych. Prof. dr hab. Elżbieta Richter-Wąs 2

Operandy algebry relacyjnej W algebrze relacyjnej operandami są relacje. Operandy mogą być albo stałymi (konkretnymi relacjami) albo zmiennymi reprezentującymi nieznane relacje. Każdy operand jest zgodny ze specyficznym schematem jest listą atrybutów będących nazwami kolumn relacji. Przykład: Schematem relacji jest {A, B, C}, zaś należące do niej krotki to (0,1,2), (0,3,4) oraz (5,2,3). A B C 0 1 2 0 3 4 5 2 3 Prof. dr hab. Elżbieta Richter-Wąs 3

Operatory dla zbiorów w algebrze relacyjnej Suma, przecięcie oraz różnica zbiorów Dodatkowe założenie w stosunku do tego co już znamy z operacji na zbiorach to to, że schematy operandów muszą być takie same. relacja R relacja S R S A B 0 1 2 3 A B 0 1 4 5 Relacje są zbiorami nie mogą wiec zawierać dwóch lub więcej kopii tej samej krotki. A B 0 1 2 3 4 5 R A A S R \ S B 0 1 B 2 3 Prof. dr hab. Elżbieta Richter-Wąs 4

Operator selekcji (ang. selection operator) Operuje na pojedynczej relacji będącej jego operandem, ale zawiera także dodatkowe wyrażenia warunkowe stanowiące jego parametry. Operator selekcji zapisujemy w postaci: C(R) R relacja C warunek Warunek C może zawierać stałe, jak i operandy będące atrybutami ze schematu relacji R. Operatorami wykorzystywanymi w warunku C są typowe wyrażenia warunkowe z języka programowania C, czyli wyrażenia złożone z porównań arytmetycznych oraz logicznych łączników. Wynikiem operacji jest relacja której schemat jest identyczny ze schematem relacji R. W relacji tej umieszczamy wszystkie krotki t z relacji R, dla których warunek C jest prawdziwy po podstawieniu za każdy atrybut A właściwej dla niej składowej krotki t. Prof. dr hab. Elżbieta Richter-Wąs 5

Przykład: Relacja ZSO Zajęcia-StudentID-Ocena Zajęcia Student ID Ocena CS101 12345 5.0 CS101 67890 4.0 EE200 12345 3.0 EE200 22222 4.5 CS101 33333 2.0 PH100 67890 3.5 Operator selekcji Zajęcia= CS101 (ZSO) Zajęcia Student ID Ocena CS101 12345 5.0 CS101 67890 4.0 CS101 33333 2.0 Prof. dr hab. Elżbieta Richter-Wąs 6

Operator rzutowania (ang. projection operator) Operuje na pojedynczej relacji będącej jego operandem, ale zawiera także dodatkowe wyrażenia warunkowe stanowiące jego dodatkowe parametry. Operator rzutowania zapisujemy w postaci: B1, B2,...,Bn (R) R relacja B 1,B 2..,B n - atrybuty Jeśli R jest relacją ze zbiorem atrybutów {A 1, A 2,, A k } oraz (B 1, B 2,, B n ) jest listą pewnych atrybutów A, to B1, (R), czyli B2,, Bn rzutowanie relacji R na atrybuty B 1, B 2,, B n jest zbiorem krotek utworzonych przez wybranie z każdej krotki t tylko atrybutów B 1, B 2,, B n. Jedna lub więcej krotek może posiadać te same wartości atrybutów B 1, B 2,, B n. Jako wynik operacji rzutowania pojawia się tylko jedna taka krotka. Prof. dr hab. Elżbieta Richter-Wąs 7

Przykład: Relacja ZSO Zajęcia-StudentID-Ocena zajęcia student ID ocena CS101 12345 5.0 CS101 67890 4.0 EE200 12345 3.0 EE200 22222 4.5 CS101 33333 2.0 PH100 67890 3.5 Operator rzutowania StudentID ( Zajecia = CS101 (ZSO)) Student ID 12345 67890 33333 Prof. dr hab. Elżbieta Richter-Wąs 8

Operator łączenia (ang. join operator) Umożliwia nam przechodzenie z jednej relacji do drugiej. Operator łączenia zapisujemy w postaci Przypuśćmy, że mamy dwie relacje R i S, których zbiory atrybutów (schematy) mają odpowiednio postać {A 1, A 2,, A n } oraz {B 1, B 2,, B m } Z obu zbiorów wybieramy po jednym atrybucie powiedzmy A i i B j i te atrybuty są parametrami naszej operacji złączenia, której argumentami są relacje R i S. Złączenie relacji R i S zapisujemy: R A i = B j i jest utworzone w wyniku porównania każdej krotki r z relacji R z każdą krotką s z relacji S. Jeśli składowa r odpowiadająca atrybutowi Ai jest równa składowej s odpowiadającej atrybutowi Bj to tworzymy jedną krotke. Schemat złączonej relacji jest {A 1, A 2,, A n, B 1, B 2,, B j-1, B j+1,, B m } A wiec atrybut Bj się nie pojawia. Jeżeli atrybuty Ai i Bj mają tą same nazwę to mówimy o złączeniu naturalnym. S Prof. dr hab. Elżbieta Richter-Wąs 9

Przykład Zajęcia CS101 EE200 PH100 ZDG Zajęcia Dzień Godzina CS101 Pn 9.15 CS101 S 9.15 EE200 Pt 8.30 EE200 W 13.00 CS101 Pt 9.15 ZK Klasa Aula Hala Laborat Operacja łączenia ZK ZDG Zajęcia=Zajęcia Zajęcia Klasa Dzień Godzina CS101 Aula Pn 9.15 CS101 Aula S 9.15 EE200 Hala Pt 8.30 EE200 Hala W 13.00 CS101 Aula Pt 9.15 Prof. dr hab. Elżbieta Richter-Wąs 10

Drzewa wyrażeń dla algebry relacyjnej Drzewo wyrażenia algebry relacyjnej: Dzień, Godzina ( Klasa= Aula (ZK ZDG)) Dzień, Godzina Klasa = Aula Wynik po realizacji drzewa wyrażenia Dzień Godzina Pn 9.15 S 9.15 Pt 9.15 ZK ZDG Prof. dr hab. Elżbieta Richter-Wąs 11

SQL język oparty na algebrze relacyjnej Wiele współczesnych systemów baz danych wykorzystuje język SQL (ang. Structured Query Language strukturalny język zapytań) do wyrażania zapytań. Operacja: StudentID ( Zajecia = CS101 (ZSO)) SELECT StudentID FROM ZSO WHERE Zajęcia= CS101 Operacja: Dzień, Godzina ( Klasa= Aula (ZK ZDG)) SELECT Dzień, Godzina FROM ZK, ZDG WHERE ZK.Zajęcia = ZGD.Zajęcia AND Klasa = Aula Prof. dr hab. Elżbieta Richter-Wąs 12

Implementowanie operacji algebry relacyjnej Suma, przecięcie i różnica: Można implementować analogicznie jak dla zbiorów. Należy przewidzieć sposób eliminacji duplikatów na pewnym etapie tych operacji. Można wykorzystać indeks. Rzutowanie: Operacja wymaga przejrzenia wszystkich krotek i stworzenia kopii pozbawionych składowych odpowiadających atrybutom, których nie ma na liście rzutowania. Po wyznaczeniu rzutowania, np. S= L (R), dla pewnej relacji R i liście atrybutów L, musimy wyeliminować duplikaty (stosujemy jedna z omówionych już metod). Prof. dr hab. Elżbieta Richter-Wąs 13

Implementowanie operacji algebry relacyjnej Selekcja: Wykonywanie operacji selekcji S = C(R) na relacji R, dla której nie zdefiniowano żadnych indeksów. Musimy przeanalizować wszystkie krotki w tej relacji w celu sprawdzenia warunku C. Jeżeli takie indeksy istnieją oraz można je wykorzystać do całkowitego lub częściowego sprawdzenia warunku C to bardzo przyspiesza to czas wykonania operacji. Łączenie: Istnieje szereg metod łączenia, różniących się czasem wykonania. Tylko wymieńmy: złączenie pętli zagnieżdżonej (ang. nested loop join), złączenie indeksowe (ang. index-join), złączenie przez sortowanie (ang. sort-join). Złączenie indeksowe wymaga istnienia indeksu na jednym z atrybutów wykorzystywanych do łączenia, złączenie przez sortowanie może być wykonywane na dowolnych relacjach. Prof. dr hab. Elżbieta Richter-Wąs 14

Prawa algebraiczne dla relacji Podobnie jak w przypadku innych algebr, przekształcanie wyrażeń algebry zapytań umożliwia często optymalizację zapytań. Oznacza to, że możemy przekształcić kosztowne obliczeniowo wyrażenie w równoważne, którego obliczenie charakteryzuje się niższym kosztem. Podczas gdy przekształcenie wyrażeń arytmetycznych lub logicznych umożliwia niekiedy uzyskanie oszczędności rzędu kilku operacji, właściwe przekształcenia zastosowane do algebry relacyjnej może w znacznym stopniu skrócić czas potrzeby do wyznaczenia wartości wyrażenia. Prawa dla łączenia: Operator łączenia jest w pewnym sensie przemienny, w innym nie jest. Jeżeli istotna jest kolejność atrybutów to nie jest, S R ma inne kolumny niż R S. Operator łączenia nie zawsze spełnia warunki prawa łączności. Prof. dr hab. Elżbieta Richter-Wąs 15

Prawa dla selekcji: Prawa algebraiczne dla relacji Najbardziej przydatne prawa algebry relacyjnej dotyczą operatora selekcji. Staramy się dokonywać selekcji na jak najwcześniejszym etapie. Prawa przenoszenia selekcji (ang. selection pushing) ( C (R S)) == ( C (R) S) ( C (R S)) == (R C (S)) Prawo podziału selekcji (ang. selection splitting) C AND D (R) == C ( D (R)) Prawo przemienności selekcji C ( D (R) ) == D ( C (R)) Operacje selekcji możemy przenosić poniżej sumy, przecięcia i różnicy zbiorów. Prof. dr hab. Elżbieta Richter-Wąs 16

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Wykonanie tego zapytania wymaga przechodzenia pomiędzy czterema relacjami: ZSO ( Zajęcia-StudentID-Ocena) SNAT (StudentID-Nazwisko-Adres-Telefon) ZDG (Zajęcia-Dzień-Godzina) ZK (Zajęcia-Klasa) Aby wykonać wyrażenie algebraiczne dla tego zapytania rozpocznijmy od złączenia naturalnego dla wszystkich czterech relacji. ZSO SNAT (porównując StudentID) (ZSO SNAT) ZDG (porównując Zajęcia) ((ZSO SNAT) ZDG) ZK (porównując Zajęcia) Relacja wynikowa to: {Zajęcia, StudentID, Ocena, Nazwisko, Adres, Telefon, Dzień, Godzina, Klasa} Prof. dr hab. Elżbieta Richter-Wąs 17

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Klasa Nazwisko = J. Kowalski AND Dzień= M AND Godzina= 9.00 Skonstruowaliśmy olbrzymią relacje oraz ograniczyliśmy zbiór danych do 1 krotki Wykonaliśmy operacje rzutowania na jedną składową. ZDG ZK ZSO SNAT Prof. dr hab. Elżbieta Richter-Wąs 18

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Przenieść operacje selekcji poniżej najwyższej operacji łączenia z relacja ZK Klasa ZK Nazwisko = J.Kowalski AND Dzień= M AND Godzina= 9.00 ZDG ZSO SNAT Prof. dr hab. Elżbieta Richter-Wąs 19

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Klasa Rozdziel selekcje ZK Nazwisko = J.Kowalski Dzień= M AND Godzina= 9.00 ZDG ZSO SNAT Prof. dr hab. Elżbieta Richter-Wąs 20

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Klasa Przenieść dwie otrzymane selekcje w dwóch różnych kierunkach ZK Nazwisko = J.Kowalski Dzień= M AND Godzina= 9.00 ZDG ZSO SNAT Prof. dr hab. Elżbieta Richter-Wąs 21

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Przenieść operacje selekcji dla atrybutu Nazwisko poniżej najniższego łączenia. Klasa ZK Dzień= M AND Godzina= 9.00 ZSO Nazwisko = J.Kowalski ZDG SNAT Prof. dr hab. Elżbieta Richter-Wąs 22

Prawa dla rzutowania Rzutowanie możemy przenosić poniżej sum: L (R S) = ( L (R) L (S)) ale nie poniżej przecięć: L (R S) ( L (R) L (S)) Prawo przenoszenia rzutowania: ( L (R S)) = ( A=B L ( M ( R) A i =B N(S)) j M lista atrybutów z listy L, które należą do schematu relacji R, plus atrybut A, jeśli nie ma go na liście L N lista atrybutów z listy L, które należą do schematu relacji R, plus atrybut B, jeśli nie ma go na liście L Prof. dr hab. Elżbieta Richter-Wąs 23

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Przenieść operacje rzutowania poniżej najwyższej operacji łączenia Klasa Zajęcia ZK Dzień= M AND Godzina= 9.00 ZSO Nazwisko = J.Kowalski ZDG SNAT Prof. dr hab. Elżbieta Richter-Wąs 24

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Przenieść operacje rzutowania poniżej środkowej operacji łączenia Klasa ZK Zajęcia Zajęcia Dzień= M AND Godzina= 9.00 ZSO Nazwisko = J.Kowalski ZDG SNAT Prof. dr hab. Elżbieta Richter-Wąs 25

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Przenieść operacje rzutowania poniżej najniższej operacji łączenia. Klasa ZK Zajęcia Zajęcia Dzień= M AND Godzina= 9.00 Zajęcia, StudentID ZSO StudentID Nazwisko = J.Kowalski ZDG SNAT Prof. dr hab. Elżbieta Richter-Wąs 26

Gdzie przebywa J. Kowalski w poniedziałek o 9-tej rano? Usuń operacje rzutowania Zajęcia, StudentID Klasa ZK Zajęcia Zajęcia Dzień= M AND Godzina= 9.00 ZSO StudentID Nazwisko = J.Kowalski ZDG SNAT Prof. dr hab. Elżbieta Richter-Wąs 27

Podsumowanie Algebra relacyjna jest wysoko poziomową notacją definiowania operacji zapytań dotyczących jednej lub wielu relacji. Głównymi operacjami tej algebry są: suma, przecięcie, różnica, selekcja, rzutowanie i złączenie. Jest silną notacją wyrażania zapytań bez podawania szczegółów dotyczących planowanych operacji na otrzymanych danych. Istnieje wiele sposobów efektywnego implementowania operacji złączenia. Optymalizacja wyrażeń algebry relacyjnej może w znaczący sposób skrócić czas wyznaczania ich wartości, jest więc istotnym elementem wszystkich języków opartych na algebrze relacyjnej wykorzystywanych w praktyce do wyrażania zapytań. Istnieje wiele sposobów skracania czasu obliczania danego wyrażenia. Najlepsze efekty przynosi przenoszenie operacji selekcji w dół drzewa wyrażenia. Prof. dr hab. Elżbieta Richter-Wąs 28