Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.
Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić archiwizację bazy danych klientów wraz z zamówieniami oraz produktów dostępnych w sklepie. Uwzględnienie wszystkich rzeczywistych zmian w obiektach bazy. Baza powinna być prosta w obsłudze w formie aplikacji okienkowej.
Podział Bazy Na potrzeby projektu podzieliliśmy bazę na 4 główne tabele: Produkty; Klienci; Zamówienia; Tabela w której, znajdują się produkty przypisane do danego zamówienia
Klienci Tabele Zamówienia Produkty Lista produktów(zamówienie)
Funkcjonalność Bazy Dodawanie/edycja/usuwanie rekordów we wszystkich tabelach. Wyświetlenie zamówień w trakcie realizacji. Wyświetlenie zamówień z ostatnich 14 dni. Wyświetlenie bestsellerów produktów, które sprzedają się najczęściej. Przeszukiwanie bazy.
Przykładowe polecenia SQL Tworzenie nowej tabeli Produkty: CREATE TABLE "Produkty" ( "Id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, "Nazwa" VARCHAR(40) NOT NULL, "Kategoria" VARCHAR(25) ) Dodawanie rekordów do tabeli Klient: INSERT INTO Klient VALUES (1, Roman, Romański, Grunwaldzka, 1/3, 54-129, Wrocław, Roman@gmail.com, Najnowszy Klient) Wybieranie rekordu, który chcemy pokazać: SELECT id, Imie, Nazwisko FROM Klient Wybieranie rekordów na podstawie kryteriów: SELECT id, Imie, Nazwisko, Miejscowosc FROM Klient WHERE Imie='Adam' AND Miejscowosc='Wrocław' Tworzenie podzapytania- zagnieżdżanie: SELECT id, Imie, Nazwisko, Miejscowosc FROM Klient WHERE Nazwa=(SELECT Produkt, Nazwa FROM Produkt WHERE Nazwa= Sofa )
Środowisko programistyczne Do stworzenia bazy danych użyliśmy środowiska programistycznego.net C#. Całość jest napisana w konwencji Code First. Narzędziem do obsługi bazy jest MS SQL Server Express Edition 2014 Management Studio. Natomiast interfejsem bazy jest prosta aplikacja okienkowa która pozwala na komunikacje Klient-Server-Klient.
Porównanie C# z językiem SQL foreach (var a in db.klient) var temp = from p in a.zamowienia where p.stan_zamowienia.contains("zakonczono") == false select p; foreach (var c in temp) lista.add(c); C# Język SQL SELECT id, Imie, Nazwisko, Miejscowosc FROM Klient WHERE Id = (SELECT Id FROM Zamówienie WHERE Stan_zamowienia= zakonczono ) using (var db = new MebleBazaDbContext()) var temp = from p in db.klient where p.imie.contains(textbox10.text) p.nazwisko.contains(textbox10.text) select p; foreach (var c in temp) lista.add(c); Zamowienie zamowienie = new Zamowienie() Data = new DateTime(2000, 1, 1), Koszt_Transportu = 100, Koszt_Zamowienia = 200, Stan_Zamowienia = "zakonczono" SELECT id, Imie, Nazwisko, FROM Klient WHERE Imie = 'textbox10.text' OR Nazwisko = 'textbox10.text OR INSERT INTO Zamowienie VALUES ( 1, 2000/1/1, 100, 200, zakończono )
Interfejs użytkownika
Fragmenty kodu Tworzenie tabeli Produktów: public class Produkt public int Id get; set; public string Nazwa get; set; public string Kategoria get; set; public int Cena get; set; public Produkt() public string getnazwa() return Nazwa; Dodawanie produktów do bazy: using (var ctx = new MebleBazaDbContext()) if (ID == 0) Produkt produkt = new Produkt() Nazwa = textbox1.text, Kategoria = combobox1.text, Cena = int.parse(textbox3.text) ; ctx.produkty.add(produkt); ctx.savechanges(); public override string ToString() return string.format("1 0 Cena: 2", Nazwa, Kategoria, Cena);
Wyszukiwanie zamówień z ostatnich 14-stu dni: List<Zamowienie> lista = new List<Zamowienie>(); using (var db = new MebleBazaDbContext()) foreach (var a in db.klient) var temp = from p in a.zamowienia where p.data >= DateTime.Now.AddDays(-14) select p; foreach (var c in temp) lista.add(c); listbox2.datasource = lista; listbox2.refresh(); Pokaż produkty sprzedające się najlepiej: List<Produkt> lista = new List<Produkt>(); using (var db = new MebleBazaDbContext()) foreach (var b in db.produkty) int i = 0; foreach (var a in db.klient) foreach (var c in a.zamowienia) var temp = from p in c.produkty where p.nazwa.equals(b.nazwa) select p; foreach (var asd in temp) i++; if(i > 1) lista.add(b); listbox3.datasource = lista; listbox3.refresh();
Dalszy rozwój Stworzenie systemu kont pracowników. Automatyczne liczenie kosztu transportu przy pomocy kodu pocztowego. Planowanie trasy rozwozu mebli. Stworzenie strony internetowej w języku PHP, wykorzystującej bazę danych. Stworzenie większej ilości tabel (np. bazę dostępnych materiałów).
Dziękujemy za uwagę