Wymagania funkcjonalne bazy danych

Sklep z produktami pszczelimi rodziców Tomka działa coraz prężniej. Do tej pory do rejestrowania sprzedaży wystarczył prosty arkusz z następującą zawartością:

R1QEKUf160JSw1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

W związku z rozwojem działalności produkcyjno‑sprzedażowej pojawiły się większe wymagania co do funkcjonalności bazy:

  • asortyment jest coraz bardziej zróżnicowany zarówno jeśli chodzi o rodzaje miodu, jak i oferowane pojemności,

  • coraz większa liczba zamówień wymaga posiadania aktualnej informacji o bieżącym stanie magazynowym oferowanych produktów (pozwala mieć rozeznanie w kwestii, ile czego jest, czego zaczyna brakować oraz co już nie jest dostępne),

  • ze względu na coraz większą liczbę klientów identyfikowanie ich tylko po imieniu już nie wystarcza,

  • niektórzy klienci zamawiają produkty telefonicznie lub internetowo i proszą o przesłanie zamówienia na wskazany adres, stąd potrzeba gromadzenia danych teleadresowych klientów,

  • aby zachęcić do częstszych zakupów, właściciele sklepu chcą wprowadzić system lojalnościowy nagradzania klientów za pierwsze i kolejne zakupy:
    - po pierwszych oraz po co piątych kolejnych zakupach wysyłany byłby losowy prezent,
    - w zależności od liczby zdobytych punktów, które będą naliczane proporcjonalnie do ilości zakupionego miodu (liczonego w litrach), klient będzie mógł sam wybrać dla siebie prezent z przygotowanego katalogu,

  • prezenty będą stanowiły specjalną kategorię produktów niedostępnych w zwykłej sprzedaży i będą to np. woskowe świece o różnych kształtach, pyłek pszczeli, pierzga, propolis, mleczko pszczele.

Ważne!

Zwróć uwagę na wyróżnione w opisie wyrazy. Będą one punktem wyjścia w procesie przebudowy bazy.

Analiza wymagań w odniesieniu do istniejącej bazy

Gdyby uwzględnić przedstawione wymagania poprzez poszerzenie aktualnej bazy w arkuszu o kolumnę z adresem klienta oraz uzupełnić imię o nazwisko, mogłaby ona wyglądać następująco:

Rs6rKOwrLUaQ51
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Analizując praktyczne wykorzystanie tak zaprojektowanej bazy, Tomek zauważył następujące niedogodności:

  1. W wierszach dotyczących zakupów dokonywanych przez tego samego klienta powtarzane są dane związane z adresem oraz imieniem i nazwiskiem, co prowadzi do zużycia dodatkowych zasobów pamięci. Na zdjęciu poniżej przedstawiającym fragment bazy zaznaczono trzy wystąpienia dla tego samego klienta:

R1eS3ReWIuDSh1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wniosek 1
Gdyby udało się zredukować powtarzające się (redundantneredundancja w bazie danychredundantne) dane do pojedynczego wystąpienia, można byłoby zaoszczędzić sporo miejsca i uczynić strukturę bazy danych bardziej czytelną.

  1. W razie konieczności aktualizacji danych klienta (np. zmiany nazwiska lub adresu), trzeba dokonać zmian we wszystkich miejscach, w których te dane występują.

Wniosek 2
Ograniczenie zapisu tych samych danych do tylko jednego miejsca pomogłoby zminimalizować ryzyko wystąpienia tzw. anomalii przy aktualizacji danych, a więc uniknięcia błędu polegającego na pominięciu niektórych wystąpień podczas dokonywania zmian.

  1. W kolumnie ADRES KLIENTA cały adres zapisany jest w jednej komórce, co może utrudnić porządkowanie listy zamówień ze względu na miasto czy kod pocztowy (może to mieć znaczenie podczas przygotowywania zamówionych produktów do wysyłki):

RrxwXYGHaOgnu1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wniosek 3
Rozdzielenie danych adresowych na mniejsze porcje ułatwiłoby wprowadzanie nowych danych do bazy oraz przyspieszyłoby generowanie niektórych zestawień.

  1. W przypadku usunięcia zamówienia (na przykład w razie rezygnacji z zakupu) tracimy informację nie tylko o samym zamówieniu, ale również o kliencie. Może wystąpić wówczas zjawisko tzw. anomalii przy usuwaniu danych.

Wniosek 4

Gdyby można było usunąć konkretne zamówienie bez usuwania danych o kliencie, zachowalibyśmy dane, dzięki którym moglibyśmy utrzymać kontakt z klientem.

Żeby spełnić wszystkie wymagania określone na początku, potrzebne byłoby jeszcze stworzenie miejsca na przechowanie katalogu prezentów, a także uwzględnienie liczby dokonanych zakupów przez klienta oraz liczby naliczonych punktów za zakupy. Wydaje się to dość trudnym zadaniem, gdyby chcieć umieścić wszystkie te dane w strukturze jednej tabeli w arkuszu.

Skoro więc jedna tabela nie wystarczy do stworzenia odpowiedniej struktury bazy, Tomek uznał, że właściwym rozwiązaniem będzie zaprojektowanie relacyjnej bazy danychrelacyjna baza danychrelacyjnej bazy danych.

redundancja w bazie danych
redundancja w bazie danych

nadmiarowość, czyli wielokrotne występowanie tych samych danych

relacyjna baza danych
relacyjna baza danych

baza danych, w której dane przechowywane są w postaci wzajemnie powiązanych ze sobą tabel