Projekt bazy danych systemu informatycznego „Baza serwisowa sprzętu RTV” sporządzono w środowisku MySQL Workbench. Program do pobrana pod adresem: http://www.mysql.com/downloads/workbench/.
Baza danych umożliwia tworzenie zbiorów danych związanych z funkcjonowaniem serwisu RTV, takich jak:
- dane osobowe, adresowe, kontaktowe pracowników serwisu oraz jego klientów,
- dane dotyczące napraw, reklamacji,
- opisy techniczne uszkodzeń,
- terminy realizacji,
- wykazy części zamiennych, które zostały wykorzystane w naprawach serwisowych.
Gospodarka materiałowa - magazyn części zamiennych
Dodatkowo, baza danych umożliwia:
- wspomaganie pracy serwisu w zakresie gospodarki materiałowej częściami zamiennymi,
- tworzenie własnej klasyfikacji (wg nazw kategorii oraz producentów),
- prowadzenie ewidencji poszczególnych egzemplarzy części zamiennych (nr seryjny, data zakupu, data użycia, cena zakupu, …),
- sprawdzenie, czy podzespół wymagany w naprawie serwisowej jest dostępny w magazynie.
Klasyfikacja: | Przykład: |
Nazwa kategorii | procesor, karta graficzna, zasilacz, matryca, obudowa, … |
Nazwa producenta | Intel, ATI, Samsung, … |
Wprowadzenie nowego egzemplarza danego podzespołu powinno być wykonane w następującej kolejności:
- utworzenie nazwy kategorii oraz producenta (kolejność nie ma znaczenia),
- wprowadzenie danych dotyczących podzespołu (nazwa, typ, wersja, …),
- wprowadzenie danych dotyczących egzemplarza danego podzespołu (nr seryjny, data zakupu, cena zakupu).
W ramach jednego podzespołu posiadającego atrybuty takie jak: nazwa, typ, wersja, można utworzyć wiele egzemplarzy, z których każdy posiada swój unikalny numer seryjny. Każdy egzemplarz danego podzespołu może różnić się także datą zakupu, datą użycia oraz ceną zakupu.
System zaprojektowany dla bazy danych powinien umożliwiać:
- usunięcie nazwy kategorii, w ramach której został już wcześniej utworzony podzespół,
- usunięcie nazwy producenta, w ramach którego został już wcześniej utworzony podzespół,
- usunięcie podzespołu, w ramach którego utworzono egzemplarze.
Każdy egzemplarz podzespołu może być użyty w naprawie tylko raz. Każda reklamacja (naprawa) może zawierać listę egzemplarzy części zamiennych użytych w naprawie. Możliwe jest także zarejestrowanie naprawy bez użycia części zamiennych. Projektowany system w oparciu o bazę danych powinien zawierać filtr wyszukiwania po nazwie podzespołu.
Schemat ERD (ang. Entity-Relationship Diagram)
Na rysunku 1. przedstawiono schemat ERD bazy danych.
Rys. 1. Schemat ERD bazy danych systemu „Baza serwisowa sprzętu RTV”
Opis bazy danych
Bazę danych podzielono na dwie części:
- Obsługa reklamacji:
- Obsługa magazynu części zamiennych.
Obsługa reklamacji
W części tej rejestrowane są dane dotyczące pracowników serwisu, klientów oraz składanych reklamacji.
Tabele: Pracownicy, Adresy, Kontakty, zostały połączone relacjami jeden do jednego.
Tabele: Klienci_serwisu, Kontakty_klientow_serwisu oraz Adresy_klientow_serwisu, zostały połączone relacjami jeden do jednego.
Klienci_serwisu – Reklamacje (relacja jeden do wielu)
Jeden klient może mieć wiele reklamacji. Każda reklamacja dotyczy tylko jednego klienta.
Pracownicy – Reklamacje (relacja jeden do wielu)
Jeden pracownik może przyjąć (zarejestrować) wiele reklamacji. Każda reklamacja jest zarejestrowana tylko przez jednego pracownika.
W tabeli Egzemplarze_podzespolow dodano pole id_reklamacja (klucz obcy), w celu umożliwienia określenia, które egzemplarze podzespołów zostały użyte w danej reklamacji.
W jednej naprawie (reklamacji) może być użytych wiele podzespołów (lub żaden). Każdy egzemplarz podzespołu może być użyty w danej naprawie (reklamacji) tylko jeden raz.
Obsługa magazynu części zamiennych
W części tej rejestrowane są egzemplarze części zamiennych, wykorzystywanych w naprawach serwisowych. Zawiera ona następujące tabele: Kategorie, Producenci, Kategorie_producenci, Podzespoly, Egzemplarze_podzespolow.
Podzespoly – Egzemplarze_podzespolow (relacja jeden do wielu)
W ramach jednego podzespołu można utworzyć wiele egzemplarzy. Każdy egzemplarz jest przypisany tylko do jednego podzespołu, posiada swój unikalny numer seryjny. Poszczególne egzemplarze danego podzespołu mogą różnić się pomiędzy sobą datą zakupu, ceną, a także datą użycia. Każdy egzemplarz podzespołu może być użyty w naprawie tylko raz. Reklamacja może zawierać listę egzemplarzy części zamiennych użytych w naprawie. Naprawa może być także wykonana bez użycia części zamiennych.
Opis tabel
Tabele 2 - 13 prezentują strukturę tabel.
Nazwa pola: | Typ: |
id_pracownik | int |
id_adres | int |
id_kontakt | int |
login | varchar(50) |
md5_haslo | varchar(32) |
imie | varchar(50) |
nazwisko | varchar(50) |
uprawnienie | enum(1) |
konto_aktywne | tinyint |
data_zatrudnienia | datetime |
data_zwolnienia | datetime |
Nazwa pola: | Typ: |
id_adres | int |
miasto | varchar(80) |
miejscowosc | varchar(80) |
wojewodztwo | varchar(20) |
powiat | varchar(80) |
kod_pocztowy | varchar(6) |
ulica | varchar(80) |
nr_domu | varchar(10) |
nr_lokalu | varchar(10) |
Nazwa pola: | Typ: |
id_kontakt | int |
nr_tel_1 | varchar(45) |
nr_tel_2 | varchar(45) |
fax | varchar(45) |
varchar(45) | |
www | varchar(45) |
Nazwa pola: | Typ: |
id_reklamacja | int |
id_klient | int |
id_pracownik | int |
kod_produktu | varchar(45) |
data_sprzedazy | datetime |
nr_faktury_sprzedazy | varchar(45) |
nazwa_produktu | varchar(200) |
typ | varchar(200) |
wersja | varchar(200) |
opis | text |
opis_uszkodzenia | text |
data_przyjecia_reklamacji | datetime |
naprawa_na_miejscu | bool |
nazwa_firmy_zewn | varchar(200) |
data_przeslania | date |
data_zwrotu | date |
Nazwa pola: | Typ: |
id_klient | int |
id_adres | int |
id_kontakt | int |
nazwa_firmy | varchar(45) |
regon | varchar(45) |
nip | varchar(45) |
nazwisko | varchar(45) |
imie | varchar(45) |
rodzaj_kllienta | varchar(45) |
czy_klient_serwisu | bool |
Nazwa pola: | Typ: |
id_adres | int |
miasto | varchar(45) |
miejscowosc | varchar(45) |
wojewodztwo | varchar(45) |
powiat | varchar(45) |
kod_pocztowy | varchar(45) |
ulica | varchar(45) |
nr_domu | varchar(45) |
nr_lokalu | varchar(45) |
Nazwa pola: | Typ: |
id_kontakt | int |
nr_tel_1 | varchar(45) |
nr_tel_2 | varchar(45) |
fax | varchar(45) |
varchar(45) | |
www | varchar(45) |
Nazwa pola: | Typ: |
id_kategoria | int |
nazwa_kategorii | varchar(100) |
Nazwa pola: | Typ: |
id_producent | int |
nazwa_producenta | varchar(100) |
Nazwa pola: | Typ: |
id_kategorie_producenci | int |
id_kategoria | int |
id_producent | int |
Nazwa pola: | Typ: |
id_podzespol | int |
id_kategorie_producenci | int |
nazwa_podzespolu | varchar(45) |
typ | varchar(45) |
wersja | varchar(45) |
opis | varchar(45) |
fotografia | varchar(45) |
Nazwa pola: | Typ: |
id_egzemplarz | int |
id_podzespol | int |
nr_seryjny | varchar(45) |
data_zakupu | datetime |
data_uzycia | datetime |
cena_brutto_zakupu | decimal(10,2) |
czy_zastosowano | bool |
id_reklamacja | int |
Dobrym uzupełnieniem przedstawionych powyżej informacji jest artykuł pod tytułem „Przykładowa baza danych sklepu internetowego, diagram związków encji”. Warto również zapoznać się z innymi artykułami dotyczącymi bazy danych MySQL.
Projekt wykonali:
- Piotr Klimek
- Sławomir Węgorowski
Warto przeczytać również:
- Przykładowa baza danych prostego systemu CMS.
- Przykładowa baza danych sklepu internetowego, diagram związków encji.
- Nathan Marz, James Warren: Big Data. Najlepsze praktyki budowy skalowalnych systemów obsługi danych w czasie rzeczywistym, Wydawnictwo Helion, 2016.
- Joe Celko: Praktyki mistrza SQL. Programowanie zaawansowane, Wydawnictwo Helion, 2016.
- Ryan Stephens, Arie D. Jones, Ron Plew: SQL w 24 godziny. Wydanie VI, Wydawnictwo Helion, 2016.
- John Viescas, Michael J. Hernandez: Zapytania w SQL. Przyjazny przewodnik, Wydawnictwo Helion, 2015.
- Bill Karwin: Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz danych, Wydawnictwo Helion, 2015.