MATERIAŁY SZKOLENIOWE Podyplomowe Studia Systemy informatyczne w logistyce Hurtownie danych w informatycznych systemach logistycznych (MS SQL Server 2012) PROWADZĄCY: Marcin Pieleszek Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego
Wprowadzenie do baz danych Tworzenie i zarządzanie ankietą aplikacja Google Apps Formularze Proszę zaimplementować w Google Apps Formularze ankietę dotyczącą usług, kierowaną do potencjalnych klientów firmy logistycznej. Nazwa pliku na dysku Google: 20131026_Ankieta_logistyka 2
1) Czy organizacja stosuje outsourcing w jakiejkolwiek formie? Tak Nie 2) Jaki rodzaj outsourcingu stosuje organizacja? Outsourcing IT Outsourcing usług finansowych Outsourcing HR Outsourcing funkcji dodatkowych (sprzątanie, ochrona) 3) Czy organizacja stosuje outsourcing logistyczny? Tak Nie (proszę przejść do pytania.. ankiety) 4) Jakie są najważniejsze cele zastosowania outsourcingu logistycznego (proszę zaznaczyć maksimum 3 odpowiedzi)? Redukcja kosztów realizacji funkcji logistycznych Zmiana struktury kosztów (za stałych na zmienne) Poprawa płynności finansowej przedsiębiorstwa Uszczuplenie struktury organizacji Zwiększenie przejrzystości procesów 5) Czy wybór operatora logistycznego do współpracy miał miejsce w skutek przetargu? Tak Nie 6) Jakie były podstawowe kryteria wyboru operatora? Uznana pozycja / marka na rynku Wielkość przedsiębiorstwa Doświadczenie 7) Proszę podać swoje dane adresowe Nazwa przedsiębiorstwa ulica Miejscowość Kod Pocztowy Poczta Adres strony www Imię Nazwisko osoby kontaktowej E-mail 3
Problem - budowanie tabel z danymi Czy dane pozyskane z badań na podstawie ankiety można skutecznie przetwarzać w jednej tabeli? Implementacja tabel z pozyskanymi danymi z SQL Server Podstawowe elementy języka SQL Podstawowe polecenie select 1 USE AdventureWorks; GO WITH DirReps(ManagerID, DirectReports) AS ( SELECT ManagerID, COUNT(*) FROM HumanResources.Employee AS e WHERE ManagerID IS NOT NULL GROUP BY ManagerID ) SELECT ManagerID, DirectReports FROM DirReps ORDER BY ManagerID; GO WHERE USE AdventureWorks GO SELECT ProductID, Name FROM Production.Product WHERE Name = 'Blade' ; GO SELECT ProductID, Name, Color FROM Production.Product WHERE Name LIKE ('%Frame%') GO SELECT ProductID, Name FROM Production.Product WHERE ProductID = 2 OR ProductID = 4 OR Name = 'Spokes' ; GO SELECT ProductID, Name, Color FROM Production.Product WHERE Name LIKE ('%Frame%') AND Name LIKE ('HL%') AND Color = 'Red' ; GO SELECT ProductID, Name, Color FROM Production.Product WHERE Name IN ('Blade', 'Crown Race', 'Spokes'); GO SELECT ProductID, Name, Color FROM Production.Product WHERE ProductID BETWEEN 725 AND 734; GO 1 Więcej: Transact-SQL Reference (Database Engine) http://msdn.microsoft.com/en-us/library/bb510741(v=sql.100).aspx 4
GROUP BY GROUP BY <group by spec> USE AdventureWorks GO SELECT ProductID, Name FROM Production.Product WHERE Name = 'Blade' ; GO HAVING USE AdventureWorks ; GO SELECT SalesOrderID, SUM(LineTotal) AS SubTotal FROM Sales.SalesOrderDetail GROUP BY SalesOrderID HAVING SUM(LineTotal) > 100000.00 ORDER BY SalesOrderID ; ORDER BY Order by ASC porządek rosnący (domyślny) DESC porządek malejący USE AdventureWorks GO SELECT ProductID, Name FROM Production.Product WHERE Name LIKE 'Lock Washer%' ORDER BY ProductID ; SELECT ProductID, Name FROM Production.Product WHERE Name LIKE 'Lock Washer%' ORDER BY ProductID DESC; SELECT ProductID, Name FROM Production.Product WHERE Name LIKE 'Lock Washer%' ORDER BY Name ASC ; SELECT LastName, FirstName FROM Person.Contact WHERE LastName LIKE 'R%' ORDER BY FirstName ASC, LastName DESC ; Możliwość definiowania w klauzuli, nie tylko nazw kolumn, ale również wyrażeń. 5
Distinct wyświetla wartości unikalne Próbka 10 rekordów z bazy. Jeżeli chcemy 10 najdroższych rekordów trzeba użyć klauzuli order by. 6
Standardowe funkcje agregujące MS SQL Server Obliczenie ilości rekordów i ilości wartości unikalnych dla danego atrybutu: Argumentem funkcji agregującej może być wyrażenie. Grupowanie według koloru 7
Liczba produktów w każdym kolorze Wyświetlenie wszystkich kolorów w których liczba produktów jest większa od 30. Sortowanie: 10 najbardziej rentownych towarów 8
Normalizacja dzielenie tabel join = inner join (można używać zamienne) łączy ze sobą rekordy, które są w obu tabelach Outer join trzeba wskazać prawą, albo lewą tabelę, z jednej tabeli mogą zastać wzięte wszystkie wiersze. 9
Self join połączenie tabeli z nią samą. Zadanie wyświetlania pracowników i ich szefów. Aby to wykonać wprowadzamy dwa aliasy pod którymi będzie występować ta sama tabela. Połączenie następuje po kluczu (ID) i boss_id. 10
Połączenie rekordów Jeżeli rekordy pochodzą z równoważnych tabel możemy mieć potrzebę wyświetlania ich w jednej tabeli Pierwszy select narzuca strukturę wyniku. Łącząc operatorem union możemy sklejać rekordy, które są ze sobą kompatybilne. 11
Użycie null zapobiega problemom. Operator Union domyślnie eliminuje duplikaty. Union all wyświetla wszytko. Operator except za wyjątkiem tego co występuje w tabeli następującej po operatorze except Intersect cześć wspólna Polecenie select, które wyświetla listę miejscowości i sumę zakupów przez klientów z danej miejscowości: Miasto Obrót. Podzapytania Podzapytania możemy wprowadzać we wszystkich miejscach w poleceniu select. Musimy zwrócić uwagę na to co zwraca podzapytanie. 12
Towary o najwyższej cenie Należy nazwać rezultat wewnętrznego zapytania Z tabeli produkty, chcemy wyświetlić wszystkie produkty, które są czerwone. Lista klientów, którzy nic nie kupili Lista zamówień, które maja przypisany ID nieistniejący w tabeli klienci. 13
To samo tylko przy pomocy klauzuli join W podzapytaniu możemy użyć frazy where oraz możemy się odwoływać do zapytania zewnętrznego. Modyfikacja danych Dopisywanie wierszy Możemy to wpisać również w innej kolejności, możemy jakieś wartości nie podać, zostanie wstawiona wartość null (pusta). Mamy uproszczoną składnię, która pozwala na niepodawanie listy kolumn, ale trzeba podać wszystkie zgodnie z kolejnością w jakiej zostały zdefiniowane w tabeli, jest to rozwiązanie niewygodne, podatne na ewentualne problemy. Polecenie insert wielorekordowe: Kasowanie rekordów Delete table - usuwamy wszystkie rekordy 14
Najpierw robimy zapytanie select i sprawdzamy, które rekordy mają zostać usunięte. W drugim kroku zmieniamy polecenie na delete i bezpowrotnie kasujemy rekordy. Do usuwania możemy używać warunków odwołujących się do innych tabel: klauzula from Kasowanie całej tabeli bez wpisów w logach usunięcia poszczególnych rekordów. Jest szybsze. Modyfikacja wierszy Jeżeli chcemy zmieniać dane przy pomocy danych z innych tabel trzeba użyć zapytań zagnieżdżonych. Jest możliwe również przypisanie wartości atrybutu z innego rekordu tej samej tabeli: Zadanie Dodać kolumnę total do tabeli klienci kli. Zliczyć sumę zakupów z tabeli zamówień zam i wstawiać do kolumny total 15
16
Zalecane piśmiennictwo Elektroniczna wymiana danych w systemach logistycznych P. Zając oraz: Chwesiuk K., Aspekty prawne EDI, Materiały na IIKrajową Konferencję EDI, Łódź-Arturówek 1994 EANCOM w handlu i transporcie, Instytut Logistyki i Magazynowania 2007 ISO/IEC 9506-2 MMS Part 2; Protocol specification ISO/IEC 9506-1 MMS Part l; Sen'ice definition Komunikat AWIZO WYSYŁKI DESADV wersja 1.3 EANCOM 97/EDIFACT D.96A, Grupa Robocza EDI przy klubie ECR Polska, 2007 Kondratowicz L., EDI w logistyce transportu, Wydawnictwo Uniwersytetu Gdaoskiego, Gdaosk 1999 Kondratowicz L., Elektroniczna wymiana danych w handlu i transporcie morskim, Wydawnictwo Uniwersytetu Gdaoskiego, Gdaosk 1995 Korzeo Z.: Systemy komunikacji informacyjnej w automatyzacji procesów transportu bliskiego i magazynowania - charakterystyka trendów rozwojowych; Materiały V Konferencji Mechanizacja i automatyzacja procesów transportowo-magazynowych"; NOT - Oddział Poznao 2000 Leyland V., EDI Elektroniczna wymiana dokumentacji, Wydawnictwa Naukowo-Techniczne, Warszawa 1995 Michalski S., Molisz W., Różne możliwości realizacji usług EDI w sieciach TP S.A., Materiały na IV Krajową Konferencję EDI Miłosz M., Wpływ EDI na parametry dynamiczne sieci logistycznych, Materiały na IV Krajową Konferencję EDI Niedźwiedzioska H.: Badania naukowe i nauczania w zakresie EDI, Materiały na krajową konferencję EDI, T.1, Łódź Artówek, 1998 Norma Międzynarodowa ISO 9735-1988 17
18
19
20
21
22
23
24
25
26
27
28