Projekt bazy danych systemu informatycznego „Sklep internetowy” sporządzono w środowisku MySQL Workbench. Do pobrana pod adresem: http://www.mysql.com/downloads/workbench/.
Baza danych umożliwia tworzenie zbiorów danych związanych z funkcjonowaniem Sklepu komputerowego, takich jak:
- dane osobowe, kontaktowe, adresowe pracowników sklepu oraz jego klientów,
- dane dotyczące sprzedaży towarów,
- dane dotyczące zamówień składanych przez klientów.
Gospodarka magazynowa – magazyn produktów dostępnych w sklepie
Dodatkowo baza danych systemu umożliwia:
- wspomaganie pracy w zakresie zarządzania zasobami magazynowymi sprzedawanych produktów,
- tworzenie własnej klasyfikacji produktów według nazw kategorii oraz producentów,
- dodawanie własnych definicji produktów z wykorzystaniem atrybutów (nazwa produktu, typ, wersja, zdjęcie, opis, cena sprzedaży, …),
- prowadzenie ewidencji sprzedaży poszczególnych egzemplarzy danego produktu (numer seryjny, data sprzedaży, data zakupu, cena, …),
- sprawdzenie, czy dany produkt jest dostępny w sprzedaży,
- uzyskanie informacji o ilości dostępnego produktu.
Klasyfikacja produktów
W celu ułatwienia zarządzania zbiorami danych, wprowadzono klasyfikację według nazw kategorii produktów oraz nazw producentów. W tabeli przedstawiono przykład (Tabela 1.).
Klasyfikacja: | Przykład: |
Nazwa kategorii | Procesor, monitor LCD, karta graficzna, … |
Nazwa producenta | Intel, IIyama, ATI, … |
Wprowadzenie nowego egzemplarza danego produktu
Wprowadzenie powinno być wykonane w następującej kolejności:
- utworzenie nazwy kategorii oraz producenta (kolejność nie ma znaczenia),
- wprowadzenie danych dotyczących produktu (nazwa produktu, typ, wersja, opis, fotografia, …),
- wprowadzenie danych dotyczących konkretnego egzemplarza danego produktu (nr seryjny, data zakupu, data sprzedaży, cena, …).
W ramach jednego produktu posiadającego atrybuty takie jak: nazwa, typ, wersja, fotografia, opis, można utworzyć wiele egzemplarzy, z których każdy posiada swój unikalny numer seryjny. Każdy egzemplarz danego produktu może różnić się także datą zakupu, datą sprzedaży oraz ceną.
System zaprojektowany dla przykładowej bazy danych powinien umożliwiać:
- usunięcie nazwy kategorii, w ramach której został już wcześniej utworzony produkt,
- usunięcie nazwy producenta, w ramach którego został już wcześniej utworzony produkt,
- usunięcie produktu, w ramach którego utworzono egzemplarze.
Zależności te wynikają z relacji łączących tabele w bazie danych.
Wyszukiwanie określonego produktu
Dzięki wprowadzeniu klasyfikacji, system powinien umożliwiać wyszukiwanie produktów według wcześniej zdefiniowanych kryteriów (kategorie, producenci). Dodatkowo można zastosować filtr wyszukiwania po nazwie produktu.
Składanie zamówienia przez klienta
Warunkiem złożenia zamówienia przez klienta jest posiadanie konta w naszym sklepie. Pojedyncze zamówienie może zawierać wiele produktów. Przy rejestracji nowego klienta wymagane jest podanie adres email, dzięki czemu programista może napisać funkcję, która po dokonaniu zamówienia, automatycznie wyśle potwierdzenie na adres email podany przez klienta podczas rejestracji konta.
Schemat ERD (ang. Entity-Relationship Diagram)
Na rysunku 1. przedstawiono schemat ERD bazy danych.
Opis tabel
Tabele 2 - 15 prezentują strukturę tabel.
Nazwa pola: | Typ: |
id_zdjecia | int |
id_produkt | int |
nazwa_jpg | varchar (45) |
data_dodania | datetime |
Nazwa pola: | Typ: |
id_zamowienia_produkty | int |
id_zamowienia | int |
id_produkt | int |
Nazwa pola: | Typ: |
id_produkt | int |
id_kategorie_producenci | int |
nazwa_produktu | varchar (45) |
typ | varchar (45) |
wersja | varchar (45) |
opis | text |
fotografia | varchar (45) |
cena_netto_sprzedazy_aktualna | decimal(10, 2) |
cena_brutto_sprzedazy_aktualna | decimal(10, 2) |
procent_vat_sprzedazy | decimal(8, 2) |
Nazwa pola: | Typ: |
id_kategorie_producenci | int |
id_kategoria | int |
id_producent | int |
Nazwa pola: | Typ: |
id_kategoria | int |
nazwa_kategorii | varchar (45) |
Nazwa pola: | Typ: |
id_producent | int |
nazwa_producenta | varchar (45) |
Nazwa pola: | Typ: |
id_zamowienia | int |
id_kllient | int |
data_zlozenia_zamowienia | datetime |
czy_przyjeto_zamowienie | bool |
data_przyjecia_zamowienia | datetime |
zapłacono | varchar(45) |
data_wysylki | datetime |
czy_zamowienie_zrealizowano | bool |
data_realizacji_zamowienia | datetime |
Nazwa pola: | Typ: |
id_egzemplarz | int |
id_produkt | int |
kod_produktu | varchar(45) |
cena_netto_zakupu | decimal(10, 2) |
cena_brutto_zakupu | decimal(10, 2) |
procent_vat_zakupu | int |
data_zakupu | datetime |
date_sprzedazy | datetime |
czy_sprzedano | bool |
Nazwa pola: | Typ: |
id_pozycja_faktury_sprzedazy | int |
id_faktura_sprzedazy | int |
id_egzemplarz | int |
cena_netto_sprzedazy | decimal(10,2) |
cena_brutto_sprzedazy | decimal(10,2) |
procent_vat_sprzedazy | int |
Nazwa pola: | Typ: |
id_faktura_sprzedazy | int |
id_klient | int |
nr_faktury_sprzedazy | varchar (45) |
data_sprzedazy | varchar (45) |
wartosc_netto | varchar (45) |
wartosc_brutto | varchar (45) |
wartosc_vat | varchar (45) |
nazwa_banku | varchar (45) |
format_platnosci | varchar (45) |
rodzaj_dokumentu | varchar (45) |
Nazwa pola: | Typ: |
id_klient | int |
id_adres | int |
id_kontakt | int |
login | varchar(45) |
md5_haslo | varchar(32) |
nazwa_firmy | varchar(45) |
regon | varchar(45) |
nip | varchar(45) |
nazwisko | varchar(45) |
imie | varchar(45) |
rodzaj_klienta | varchar(45) |
Nazwa pola: | Typ: |
id_kontakt | int |
nr_tel_1 | int |
nr_tel_2 | int |
fax | varchar(45) |
varchar(32) | |
www | varchar(45) |
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_pracownik | int |
id_adres | int |
id_kontakt | int |
login | varchar(45) |
md5_haslo | varchar(32) |
imie | varchar(45) |
nazwisko | varchar(45) |
uprawnienie | enum(0, 1, 2, 3) |
konto_aktywne | bool |
data_zatrudnienia | datetime |
data_zwolnienia | datetime |
Obecnie sklepy internetowe są bardzo popularną formą handlu. Większość firm zajmujących się hostingiem udostępnia również własne sklepy (opłata miesięczna). Pisanie własnego sklepu w większości przypadków nie jest potrzebne, gdyż już jest naprawdę sporo tego typu produktów na rynku. Czasami zaprojektowanie sklepu pod konkretne wymagania może być przydatne, jednak należy się liczyć z wydaniem większej sumy pieniędzy.
Projekt wykonali:
- Piotr Klimek
- Sławomir Węgorowski
Warto przeczytać również:
- 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.