|
POLITECHNIKA ŁÓDZKA WYDZIAŁ ELEKTROTECHNIKI I ELEKTRONIKI INSTYTUT MECHATRONIKI I SYSTEMÓW INFORMATYCZNYCH |
Studium : Dzienne
Kierunek : Elektrotechnika
Specjalność : Informatyka stosowana
PRACA INŻYNIERSKA
Temat:
PROJEKT SKLEPU INTENETOWEGO W OPARCIU O
JĘZYK SKRYPTOWY PHP ORAZ BAZĘ DANYCH MYSQL
Autor:
|
Nr albumu:
103770 |
Opiekun pracy:
|
Łódź, dn. 1.03.2004
Spis treści:
1. Wstęp
2. Omówienie sposobu rozwiązania zadania, uzasadnienie
2.1. Telefonia komórkowa trzeciej generacji UMTS
2.2. Język skryptowy PHP
2.3. Serwer baz danych MySQL
2.4. Serwer WWW Apache
3. Realizacja projektu
3.1. Założenia - wymagania co do użyteczności, bezpieczeństwa, itp.
3.2. Stworzenie bazy danych - opis.
3.3. Stworzenie strony internetowej - sklep, interfejs do obsługi bazy danych. Weryfikacja, testy.
4. Wnioski.
5. Literatura.
Wstęp.
Internet, jako medium bardzo szybko stał się częścią naszego życia. Szeroki wachlarz możliwości jaki oferuje użytkownikom powoduje, że już na stałe zagościł w wielu dziedzinach. Ogólnodostępność, łatwość oraz wygoda z korzystania zasobów Internetu są dziś głównymi atutami. Już nie trzeba wychodzić z domu aby dokonać transakcji bankowych, poszerzać swoją wiedzę ucząc się na nie tylko polskich uczelniach, czy uczestniczyć w ważnej konferencji, której odbycie się wymagałoby wielu środków w celu jej realizacji jak na przykład spotkanie sie uczestników w jednym miejscu, organizacja pomieszczeń itp.
Ze względu na wygodę i łatwość kontaktów z klientami Internet jest wręcz idealnym miejscem gdzie za pośrednictwem odpowiednio skonstruowanego systemu witryn WWW oferować można każdy rodzaj produktów w wirtualnym sklepie. Rozwiązanie takie nie jest ograniczone do określonych godzin otwarcia tradycyjnego sklepu - jest on czynny 24 godziny na dobę, siedem dni w tygodniu. Umożliwia zakupy klientom niepełnosprawnym, dla których samodzielne poruszanie sie po mieście może być wielką trudnością. Koszty prowadzenia wirtualnej działalności są znacznie mniejsze w porównaniu z tradycyjnymi sklepami, co może odzwierciedlać sie w atrakcyjności cenowej przedstawionych na witrynie WWW produktów.
Projektowi sklepu oferującemu produkty związane z telefonią komórkową trzeciej generacji UMTS poświęcona jest niniejsza praca inżynierska.
Omówienie sposobu rozwiązania zadania
System obsługi sklepu oparty zostanie na serwerze baz danych MySQL. Do komunikacji między bazą danych a stroną WWW wykorzystany będzie język skryptowy PHP. Sama prezentacja odbywać się za pomocą języka HTML w przeglądarce internetowej użytkownika.
Telefonia komórkowa trzeciej generacji UMTS
Język skryptowy PHP
PHP jest szeroko używanym językiem skryptowym działającym po stronie serwera. Na stronie HTML można osadzić kod PHP, który zostanie wykonany ilekroć strona jest odwiedzana. Kod PHP jest interpretowany przez serwer WWW i tworzy on HTML lub inne wyniki, które następnie są wysyłane do przeglądarki klienta.
PHP jest tworzone na zasadach Open Source. Oznacza to dostęp do jego kodu źródłowego, który można bezpłatnie wykorzystywać, zmieniać i redystrybuować.
2.2.1. Historia PHP
PHP wywodzi się ze starszego produktu, PHP/FI. PHP/FI został stworzony przez Rasmusa Lerdorfa w 1995 roku, wstępnie jako zestaw skryptów w Perl-u do śledzenia jego powrotów do bycia w sieci. Zestaw tych skryptów został nazwany „Personal Home Page Tools”. Kiedy wymagana była większa funkcjonalność, Rasmus pisał kolejną implementację w C, dzięki czemu pojawiła się zdolność do komunikacji z bazami danych i możliwość tworzenia przez użytkowników prostych dynamicznych aplikacji internetowych. Rasmus wybrał udostępnienie kodu źródłowego PHP/FI dla wszystkich, aby każdy mógł go używać, na tyle, na ile pozwalały błędy, oraz rozwijać kod.
PHP/FI oznaczał „Personal Home Page / Forms Interpreter”, zawierał niektóre z podstawowych funkcjonalności PHP, które są znane obecnie. Posiadał zmienne podobne do zmiennych z języka Perl, automatyczną interpretację zmiennych formularza oraz osadzoną składnię HTML. Jego własna składnia była podobna do tej z Perl-a aczkolwiek znacznie bardziej ograniczona, prostsza i w pewien sposób nielogiczna (niezgodna, sprzeczna, niekonsekwentna??).
Od roku 1997 PHP/FI 2.0, druga wersja implementacji C, miała kult, szacując kilku tysięcy użytkowników na całym świecie, co daje w przybliżeniu 50 tys. domen obsługujących tą wersję PHP, czyli ok. 1% domen w Internecie. Podczas gdy było kilka osób wnoszących wkład do kodu tego projektu, nadal był to projekt jednego człowieka.
PHP/FI 2.0 oficjalnie zostało oficjalnie wydane w listopadzie w 1997 roku, po spędzeniu większości jego życia w wydaniach wersji beta. Było to krótko po sukcesie pierwszych wersji alpha PHP 3.0.
2.2.2. PHP 3
PHP 3.0 był pierwszą wersją, która bliżej przypominała PHP znane dziś. Zostało stworzone przez Andi'ego Gutmans i Zeev'a Suraski w 1997 roku jako całkowicie przepisane, po tym jak znaleźli PHP/FI 2.0. Andi, Rasmus i Zeev zdecydowali się współpracować i ogłosić PHP 3.0 jako oficjalnego następcę PHP/FI 2.0, a prace nad PHP/FI 2.0 zostały zatrzymane.
Jedną z ogromnych zalet PHP 3.0 była bardzo rozszerzona funkcjonalność. Końcowy użytkownik otrzymał solidną infrastrukturę dla wielu różnych baz danych, protokołów i API, rozszerzone cechy PHP 3.0 zwróciły uwagę wielu (programistów) aby przyłączyć się i tworzyć nowe moduły rozszerzeń. Był to klucz do ogromnego sukcesu PHP 3.0. Inną właściwością wprowadzoną w PHP 3.0 było wsparcie dla obiektowo zorientowanej składni i znacznie bardziej potężna i logiczna zwięzła składnia języka.
Całkowicie nowy język został wypuszczony pod nową nazwą, to usunęło zamieszanie z ograniczonym użyciem prywatnej nazwy PHP/FI 2.0. Został on nazwany po prostu „PHP “, a skrót został zmieniony zgodnie z rekursywną konwencją nadawania nazw GNU (GNU = Gnu's Not Unix - Gnu Nie Unix) i oznacza obecnie PHP: Hypertext Preprocessor (PHP: Preprocesor Hipertekstu).
Do końca 1998 roku, PHP było używane przez dziesiątki tysięcy użytkowników (szacując) i było obsługiwane przez setki tysięcy stron. PHP 3.0 było zainstalowane na ok. 10% serwerów WWW w Internecie.
PHP 3.0 zostało oficjalnie wydane w czerwcu 1998 roku, po 9 miesiącach publiczne testowania.
2.2.3. PHP 4
Do zimy 1998 roku, krótko po oficjalnym wydaniu PHP 3.0 Andi Gutmans i Zeev Suraski zaczęli pracę nad przepisywaniem rdzenia PHP. Celem projektu było zwiększenie wydajności wszystkich aplikacji oraz zwiększenie modularności kodu bazowego PHP. Wykonanie niektórych aplikacji było możliwie przy pomocy najnowszych właściwości PHP i wsparcia dla różnorodnych baz danych oraz API, lecz PHP 3.0 nie było zaprojektowane aby skutecznie podołać tak złożonym operacjom
W nowym silniku „Zend” (nazwa pochodzi od imion twórców Zeev i Andi) powyższe cele zostały osiągnięte i po raz pierwszy został on zaprezentowany w 1999 roku. PHP 4.0 bazował na tym silniku oraz połączony był z wieloma nowymi dodatkowymi rozwiązaniami, został oficjalnie wydany w maju 2000 roku, prawie dwa lata po wydaniu jego poprzednika, PHP 3.0. W dodatku wysoko zwiększonej wydajności tej wersji, PHP 4.0 zawierało inne ważne właściwości takie jak wsparcie dla większej ilości serwerów WWW, sesje HTTP, buforowanie wyjścia, więcej bezpiecznych sposobów wprowadzania danych przez użytkownika oraz kilka nowych konstrukcji języka.
PHP 4.0 jest obecnie najnowszą wersją PHP. Praca już się zaczęła nad modyfikowaniem i unowocześnianiem silnika Zend, aby zintegrować jego właściwości, które były zaprojektowane dla PHP 5.0.
Dziś PHP jest używane przez setki tysięcy programistów (w przybliżeniu) i jest wykorzystywane na kilku milionach stron, co daje ok. 20% domen w Internecie.
Zespół twórców PHP składa się z kilkudziesięciu programistów oraz kilkudziesięciu innych osób pracujących nad projektami połączonymi z PHP, jak np. PEAR czy dokumentacja projektu.
2.2.4. PHP 5
Przyszłość PHP jest głównie uzależniona od jego rdzenia, silnika Zend. W PHP 5.0 będzie zwarty nowy silnik Zend 2.0. Więcej informacji na jego temat można znaleźć na stronie www.zend.com/zend/future.php.
Zalety PHP
Do głównych konkurentów PHP należą: Perl, Microsoft Active Server Pages (ASP), Java Server Pages (JSP) i Allaire Cold Fusion.
W porównaniu z tymi produktami PHP posiada wiele zalet, m. in.:
Wysoka wydajność
Interfejsy do wielu różnych systemów baz danych
Wbudowane biblioteki służące do rozwiązywania różnych popularnych zadań WWW
Niski koszt
Łatwość nauki i wykorzystania
Przenośność
Dostępność kodu źródłowego
Poniżej znajduje się szczegółowy opis tych zalet:
2.2.5. Wydajność
PHP jest bardzo wydajny. Za pomocą pojedynczego niedrogiego serwera można obsłużyć wiele odwiedzin dziennie. Testy wydajności opublikowane przez Zend Technologies (http://www.zend.com) świadczą o znacznej przewadze PHP w tej dziedzinie.
2.2.6. Integracja z bazami danych
PHP umożliwia bezpośrednią obsługę połączeń z wieloma systemami baz danych. Oprócz MySQL należą do nich PostgreSQL, mSQL, Oracle, dbm, filePro, Hyperwave, Informix, InterBa, Sybase i wiele innych.
Za pomocą ODBC (Open Database Connectivity Standard - Otwarty Standard Łączności z Bazami Danych) można łączyć się z dowolną bazą danych posiadającą sterownik ODBC. Zalicza się do nich m. in. produkty Microsoftu, a także wiele innych.
2.2.7. Wbudowane biblioteki
Ponieważ PHP został zaprojektowany do stosowania w sieci WWW, posiada wiele wbudowanych funkcji służących do wykonywania zadań z nią związanych. Za pomocą zaledwie kilku linii kodu możliwe jest tworzenie „w locie” obrazków GIF, łączenie z innymi usługami sieciowymi, wysyłanie poczty elektronicznej, praca z cookies oraz generowanie dokumentów PDF.
Koszt
PHP jest bezpłatne. Można w dowolnym momencie pobrać najnowszą wersję ze strony www.php.net bez żadnych opłat.
2.2.8. Nauka PHP
Składnia PHP jest oparta na innych językach programowania, zwłaszcza C i Perlu. Osoby znające wcześniej C lub Perla (lub inny, podobny język, taki jak C++ lub Java) mogą posługiwać się PHP niemal od zaraz.
2.2.9. Przenośność
PHP jest dostępne dla wielu systemów operacyjnych. Kod PHP może być tworzony na darmowym, podobnym do Unixa systemie operacyjnym, takim jak Linux i FreeBSD, na komercyjnych wersjach Unixa, takich jak Solaris i IRIX, oraz na różnych wersjach Microsoft Windows.
Kod zazwyczaj będzie działał, bez konieczności dokonywania zmian, w różnych systemach obsługujących PHP.
2.2.10. Kod źródłowy
Użytkownik posiada dostęp do kodu źródłowego PHP. Inaczej niż w przypadku programów komercyjnych, nie ma przeciwwskazań, jeżeli zachodzi konieczność modyfikacji lub dodania własności do języka.
Nie jest konieczne oczekiwanie, aż producent udostępni programy korygujące. Nie ma również znaczenia, że zaprzestanie działalności lub zdecyduje się na zakończenie obsługi programu.
Serwer baz danych MySQL
MySQL jest najbardziej popularnym systemem zarządzania relacyjnymi bazami danych (relational database management system - RDBMS) na świecie. Jego architektura powoduje, że jest on niezwykle szybki, łatwy w obsłudze i konfiguracji.
MySQL rozpowszechniany może być jako produkt open source lub oprogramowanie komercyjne. Dostępny bez opłaty licencyjnej jest wydawany pod licencją GNU General Public License (GPL). Licencja komercyjna jest dostępna od twórców MySQL-a, firmy MySQL AB.
Strona internetowa MySQL-a www.mysql.com zawiera najświeższe informacje o MySQL-u i firmie MySQL AB oraz aktualną wersję oprogramowania.
Dostępne są cztery wersje serwera baz danych:
MySQL Standard zawiera standardowy mechanizm składowania MySQL oraz mechanizm składowania InnoDB. InnoDB jest mechanizmem składowania obsługującym bezpieczne transakcjeTa wersja jest dla użytkowników, którzy chcą wysoko-wydajnej bazy danych MySQL z pełnym wsparciem dla transakcji. MySQL Standard jest wydawany na licencji GPL.
MySQL Pro jest komercyjną wersją serwera zawierającego te same cechy.
MySQL Max jest dla użytkowników, którzy chcą szybkiego dostępu nowych właściwości. Ta wersja zawiera standardowy mechanizm składowania MySQL, mechanizm składowania InnoDB oraz inne dodatkowe jak baza danych Berkeley (Berkeley database - BDB) i wsparcie dla rozdzielania tabel pośród różne pliki, aby uniknąć ograniczeń w wielkości plików ustanowionych przez system operacyjny. W przyszłych wydaniach MySQL Max będzie zawierał więcej najnowszych rozwiązań i właściwości.
MySQL Pro jest komercyjną wersją serwera MySQL Standard zawierającą wsparcie dla InnoDB.
MySQL Classic zawiera tylko standardowy mechanizm przechowywania danych i różni się od wersji Pro i Standard tylko przez pominięcie mechanizmu InnoDB. Jest tylko dostępna pod licencją komercyjną.
2.3.1. MySQL - systemem zarządzania relacyjnymi bazami danych
Baza danych jest układem zbioru danych. Może to być prosta lista zakupów lub olbrzymia ilość informacji w sieci korporacyjnej. Aby dodawać, mieć dostęp i przetwarzać dane zgromadzone w komputerowej bazie danych, potrzeba systemu zarządzania bazą danych. Odkąd komputery radzą sobie bardzo dobrze z przetwarzaniem dużych ilościami danych, systemy zarządzania bazą danych odgrywają główną rolę w obliczeniach, jako pojedyncze urządzenia lub jako części innych aplikacji.
Relacyjna baza danych przechowuje dane w odrębnych tabelach lepiej niż poprzez umieszczenie wszystkich danych w jednej miejscu. To rozwiązanie powoduje wzrost szybkości i elastyczności. Skrót SQL w nazwie MySQL oznacza “Structured Query Language” - strukturalny język zapytań. SQL jest najbardziej rozpowszechnionym ustandaryzowanym językiem używanym do dostępu do baz danych i jest zdefiniowany przez ANSI/ISO SQL Standard.
2.3.2. Oprogramowanie MySQL jest Open Source
Open Source oznacza, że każdy może używać i modyfikować oprogramowanie. Każdy może pobrać oprogramowanie MySQL z Internetu nic z nie nie płacąc. Można poznać kod źródłowy i zmienić go według własnych potrzeb. Oprogramowanie MySQL używa licencji GPL (GNU General Public License, www.fsf.org/licenses), określa ona co można i czego nie można robić z oprogramowaniem w różnych sytuacjach. Jeśli potrzeba osadzonego kodu, MySQL w komercyjnych aplikacjach, można kupić komercyjną wersję.
2.3.3. Dlaczego używać serwera baz danych MySQL?
Serwer baz danych MySQL jest bardzo szybki, solidny i łatwy w użyciu. Serwer MySQL również posiada praktyczny zestaw cech zaprojektowanych w bliskiej współpracy z jego użytkownikami. Można znaleźć porównanie wydajności serwera MySQL z innymi systemami zarządzania bazami danych na stronie internetowej z testami. Serwer MySQL został pierwotnie zaprojektowany, aby podołać wielkim bazom danych dużo szybciej niż istniejące rozwiązania i jest skutecznie używany w bardzo wymagających środowiskach produkcyjnych od kilku lat. Pomimo ciągłego rozwoju, serwer MySQL oferuje dziś bogaty i użyteczny zestaw funkcji. Jego zdolność połączeń, szybkość i bezpieczeństwo powodują, że serwer MySQL jest świetnie przystosowany do dostępu do baz danych poprzez Internet.
2.3.4. Właściwości serwera MySQL
2.3.4.1. Wsparcie dla składni ANSI SQL
Serwer baz danych MySQL wspiera szeroki zestaw składni ANSI SQL 99 z dodatkowymi rozszerzeniami takimi jak wyrażenie REPLACE i warunek LIMIT dla SELECT oraz DELETE.
Wspierane są również alternatywne składnie z innych systemów baz danych, aby łatwiej tworzyć aplikacje-porty. Pokrycie całkowitej składni ANSI SQL rozwija się, wraz z wersją 4.0 wprowadzając wsparcie dla wyrażenia UNION.
2.3.4.2. Wsparcie dla wielu platform
Dostępne są programy binarne na wiele różnych platform systemowych włączając Linuksa, Microsoft Windows, FreeBSD, Sun Solaris, AIX IBM-a, Mac OS X, HP-UX, AIX, QNX, Novell Netware, SCO OpenUnix, SGI Irix i Dec OSF. Z serwerem MySQL można połączyć się ze wszystkich głównych platform, używając prawie każdego języka programowania.
2.3.4.3. Niezależne mechanizmy przechowywania
Wyjątkowe mechanizmy przechowywania serwera baz danych MySQL pozwalają na wybór najwłaściwszego typu bazy danych w zależności od potrzeb. Jeśli potrzeba szeregowo poziomu blokowania i wsparcia dla transakcji można użyć mechanizmu przechowywania InnoDB. Jeśli aplikacja nie wymaga transakcji można użyć mechanizmu przechowywania MyISAM dla największej wydajności.
2.3.4.4. Transakcje
Używając mechanizmu przechowywania InnoDB lub Berkeley DB (BDB) serwer MySQL wspiera transakcje. Mechanizm przechowywania InnoDB wspiera także wymuszanie obcego klucza.
2.3.4.5. Elastyczny bezpieczny system, zawierający wsparcie dla SSL
Serwer baz danych MySQL posiada zaawansowany system zezwoleń i bezpieczeństwa, zawiera wsparcie dla szyfrowania warstwy transportowej SSL. Od wersji 4.0 system bezpieczeństwa pozwala także ograniczyć zasoby serwera na podstawie użytkownika.
2.3.4.6. Korzystanie z pamięci cache w zapytaniach
Wersja 4.0 serwera zawiera nową pamięć podręczną cache zapytań, która może znacznie zwiększyć wydajność częstych zapytań, bez wymagania żadnego specjalnego oprogramowania. Wydajność może być zwiększona ponad 200% w typowych zastosowaniach.
2.3.4.7. Pełno tekstowe indeksowanie i wyszukiwanie
Pełno tekstowe indeksowanie pozwala wyszukiwać pola zawierające tekst dla określonych słów i wyrażeń, włączając rankingi związku z zapytaniem. Razem z wersją 4.0 rozszerzono wyszukiwanie pełnych tekstów włączając dokładne dopasowanie wyrażenia i boolowskie operatory wyszukiwań, które pozwalają na jeszcze lepszą kontrolę wyników wyszukiwania.
2.3.4.8. Osadzona biblioteka bazy danych
Używając osadzonej biblioteki bazy danych (libmysqld) można wykorzystać pełną moc serwera baz danych MySQL w aplikacjach oraz urządzeniach elektronicznych bez świadomości końcowego użytkownika na temat zasadniczej bazy danych. Osadzona baza danych jest idealna w zastosowaniach internetowych, publicznych sklepach, jednostkach sprzętowo-programowych, wysokowydajnych serwerach internetowych, bazach danych zawartych na płytach CD-ROM oraz w wielu innych.
2.3.4.9. Testy wydajności i porównanie właściwości
Twórcy MySQL starają się, aby ich produkt był jak najlepszy, opracowali program testujący wydajność ANSI SQL Standard Scalable And Portable (AS3AP). Wyniki można obejrzeć i porównać na stronie internetowej www.mysql.com/information/benchmarks.html lub pobrać program testujący wydajność i przeprowadzić własny test.
2.3.4.10. Wnętrze systemu MySQL
- Napisany w C i C++
- Testowany na szerokim zakresie różnych kompilatorów
- Używapoleceń GNU automake, autoconf i libtool
- API dla C, C++, Eiffel, Java, Perl, PHP, Python, Ruby i Tcl są dostępne.
- Pełna wielowątkowość używając wątków jądra. Oznacza to łatwe wykorzystanie wielu procesorów jeśli są dostępne.
- Dostarcza transakcyjnych i nietransakcyjnych mechanizmów przechowywania.
- Używa bardzo szybkich B-tree disk tabels (MyISAM) z kompresją indeksów.
- Stosunkowo łatwo do dodania innego mechanizmu przechowywania.
- Bardzo szybki, bazujący na wątkach system alokacji pamięci.
- Wewnątrz pamięciowe 'posiekane' (hash) tabele używane do tabel tymczasowych.
- Funkcje SQL są zaimplementowane poprzez wysoko zoptymalizowaną bibliotekę klas.
- Kod MySQL jest testowany przez narzędzie Purify (komercyjny wykrywacz wycieków pamięci) tak dobrze jak przez Valgrind, narzędzie na licencji GPL.
- Dostępny jako klient/serwer lub wersja osadzona wersja.
2.3.4.10.1. Typy kolumn
- Wiele typów kolumn: całkowite, całkowite nieujemne o dlugości 1, 2, 3,
4 i 8 bajtów, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME,
DATETIME, TIMESTAMP, YEAR, SET i ENUM .
- Rekordy o stalej i zmiennej dlugości.
2.3.4.10.2. Polecenia i funkcje
- Pełne wsparcie dla operatora i funkcji w warunkach zapytań dla SELECT i WHERE.
- Pełne wsparcie dla warunków SQL GROUP BY i ORDER BY. Wsparcie dla grup funkcji (COUNT(), COUNT(DISTINTC ...), AVG(), STD(), SUM(), MAX(), MIN() i GROUP_CONCAT()).
- Wsparcie dla LEFT OUTER JOIN i RIGHT OUTER JOIN w standardach składni SQL i ODBC.
- Wsparcie dla aliasów tabel i kolumn wymaganach tak jak w SQL-92.
- Polecenia DELETE, INSERT, REPLACE i UPDATE zwracają liczbę wierszy, które zostały zmienione.
- Specyficzne dla MySQL-a polecenie SHOW używane jest do wyszukiwania informacji o bazach danych, tabelach i indeksach. Polecenie EXPLAIN używane jest do ustalania jak optymizer rozwiązuje zapytania.
- Nazwy funkcji nie kolidują z nazwami tabeli lub kolumn, np. ABS jest prawidłową nazwą kolumny.
- Można mieszać tabele z różnych baz danych w jednym zapytaniu.
2.3.4.10.3. Bezpieczeństwo
- System przywilejów i haseł jest bardzo elastyczny i bezpieczny, pozwala na kontrolę na podstawie hosta. Hasła są bezpieczne, ponieważ cały ruch haseł jest zaszyfrowany, kiedy następuje połączenie z serwerem.
2.3.4.10.4. Skalowalność i ograniczenia
- Radzi sobie z dużymi bazami danych. Producenci MySQL używają serwera MySQL z bazami danych zawierającymi 50 milionów rekordów. Znają użytkowników, którzy używają serwera MySQL z 60 tysiącami tabel i ok. 5 miliardami wierszy.
- Dozwolone są więcej niż 32 indeky na tabelę. Każdy indeks może składać się z 1 do 16 kolumn lub części kolumn. Maksymalna szerokość indeksu to 500 bajtów (można zmienić tą wartość podczas kompilacji serwera MySQL). Indeks może używać prefiksu z kolumny CHAR lub VARCHAR.
2.3.4.10.5. Połączenia
- Klienci mogą łączyć się z serwerem MySQL używając gniazd TCP/IP na każdej platformie. Na systemach Unix, klienci mogą łączyć się używając uniksowych plików domen gniazd.
- Interfejs Connector/ODBC dostarcza wsparcia MySQL dla programów klientów, którzy używają polączeń ODBC (Open-DataBase-Connectivity). Np. można użyć MS Access aby połączyć się z serwerem MySQL. Klienci mogą używać Windowsa lub Unixa. Zródło Connector/ODBC są dostępne. Wszystkie funkcje ODBC 2.5 są wspierane, tak jak wiele innych.
2.3.4.10.6. Lokalizacja
- Serwer umożliwia wyświetlanie komunikatów błędów dla klientów w wielu językach.
- Pełne wsparcie dla kilku różnych zestawów znaków, właczając ISO-8859-1 (Latin1), german, big5, ujis i inne.
- Wszystkie dane są zapisane w wybranym zestawie znaków. Wszystkie porównania dla kolumn normalnego ciągu znaków są niewrażliwe na wielkość znaków.
- Sortowanie jest wykonane zgodnie z wybranym zestawem znaków. Nie można zmienić go, kiedy serwer MySQL jest juz uruchomiony. Serwer MySQL wspiera wiele różnych zestawów znaków, które mogą być określone przy kompilacji i uruchomieniu.
2.3.4.11. Klienci i narzędzia
Serwer MySQL posiada wbudowane wsparcie dla wyrażeń SQL do sprawdzania, optymalizowania i naprawiania tabel. Wyrażenia są dostępne z linii poleceń poprzez klienta 'mysqlcheck'. MySQL również zawiera 'myisamchk', bardzo szybkie narzędzie linii poleceń do wykonywania tych operacji na tabelach MyISAM.
2.3.4.12. Plany rozwoju
2.3.4.12.1. Obsługa zbioru znaków z pełnym wsparciem Unicode
Podczas gdy wcześniejsze wersje serwera baz danych mogły być skonfigurowane do wspierania określonego zestawu znaków, wersja 4.1 dodaje wsparcie dla różnych zbiorów znaków, które mogą być ustawione w serwerze, bazie danych, tabeli lub na poziomie pola tak dobrze jak ulepszone jest wsparcie dla konwertowania pomiędzy zestawami znaków. Nowe zbiory znaków zostały dodane dla przechowywania danych Unicode w kodowaniu UCS2 i UTF8.
2.3.4.12.2. Rozszerzone wsparcie dla podzapytań
Podzapytania pozwalają używać wyniku jednego zapytania jako składnik większego zapytania. Serwer MySQL już wspiera niektóre formy tej techniki, takie jak INSERT INTO ... SELECT ... i wsparcie to bedzie poszerzone w wersji 4.1 aby zawrzeć zagnieżdżone zapytania SELECT, które są jednymi z bardziej pożądanych nowych właściwości przez użytkowników.
2.3.4.12.3. GIS (Geometrical data - dane geometryczne)
Wersja 4.1 zawiera wsparcie dla podzestawu z SQL92 ze środowiskiem Typów Geometrii (Geometry Types) zaproponowanym przez Open GIS Consortium. Pozwala to na efektywne przechowywanie i manipulowanie danymi przestrzennymi, włączając dane geograficzne.
2.3.4.12.4. Replikacja multi-master
Replikacja multi-master będzie pozwalała serwerowi “slave” baz danych na śledzenie danych w wielu bazach danych “master“.
2.3.4.12.5. Widoki
Widoki pozwalają na konfigurowanie alternatywnych podglądów istniejących tabel bez zmieniania zasadniczej struktury tabeli. Mogą być użyte do nadawania limitowanego dostępu do tabel lub do łatwiejszego konstruowania pewnych typów zapytań. Widoki są obecnie zaplanowane w wersji 5.1.
Realizacja projektu
Cel i przeznaczenie
Projekt zakłada stworzenie sieciowej bazy danych oraz interfejsu dla sklepu internetowego, oferującego sprzęt i urządzenia przeznaczone do pracy w sieciach telefonii komórkowej trzeciej generacji - UMTS. Baza danych umożliwi przeglądanie oferty, rejestrację klientów oraz dokonywanie przez nich zakupów poprzez sieć Internet.
Współpraca języka PHP, serwera MySQL i przeglądarki klienta
Tradycyjna komunikacja pomiędzy przeglądarką klienta a serwerem WWW jest przedstawiona na schemacie poniżej. Przeglądarka wysyła żądanie do serwera, serwer odpowiada wysyłając stronę WWW do przeglądarki. Tak generowane strony są statyczne.
Rysunek 3.1. Relacja klient-serwer między przeglądarką i serwem WWW
Komunikacja klient-serwer w systemach opartych na bazach danych mają bardziej złożoną strukturę.
Rysunek 3.2. Architektura internetowej bazy danych oprócz przeglądarki i serwera WWW zawiera interpreter PHP oraz serwer MySQL.
Działanie powyższego schematu można przedstawić za pomocą sześciu kroków.
Przeglądarka internetowa użytkownika wysyła żądanie udostępnienia określonej strony WWW.
Serwer WWW przyjmuje zapytanie, odnajduje właściwy plik i przekazuje go do interpretera PHP.
Interpreter przetwarza skrypt, wewnątrz którego zawarte są polecenia połączenia z bazą danych i wysłania do niej określonego zapytania.
Serwer MySQL przyjął zapytanie, przetworzył a wynik wysyła spowrotem do interpretera PHP.
Interpreter otrzymał dane z serwera MySQL i kończy przetwarzać skrypt w wyniku czego postacią wyjściową jest strona w formacie HTML, przesyła ją do serwera WWW.
Serwer WWW przesyła stronę w HTML-u do przeglądarki użytkownika. Przeglądarka wyświetli tylko kod HTML.
Zazwyczaj funkcję serwera WWW, interpretera PHP oraz serwera MySQL pełni jeden komputer, jednak spotyka się rozwiązania gdzie ze względów bezpieczeństwa lub dla odciążenia obu komputerów, serwer baz danych pracuje na innej maszynie. Od strony klienta sposób działania całego systemu będzie niezauważalny, może zwiększyć się jego wydajność.
Zadania realizowane w projekcie
Użytkownicy, zarejestrowani bądź nie, będą mogli przeglądać produkty według kategorii.
Użytkownicy zalogowani - “klienci” oprócz przeglądania oferty sklepu będą mieli możliwość opiniowania produktów, wybrania ich z kategorii, a następnie złożenia zamówienia na nie. Będąc użytkownikiem zarejestrowanym, “klient” ma dostęp do swoich danych osobowych, zmiany hasła oraz historii zamówień.
Część administracyjna bazy pozwoli na zakładanie kont pracownikom sklepu, zarządzanie nimi, dodawanie i edytowanie kategorii oraz produktów, a także podgląd zamówień, informacji o klientach i pracownikach.
Będzie również istniała możliwość przeszukiwania zawartości bazy danych.
Użytkownicy systemu
Projekt sklepu internetowego uwzględniał będzie następujące grupy użytkowników:
“gość” - jest to użytkownik niezalogowany, ma najmniejsze uprawnienia, może tylko przeglądać ofertę sklepu lub wyszukiwać określone produkty poprzez wyszukiwarkę,
“klient” - jest zalogowanym użytkownikiem, posiada swoje konto, może dokonywać zakupów, wyrażać swoje opinie o produktach, również może korzystać z wyszukiwarki produktów,
“magazynier” - jest pracownikiem sklepu, który może aktualizować bazę danych produktów oraz ma dostęp do informacji o zamówieniach, zasięg wyszukiwania obejmuje produkty oraz zamówienia,
“kierownik” - pracownik sklepu, posiada te same uprawnienia jak “magazynier” poszerzone jednak o dodawanie nowych pracowników, podgląd i edycję istniejących (“kierownik” ma możliwość zakładania kont tylko z grup “magazynier” i “kierownik”, nie ma dostępu do wszystkich informacji o pracownikach z grupy “administrator”) oraz wyszukiwanie w kategoriach: produkty, zamówienia i pracownicy,
“administrator” - pracownik najbardziej uprzywilejowany, jego prawa obejmują możliwości pracowników “magazyniera” i “kierownika” oraz podgląd informacji o klientach sklepu i wyszukiwanie klientów w bazie danych, posiada dostęp do informacji o wszystkich pracownikach.
Schemat funkcjonalny systemu
Przewidziane są trzy grupy użytkowników witryny sklepu internetowego: “goście”, “klienci” oraz pracownicy, których można podzielić na trzy kolejne podgrupy: “magazynier”, “kierownik” i “administrator”. Z uwzględnieniem ich praw w korzystaniu z różnych modułów wiążą się odrębne schematy poruszania się ww. użytkowników w systemie.
Rysunek 3.3. Widok systemu od strony nie zalogowanego użytkownika “gość” oraz zalogowanego klienta.
Rysunek 3.4. Widok systemu sklepu internetowego dla użytkownika “administrator”.
Rysunek 3.5. Widok systemu sklepu internetowego dla użytkowników “kierownik” i “magazynier”.
Następny rozdział
26
26
Przeglądarka
Serwer WWW
Interpreter PHP
Serwer MySQL
1
6
2
3
5
4
Intro
Strona główna
Gość - nie zalogowany
Rejestracja
Przypomnienie hasła
Przeglądanie kategorii
Lista produktów
Opis produktu
Wyszukiwanie produktów
Kontakt
Pomoc
Intro
Strona główna
Logowanie
Klient
Historia zamówień
Zmiana danych klienta
Podgląd koszyka
Zaopiniuj produkt
Pomoc
Dodaj do koszyka
Opis produktu
Zmiana hasła
Szukanie produktów
Wylogowanie
Kontakt
Przeglądanie kategorii
Lista produktów
Kategorie
Wyszukiwanie
Administrator
Podgląd zamówień
Podgląd klientów
Podgląd pracowników
Dodanie pracownika
Wylogowanie
Zmiana hasła
Edycja pracownika
Usunięcie pracownika
Zarządzanie zamówieniami
Produktów
Zamówień
Pracowników
Klientów
Edycja kategorii
Usunięcie kategorii
Dodanie kategorii
Produkty
Edycja produktu
Usunięcie produktu
Dodanie produktu
Podgląd produktu
Logowanie
Intro
Strona główna
Zmiana danych osobowych
Kierownik
Logowanie
Intro
Strona główna
Kategorie
Edycja kategorii
Usunięcie kategorii
Dodanie kategorii
Produkty
Edycja produktu
Usunięcie produktu
Dodanie produktu
Podgląd produktu
Wyszukiwanie
Produktów
Zamówień
Pracowników
Podgląd zamówień
Podgląd pracowników
Dodanie pracownika
Wylogowanie
Zmiana hasła
Edycja pracownika
Usunięcie pracownika
Zarządzanie zamówieniami
Zmiana danych osobowych
Intro
Strona główna
Logowanie
Magazynier
Kategorie
Edycja kategorii
Usunięcie kategorii
Dodanie kategorii
Produkty
Podgląd produktu
Edycja produktu
Usunięcie produktu
Dodanie produktu
Wyszukiwanie
Produktów
Zamówień
Podgląd zamówień
Zarządzanie zamówieniami
Zmiana danych osobowych
Zmiana hasła
Wylogowanie
Przeglądarka
Serwer WWW
Żądanie
Odpowiedź