Przeczytaj
Ćwiczenia związane z grupowaniem danych przeprowadzimy na przykładzie bazy danych dziennika szkolnego, pochodzącej z zadania maturalnego.
Zadanie zostało opracowane przez Centralną Komisję Egzaminacyjną i pojawiło się na egzaminie maturalnym z informatyki w maju 2010 r. (poziom rozszerzony, cz. II). Cały arkusz można znaleźć na stronie internetowej CKE.
Niezbędne do zrealizowania kwerend pliki bazodanowe (w zależności od użytkowanego DBMSDBMS):
Szkola.accdb
dla pakietu MS Access,Szkola.odb
dla oprogramowania LibreOffice Base.
można pobrać tutaj:
Sposób importu rekordów z plików tekstowych, udostępnionych w zadaniu maturalnym, do bazy danych w wybranym formacie oraz dokładny opis modelu danych wraz z jego ograniczeniami przedstawiono w e‑materiale: Wprowadzenie do kwerend, etap IWprowadzenie do kwerend, etap I.
W bazie danych powinny znajdować się zaimportowane tabele:
Uczniowie – z atrybutami opisującymi uczniów szkoły: IDucznia, nazwisko, imie, ulica, dom, IDklasy;
Oceny – z danymi na temat uzyskanych ocen: IDoceny, IDucznia, Ocena, Data, IDprzedmiotu;
Przedmioty – z danymi o realizowanych w szkole przedmiotach: IDprzedmiotu, NazwaPrzedmiotu, Nazwisko_naucz, Imie_naucz.
Warto pamiętać o analizie modelu danych, której dokonaliśmy w e‑materiale: Wprowadzenie do kwerend, etap IWprowadzenie do kwerend, etap I.
Wskazaliśmy wówczas wiele niedoskonałości modelu danych, który zastosowano w podanym zadaniu maturalnym. Rozważmy np. często pojawiającą się sytuację, gdy w szkole zatrudnieni zostaliby dwaj nauczyciele, prowadzący ten sam przedmiot. Wówczas tabela Przedmioty traci spójność, gdyż aktualnie pozwala przypisać tylko jednego nauczyciela do jednego przedmiotu. To pokazuje, jak błędy popełnione w fazie projektowania logicznego modelu (brak wydzielenia nauczycieli do osobnej tabeli) utrudniają lub nawet uniemożliwiają późniejszą pracę z danymi.
Oprócz tabel baza danych musi posiadać zdefiniowane powiązania logiczne (relacje), występujące pomiędzy kluczami podstawowymi i obcymi, co również omówiono szczegółowo w I etapie tej serii e‑materiałów.
Zadanie 1
Przygotuj zestawienie średnich ocen uzyskanych przez wszystkich uczniów klasy 2a dla każdego przedmiotu szkolnego. Podaj kolejno: nazwę przedmiotu oraz średnią ocenę klasy z danych zajęć szkolnych. Wyniki uporządkuj malejąco, według średniej oceny. Ocenę średnią zaokrąglij do czterech miejsc po przecinku.
Grupowanie to proces dzielenia rekordów według pewnego kryterium. Samo dokonanie takiego podziału nie stanowi jednak celu operacji grupowania.
Podział rekordów służy jedynie pośrednio do wyznaczenia wartości funkcji agregującej dla każdej z grup. Tego typu funkcje znamy już z etapu III tej serii e‑materiałów.
Aby można było mówić o grupowaniu danych, nie wystarczy podać nazwy atrybutu, według którego podzielimy rekordy na poszczególne grupy. Musi także istnieć cel grupowania, czyli funkcja agregująca określająca, jaki rodzaj analizy wyznaczymy dla każdej z grup.
W zadaniu rekordy reprezentujące oceny w dzienniku grupujemy według atrybutu NazwaPrzedmiotu, zaś celem operacji jest wyznaczenie średniej oceny.
Ponieważ rekordy zostaną podzielone na grupy według nazwy przedmiotu, to otrzymamy wartość średniej oceny osobno dla każdej grupy (każdego szkolnego przedmiotu). Funkcją agregującą jest więc funkcja Średnia
:
Przykładowe rozwiązanie w MS Access
Warto zwrócić uwagę, iż w zadaniu interesują nas tylko oceny uczniów z klasy 2a, stąd nałożono dodatkowe kryterium dla pola IDklasy. Uzyskane wartości średnie uporządkowano także malejąco w wierszu Sortuj
.
Co istotne, to że również dla atrybutu IDklasy w wierszu Suma
włączono grupowanie.
Operacja grupowania oczywiście może odbywać się według więcej niż jednego atrybutu, lecz w tym zadaniu z racji nałożonego kryterium na pole IDklasy jedyną zwracaną w wynikach zapytania grupą będą i tak tylko uczniowie klasy 2a.
Przypomnijmy także, iż dostęp do wiersza Suma
uzyskamy w MS Access po wciśnięciu odpowiedniego przycisku na zakładce Projektowanie
:
Ponieważ wartość średnia uzyskana dla każdej grupy (czyli w praktyce dla każdego przedmiotu szkolnego) ma zostać zaokrąglona do czterech miejsc po przecinku, to po kliknięciu na pole Ocena w widoku projektu, przechodzimy do panelu Arkusz właściwości
:
Tutaj, analogicznie jak to przedstawiono w etapie III tego bloku e‑materiałów, określamy stałoprzecinkowy format wartości oraz liczbę miejsc dziesiętnych:
Teraz powinniśmy już dysponować poprawnymi, zaokrąglonymi średnimi ocenami dla każdego przedmiotu szkolnego realizowanego w klasie 2a.
Poprawne wyniki kwerendy
Zwróconych rekordów: 11
Grupowanie to potężny mechanizm bazodanowy – wystarczyło jedno zapytanie, aby uzyskać średnią ocenę klasy 2a dla wszystkich jedenastu przedmiotów szkolnych!
Zamiast pisać jedenaście kwerend różniących się tylko wartością atrybutu NazwaPrzedmiotu, stworzyliśmy jedną kwerendę, która podzieliła na grupy wszystkie oceny według wartości tego pola.
To nie tylko podział – celem grupowania było wyznaczenie średniej osobno dla każdego przedmiotu (w praktyce grupy rekordów). To właśnie dlatego w grupowaniu musi zostać określona funkcja agregująca.
Przykładowe rozwiązanie w LibreOffice Base
Konstrukcja kwerendy grupującej w LibreOffice Base jest podobna do rozwiązania z pakietu Microsoft Access. Najważniejsza różnica dotyczy wykorzystania rzutowania (konwersji) typu funkcją CAST
w polu zawierającym średnią:
Wartość średniej zostaje skonwertowana do typu zmiennoprzecinkowego DOUBLE
, aby można było następnie w widoku danych zaokrąglić tę wartość do czterech miejsc dziesiętnych. Klikamy prawym przyciskiem myszy na kolumnie z uzyskaną średnią, wybierając opcję Formatowanie kolumn
:
Wersja parametryczna zapytania w MS Access
W sytuacji, w której interesuje nas średnia uczniów z każdego przedmiotu szkolnego, jednak dla nazwy klasy wprowadzonej z klawiatury:
Wersja parametryczna zapytania w LibreOffice Base
Klasycznie zamiast używać nawiasów kwadratowych [ ], znanych z Microsoft Access, zastosowano zapis z operatorem dwukropka i nazwą atrybutu IDklasy o wartości wprowadzanej z klawiatury:
Podstawowe zasady grupowania danych przeprowadzanego w pakietach Microsoft Access oraz LibreOffice Base brzmią więc następująco:
Jeżeli w projekcie kwerendy włączono grupowanie według któregoś z atrybutów, to wszystkie pozostałe pola kwerendy również muszą wziąć udział w grupowaniu, chyba że dla pola wskazano funkcję agregującą zamiast grupowania.
Jedno z pól musi mieć wskazaną z listy funkcję agregującą, gdyż nie może istnieć grupowanie, które nie ma swojego matematycznego celu.
Wersja kwerendy z polem obliczeniowym
Przygotujemy teraz alternatywną wersję kwerendy z zadania pierwszego. Będzie ona zawierać w rezultatach dodatkowe pole obliczeniowe o nazwie: Wynik
, w którym pojawi się zapisana słownie informacja, zależna od wartości średniej uzyskanej przez klasę 2a dla każdego przedmiotu:
dla wartości średniej mniejszej od 3,000 informacja:
niezadowalający
;dla wartości średniej większej lub równej 3,000 informacja:
zadowalający
.
Kwerenda z polem obliczeniowym w MS Access
Aby rozwiązać to zadanie, w MS Access tworzymy nową kwerendę Ocena wyników klasy 2a na podstawie wcześniej zapytania o nazwie Średnie ocen z przedmiotów 2a:
Jednak tym razem do rezultatów kwerendy dodajemy nowe pole obliczeniowe o nazwie Wynik
, którego wartość ustalamy w zależności od pola ŚredniaOfOcena
– wartość w polu oznaczonym czerwoną ramką jest następująca:
Wynik: IIf([ŚredniaOfOcena]<3;"niezadowalający";"zadowalający")
Rozpoczynamy od zfediniowania nazwy pola obliczeniowego, zaś jego wartość zależy od spełnienia (bądź nie) warunku instrukcji warunkowej.
Poprawne wyniki kwerendy z polem obliczeniowym
Zwróconych rekordów: 11
Kwerenda z polem obliczeniowym w LibreOffice Base
Analogicznie do rozwiązania w MS Access, skorzystamy z wcześniej stworzonego zapytania o nazwie Średnie ocen z przedmiotów 2a:
Co ważne, LibreOffice Base wymaga usunięcia z tego zapytania malejącego sortowania wyników (patrz czerwona ramka) – w tym pakiecie można tego dokonać dopiero w kwerendzie pochodnej:
Do rezultatów kwerendy dodaliśmy nowe pole obliczeniowe o nazwie Wynik
, którego wartość ustalamy w zależności od pola ŚredniaOcen
– wartość w polu oznaczonym czerwoną ramką jest następująca:
CASEWHEN( [ŚredniaOcen] < 3, 'niezadowalający', 'zadowalający' )
Wyniki będą analogiczne jak w MS Access, zauważmy też włączenie sortowania malejącego dopiero w kwerendzie Ocena wyników klasy 2a zawierającej pole obliczeniowe.
Wnioski płynące z zadania
Chcąc wykorzystać funkcję agregującą w celu obliczenia wartości podsumowującej dla grupy rekordów, należy zastanowić się, jakie pola wybrać do grupowania,
Zaokrąglenie wartości otrzymanej w wyniku wykonania funkcji agregującej wymaga określenia formatu wartości oraz liczby miejsc dziesiętnych.
Zapytanie używające mechanizmu grupowania może być kwerendą parametryczną,
Dodatkowe pole obliczeniowe pozwala wyznaczyć wartości powstające na podstawie pól pierwotnie zwróconych w rezultatach kwerendy.
Zadanie 2
Przygotuj zestawienie pięciu najlepszych uczniów szkoły, czyli osób, które uzyskały najwyższą średnią ze wszystkich otrzymanych ocen. Podaj kolejno: wartość obliczonej średniej z dokładnością do czterech miejsc dziesiętnych, imię i nazwisko ucznia, jego identyfikator w systemie bazodanowym oraz nazwę klasy, do której uczęszcza.
W rozwiązaniu tego polecenia również warto użyć mechaniki grupowania danych. Wszystkie oceny chcemy podzielić na grupy według osób, które dany stopień w dzienniku uzyskały.
Następnie dla każdej grupy ocen konkretnego ucznia danej klasy wyznaczymy średnią tych wartości – funkcją agregującą będzie więc Średnia
:
Przykładowe rozwiązanie w Microsoft Access
Zwróćmy jednak uwagę, że może zdarzyć się, iż w dzienniku szkolnym pojawią się osoby o identycznych imionach i nazwiskach. W analizowanej bazie danych istnieją aż trzy uczennice o imieniu i nazwisku Magdalena Zielinska – w klasach: 1c, 1e, 2b. Można to sprawdzić w tabeli Uczniowie.
Zwróćmy uwagę – obecność atrybutu unikalnego IDucznia w rezultatach kwerendy pozwala uniknąć błędu wynikającego z ewentualnej zbieżności nazwisk uczniów.
Ponieważ interesuje nas piątka najlepszych uczniów w szkole, wynikowe średnie sortujemy malejąco oraz zwracamy tylko pięć pierwszych rekordów – patrz czerwona ramka obok opcji Zwróć
na zakładce Projektowanie
.
Zaokrąglenie wartości realizujemy identycznie jak w poprzednim poleceniu.
Poprawne wyniki kwerendy
Zwróconych rekordów: 5
Przykładowe rozwiązanie w LibreOffice Base
Mechanika grupowania jest identyczna jak w Microsoft Access; nie zapominajmy o uwzględnieniu atrybutu unikalnego opisującego ucznia oraz o ograniczeniu liczby zwracanych przez kwerendę rekordów do pięciu:
Ponownie, z powodu konieczności zaokrąglenia wartości, konwertujemy wynik średniej do typu zmiennoprzecinkowego DOUBLE
oraz w widoku danych klikamy prawym przyciskiem myszy na kolumnie z uzyskaną średnią, wybierając opcję Formatowanie kolumn
.
Wersja parametryczna zapytania w Microsoft Access
Załóżmy, że tym razem interesuje nas pięciu uczniów o najwyższej średniej, lecz tylko uczęszczających do klasy, której nazwę wprowadzimy z klawiatury:
Oczywiście może się zdarzyć, iż uczeń na szóstym miejscu w zestawieniu osiągnie dokładnie taką samą wartość średniej jak osoba na miejscu piątym!
Jak zachowa się Microsoft Access oraz LibreOffice Base w sytuacji uzyskania wyników ex aequo?
Rozważmy rezultaty powyższej kwerendy zwrócone dla klasy 2b
:
Co wydarzyłoby się w przypadku przebudowania kwerendy w taki sposób, aby zwracała średnią tylko najlepszego ucznia?
Zachowania obu pakietów są następujące:
Microsoft Access pomimo zastosowania klauzuli
TOP 1
w zapytaniu zwraca w rezultatach kwerendy oba rekordy,LibreOffice Base zwraca w analogicznej sytuacji tylko jeden z rekordów, nie sygnalizując wystąpienia remisu.
Wersja parametryczna zapytania w LibreOffice Base
Ponownie zamiast nawiasów kwadratowych wykorzystujemy zapis :IDklasy
.
Wnioski płynące z zadania
W zapytaniach zawsze korzystamy z atrybutu unikalnego w grupowaniu, tak aby zbieżność imienia i nazwiska nie spowodowała wyznaczenia średniej np. trojga uczniów, zamiast dla każdej osoby oddzielnie.
Zarówno Microsoft Access, jak i LibreOffice Base umożliwiają ograniczenie liczby zwracanych rekordów.
Ograniczenie liczby zwracanych rekordów w połączeniu z mechaniką sortowania wyników pozwala znaleźć top
X
wartości największych lub najmniejszych, gdzie przezX
rozumiemy liczbę zwracanych przez kwerendę wierszy.
Zadanie 3
Stwórz zestawienie średniej wartości ze wszystkich ocen, które wystawił w dzienniku każdy z nauczycieli. Podaj kolejno: nazwisko i imię nauczyciela oraz średnią ze wszystkich ocen umieszczonych w dzienniku przez tę osobę. Zestawienie uporządkuj rosnąco według wartości średniej, czyli od osoby teoretycznie oceniającej uczniów najsurowiej, zaś wartość średniej podaj z dokładnością do czterech miejsc po przecinku.
W modelu danych dziennika szkolnego istnieje łącznie jedenaścioro nauczycieli, wśród których nie występuje zbieżność imienia i nazwiska. Grupowania rekordów możemy zatem dokonać jedynie według pól Nazwisko_naucz oraz Imie_naucz, zaś funkcją agregującą będzie Średnia
wyznaczona dla pola Ocena.
Jak wspominaliśmy w analizie modelu danych przeprowadzonej jeszcze w etapie I niniejszych ćwiczeń: Wprowadzenie do kwerend, etap IWprowadzenie do kwerend, etap I, w bazie danych powinna istnieć tabela Nauczyciele, dzięki czemu każdy wykładowca posiadałby własny unikalny identyfikator – wówczas nawet ewentualna zbieżność imion czy nazwisk nauczycieli nie stanowiłaby najmniejszego problemu.
Przykładowe rozwiązanie w Microsoft Access
Ponieważ chcemy uporządkować wyniki, rozpoczynając od nauczyciela, który wystawia ocenę średnio najniższą, to w wierszu Sortuj
wybrany został porządek rosnący.
Poprawne wyniki kwerendy
Zaokrąglenie średnich ocen do czterech miejsc po przecinku uzyskujemy w Microsoft Access tak samo, jak opisano w zadaniu pierwszym.
Zwróconych rekordów: 11
Domyślny alias ŚredniaOfOcena
ustanowiony automatycznie przez Microsoft Access możemy zmienić – wystarczy w widoku projektu kwerendy dopisać w wybranej kolumnie nazwę pola zakończoną dwukropkiem:
w ten sposób zmienimy domyślny alias ŚredniaOfOcena
na samodzielnie zdefiniowaną wartość: Średnia
.
Przykładowe rozwiązanie w LibreOffice Base
Nie zapominamy o zastosowaniu funkcji CAST
, ponieważ chcemy zaokrąglić wyniki w widoku danych. Zwróćmy też uwagę, iż nowemu atrybutów nadano alias Srednia
, co nie jest może koniecznością, ale może okazać się przydatne do łatwiejszej analizy wyników kwerendy.
Przypomnijmy, że w widoku danych klikamy prawym przyciskiem myszy na kolumnie z uzyskaną średnią, wybierając opcję Formatowanie kolumn
, tam ustawiając pożądaną liczbę miejsc dziesiętnych – w razie wątpliwości zajrzyj do opisu zadania pierwszego.
Wersja parametryczna zapytania w Microsoft Access
Załóżmy, iż tym razem interesuje nas średnia ocena wystawiana przez nauczyciela nie w całej szkole, lecz tylko w klasie, której nazwę wprowadzimy z klawiatury:
Wersja parametryczna zapytania w LibreOffice Base
Ponownie używamy operatora dwukropka oraz nazwy atrybutu, którego wartość wprowadzimy z klawiatury:
Wnioski płynące z zadania
Model danych dziennika szkolnego nie jest poprawnie znormalizowany – patrz etap I tej serii e‑materiałów. Z tego powodu, podziału wszystkich ocen na grupy według nauczyciela, który ocenę wystawił dokonaliśmy po imieniu i nazwisku prowadzącego zajęcia.
W przypadku ocen szkolnych często przychodzi nam używać funkcji agregującej
Średnia
. Nic jednak nie stoi na przeszkodzie, żeby wykorzystywać w grupowaniu także inne znane nam funkcje, na przykład:Policz
,Suma
itd. Dobór funkcji agregującej to ważna umiejętność inżyniera baz danych.
Zadanie 4
Przygotuj zestawienie wszystkich uczniów w szkole, którym nie wystawiono w dzienniku ani jednej oceny z matematyki. Podaj kolejno: nazwisko i imię ucznia oraz IDklasy, do której uczęszcza.
W tej kwerendzie wykorzystamy mechanizm łączenia zestawów danych (ang. join). Aby znaleźć uczniów, którzy nie otrzymali żadnej oceny z matematyki, dokonamy złączenia:
tabeli Uczniowie, w której znajdują się wszyscy uczniowie szkoły,
kwerendy, która wyjmie z tabeli Oceny jedynie oceny z matematyki.
Kiedy dokonamy złączenia tych dwóch zestawów danych w jedną tabelę (pamiętając o logicznym powiązaniu występującym w atrybucie IDucznia), okaże się, że wartości w kolumnach pochodzących z kwerendy pozostaną puste dla tych uczniów, którzy nie otrzymali żadnej noty z matematyki.
Innymi słowy: jeśli uczeń o zadanym IDucznia występował jedynie w tabeli Uczniowie, zaś nie udało się znaleźć takiej samej wartości IDucznia w wynikach kwerendy, oznacza to, że ten uczeń nie otrzymał żadnej oceny z matematyki.
Taką sytuację można wykryć w rezultatach złączenia, używając w kryterium wyszukiwania odpowiednio:
Is Null
w programie Microsoft Access,IS EMPTY
w pakiecie LibreOffice Base.
Przedstawmy zatem teraz sposób wykorzystania tych zapisów w praktyce.
Przykładowe rozwiązanie w Microsoft Access
Rozpoczynamy od stworzenia pomocniczej kwerendy, która wyjmie z dziennika szkolnego jedynie oceny z matematyki:
W zwracanych rezultatach pojawił się dodatkowo atrybut IDucznia, którego nie sposób pominąć, ponieważ pozostaje w powiązaniu logicznym z tabelą Uczniowie. System bazodanowy musi wiedzieć, czyje oceny zwracamy w kwerendzie – bez tej wiedzy nie udała się ustalić, którzy uczniowie ocen nie posiadają.
Program Microsoft Access udostępnia nam wygodny kreator do konstruowania złączeń wyszukujących wartości Is Null
w kryterium kwerendy:
Poszukujemy uczniów znajdujących się co prawda w tabeli Uczniowie, lecz nieobecnych („niepasujących”) w wynikach kwerendy wyszukującej wszystkie oceny z matematyki. Interesuje nas zatem ostatnia opcja na liście możliwych do utworzenia kwerend:
Warto wczytać się w udostępniony w powyższym oknie (patrz niebieska ramka) opis rodzaju tworzonej kwerendy – jest to dokładnie mechanika takiego złączenia, które okazuje się przydatne w tym zadaniu.
Rozpoczynamy od wskazania tabeli, w której znajdują się rekordy (w tym zadaniu są to uczniowie) być może nieposiadający rekordów pokrewnych w innym zestawie danych (w przypadku naszego zadania nieposiadający ocen z matematyki):
Kolejny krok jest logiczny – wskazujemy drugi zestaw danych, w którym dla powiązanego rekordu może wystąpić Is Null
w wartości kryterium:
Teraz trzeba wskazać atrybut, który stanowi powiązanie logiczne pomiędzy dwoma określonymi wcześniej zestawami danych:
Zgodnie z poleceniem wybieramy pożądany zestaw informacji dotyczących ucznia:
W ostatnim kroku nazywamy wynikową kwerendę:
Gdy zajrzymy do projektu świeżo utworzonej przez kreator kwerendy, zauważymy, że rzeczywiście wykorzystano klauzulę Is Null
w wartości kryterium:
Poprawne wyniki kwerendy
Zwróconych rekordów: 9
Przykładowe rozwiązanie w LibreOffice Base
Rozpoczynamy od przygotowania kwerendy pomocniczej, która zawierać będzie wszystkie wystawione w dzienniku oceny z matematyki:
Pakiet LibreOffice Base nie udostępnia nam kreatora wyszukiwania niepasujących danych, lecz możemy sami przygotować projekt takiej kwerendy.
Po wstawieniu do danych źródłowych kwerendy tabeli Uczniowie oraz zapytania zwracającego wszystkie oceny z matematyki, tworzymy „nitkę” powiązania logicznego pomiędzy dwoma zestawami danych, po czym klikamy na nią prawym przyciskiem myszy, wybierając opcję Edycja...
:
Pamiętajmy, iż znanemu z Microsoft Access zapisowi Is Null
w LibreOffice Base odpowiada wartość kryterium: IS EMPTY
.
W oknie właściwości złączenia wybieramy Złączenie prawostronne
. Dlaczego? Zwróćmy uwagę, że tabela Uczniowie znalazła się po prawej stronie okna (patrz niebieska ramka poniżej), stąd to właśnie do tej „pełnej” tabeli (zawierającej wszystkie dostępne wartości IDucznia) dołączamy tabelę teoretycznie „mniejszą”, gdyż zawierającą wartości IDucznia jedynie tych osób, które otrzymały oceny z matematyki:
Wskazujemy w powyższym oknie atrybut IDucznia jako złączone pola.
Wnioski płynące z zadania
Skorzystanie z zapisu
Is Null
w progamie Microsoft Access lubIS EMPTY
w LibreOffice Base umożliwia wyszukanie rekordów nieposiadających wartości pokrewnych w innym, złączonym zestawie danych. W praktyce mogą to być np. uczniowie nieposiadający oceny z matematyki w dzienniku szkolnym czy klienci sklepu internetowego, którzy niczego jeszcze w serwisie nie zamówili.
Słownik
(ang. query – zapytanie); jest to zapisane z użyciem języka SQL
polecenie skierowane do systemu bazodanowego, którego celem może być: pobranie, dodanie, modyfikacja lub usunięcie danych albo sposobu ich przechowywania w systemie
(ang. Database Management System) lub w wersji polskiej: SZBD (System Zarządzania Bazą Danych) to oprogramowanie, które obsługuje wszystkie działania administracyjne związane z bazami danych i odpowiada za realizację podstawowych funkcji: zarządzanie użytkownikami, ochronę integralności danych, zapewnienie możliwości wykonywania na zgromadzonych informacjach kwerend, dbanie o bezpieczeństwo zbioru informacji; przykładowe systemy DBMS: MySQL, MariaDB, FireBird, PostgreSQL, Microsoft SQL Server, SQLite, Oracle Database, Microsoft Access, LibreOffice Base