<h3>Wypełnianie bazy danych rekordami</h3>

<p>
Witryny internetowe udostępniające informacje pobierane
z bazy danych zazwyczaj posiadają interfejs,
pozwalający na wprowadzanie oraz edycję zawartości.
Wykorzystując formularze WWW administratorzy oraz redaktorzy
serwisu dodają do bazy danych nowe informacje, modyfikują
istniejące rekordy, czy wreszcie usuwają wpisy nieaktualne.
Dostęp do bazy danych jest ograniczony poprzez funkcjonalność formularzy w panelu administracyjnym,
co z jednej strony gwarantuje zachowanie spójności danych, z drugiej zaś &mdash;
szalenie ułatwia wprowadzanie danych.
W skrócie można powiedzieć, że redaktor edytujący treść nie ma do czynienia
z nic nie mówiącymi identyfikatorami rekordów w tabelach,
a z listami rozwijanymi, polami wyboru i innymi jasno podpisanymi kontrolkami formularzy.
</p>

<p>
Jednakże zanim doprowadzimy witrynę do takiego stanu czeka nas
żmudny proces projektowania, implementacji, usuwania błędów oraz testowania.
Trzeba  oprogramować formularze, przetestować zapytania SQL.
(Mam tutaj na myśli witryny, które programujemy samodzielnie od podszewki,
bez wykorzystania gotowych systemów CMS czy frameworków.)
I tak błędne koło się zamyka: jak mamy testować zapytania SQL skoro baza danych jest pusta?
</p>

<p>
Tutaj właśnie z pomocą przychodzi popularne narzędzie <span class="program">phpMyAdmin</span>.
Aplikacja ta jest napisana w języku PHP i służy do administracji bazami danych
serwera MySQL. Umożliwia ona między innymi tworzenie,
restrukturyzację oraz usuwanie baz danych i tabel,
wydawanie zapytań SQL,
edycję rekordów
oraz eksport bazy danych do kilku różnych formatów.
</p>

<p>
W artykule skupię się wyłącznie na następujących aspektach wykorzystania
aplikacji <span class="program">phpMyAdmin</span>: na dodawaniu oraz edycji rekordów,
wydawaniu zapytań SQL oraz eksporcie bazy danych w postaci skryptu SQL.
</p>

<p>
Omówiona baza danych umożliwia przechowywanie
informacji o filmach i ich twórcach.
Strukturę bazy danych opracowałem na podstawie
informacji publikowanych w czasopiśmie Film,
katalogu 
<a href="http://www.idvd.pl">Ekskluzywny katalog filmów DVD 2005
wydawanego przez firmę Credo</a>
oraz przewodnika Halliwell's Film &amp; Video Guide 2003.
Zaznaczam, że baza ta stanowi jedynie ilustrację
omówionej techniki pracy i nie powinna być traktowana
jako rozwiązanie wzorcowe.
</p>

#####{$frames[1]}#####

<h3>Model bazy danych <span class="variable">filmy</span></h3>

<p>
Pracę nad bazą danych rozpoczynamy od zaprojektowania modelu.
Wykorzystując aplikacje <span class="program">DBDesigner4</span> opracowujemy schemat bazy danych.
</p>

<p>
W obszarze roboczym umieszczamy kolejne tabele, relacje, regiony
oraz opisy tekstowe. Rozpoczynamy od tabel zawierających
dane o filmach, autorach, dystrybutorach oraz wytwórniach filmowych.
</p>

#####{$figures[1]}#####

<p>
Następnie dodajemy tabele przechowujące fotografie,
adresy WWW oraz informacje o nagrodach.
</p>

#####{$figures[2]}#####

<p>
Tak duża liczba tabel (siedemnaście) nie zmieści się na raz w obszarze roboczym
(bez pomniejszania widoku). Zatem część tabel przesuwamy wykorzystując do tego
okno nawigacyjne oznaczone literą A. Gdy model bazy danych jest ukończony,
generujemy skrypt SQL tworzący wszystkie tabele. Służy do tego przycisk podpisany literą B.
</p>

#####{$figures[3]}#####

<ul>
<li>A &mdash; okno nawigacyjne</li>
<li>B &mdash; generowanie skryptu SQL tworzącego bazę danych</li>
</ul>

<h3>Skrypt SQL tworzący bazę danych</h3>

<p>
W oknie dialogowym ustalamy właściwości skryptu SQL,
po czym kopiujemy skrypt do schowka.
</p>

#####{$figures[4]}#####

<p>
Teraz w edytorze tekstowym wklejamy wygenerowany skrypt.
Na górze dodajemy instrukcje odpowiedzialne za usunięcie i ponowne
utworzenie bazy danych, konwersję znaków oraz nadające uprawnienia odpowiednim użytkownikom:
</p>

<pre>
DROP DATABASE IF EXISTS filmy;
CREATE DATABASE filmy;
USE filmy;
SET NAMES latin2;
GRANT SELECT ON *.* TO reader@localhost IDENTIFIED BY '';
</pre>

<p>
po czym cały skrypt zapisujemy w pliku <span class="filename">filmy.sql</span>.
Po wydaniu komendy:
</p>

<pre>
c:\mysql\bin\mysql -uroot -palamakota &lt; filmy.sql
</pre>

<p>
baza danych zostanie utworzona. To kończy proces projektowania struktury
oraz tworzenie pustej bazy danych.
</p>

#####{$figures[5]}#####

#####{$frames[2]}#####

<h3><span class="program">phpMyAdmin</span>: wybór bazy danych</h3>

<p>
Teraz przechodzimy do programu <span class="program">phpMyAdmin</span>.
Uruchamiamy przeglądarkę
i odwiedzamy odpowiedni adres (instalacja aplikacji <span class="program">phpMyAdmin</span>
jak również serwera <span class="program">MySQL</span> została szczegółowo opisana w MI 12/2005).
Lista rozwijana podpisana literą A umożliwia wybór bazy danych,
z którą chcemy pracować.
</p>

#####{$figures[6]}#####

<p>
Po rozwinięciu listy wybieramy bazę danych o nazwie <span class="variable">filmy</span>.
</p>

#####{$figures[7]}#####

<p>
W ten sposób przejdziemy do okna prezentującego wszystkie tabele bazy danych filmy.
</p>

<h3>Menu bazy danych</h3>

<p>
Menu pionowe z lewej strony umożliwia szybki wybór
jednej z siedemnastu tabel zawartych w bazie, zaś menu poziome
dotyczy operacji na całej bazie danych: przeglądanie struktury,
wydawanie zapytań, wyszukiwanie czy eksport.
</p>

#####{$figures[8]}#####

<p>
Należy pamiętać, że poziome menu dostępne na górze witryny działa kontekstowo.
W zależności od tego, czy wybraliśmy tabelę czy bazę danych zobaczymy
różne opcje.
</p>

#####{$figures[9]}#####

<h3>Dodawanie rekordów do tabeli <span class="variable">tpanstwa</span></h3>

<p>
Z pionowego menu wybieramy tabelę <span class="variable">tpanstwa</span>.
Ujrzymy informacje dotyczące wybranej tabeli.
Przycisk <span class="option">Dodaj</span> oznaczony literą A służy do dodawania rekordów do tabeli.
</p>

#####{$figures[10]}#####

<p>
W oknie edycyjnym wprowadzamy pierwszy rekord.
Flaga państwa jest zapisana w pliku graficznym. Plik ten dodajemy
do bazy danych za pomocą przycisku <span class="option">Przeglądaj</span>.
</p>

#####{$figures[11]}#####

<h3>Przeglądanie zawartości tabeli <span class="variable">tpanstwa</span></h3>

<p>
Po dodaniu kilku państw przechodzimy
do okna wyświetlającego zawartość tabeli <span class="variable">tpanstwa</span>.
W tym celu naciskamy przycisk <span class="option">Przeglądaj</span>.
</p>

#####{$figures[12]}#####

<p>
Ikona <span class="option">Widok do wydruku</span> dostępna u dołu strony umożliwi wydrukowanie
zawartości tabeli w postaci czytelnej tabelki.
Wydruk taki znacznie ułatwi wypełnianie szczególnie pól będących kluczami obcymi.
</p>

#####{$figures[13]}#####

<h3>Wypełnianie tabeli <span class="variable">tosoby</span></h3>

<p>
Przechodzimy do wypełniania tabeli <span class="variable">tosoby</span>.
Po wybraniu tabeli z menu pionowego przejdziemy do strony prezentującej
strukturę tabeli.
</p>

#####{$figures[14]}#####

<p>
Po naciśnięciu przycisku <span class="option">Dodaj</span> pojawi się edytor,
za pomocą którego
możemy dodać do tabeli kolejny rekord. Wprowadzamy dane nowej osoby.
Uwaga na pole <span class="variable">idtpanstwo</span>,
które jest kluczem obcym z tabeli <span class="variable">tpanstwo</span>.
W polu tym należy wprowadzić identyfikator odpowiedniego
państwa z tabeli <span class="variable">tpanstwa</span>.
Identyfikator ten sprawdzamy na wydruku zawartości tabeli <span class="variable">tpanstwa</span>.
</p>

#####{$figures[15]}#####

<p>
Po dodaniu kilkunastu osób wyświetlamy zawartość tabeli <span class="variable">tosoby</span>.
W przypadku popełnienia błędu możemy ponownie wrócić do edycji wybranego rekordu.
Służą do tego ikony zawarte w drugiej i trzeciej kolumnie poniższej tabelki.
</p>

#####{$figures[16]}#####

<p>
Po naciśnięciu ikony <span class="option">Edytuj</span> przejdziemy do edycji wybranego rekordu.
</p>

#####{$figures[17]}#####

<p>
Gdy zakończymy dodawanie osób drukujemy zawartość całej tabeli <span class="variable">tosoby</span>.
Identyfikatory osób są kluczami obcymi w tabeli <span class="variable">tautor</span> ustalającej
autorów wybranego filmu.
</p>

#####{$figures[18]}#####

<h3>Wypełnianie rekordami tabeli <span class="variable">tfilmy</span></h3>

<p>
Przechodzimy do tabeli <span class="variable">tfilmy</span>.
Korzystając z edytora (przycisk <span class="option">Dodaj</span>)
wprowadzamy dane kolejnych filmów.
</p>

#####{$figures[19]}#####

<p>
Po dodaniu kilkunastu filmów:
</p>

#####{$figures[20]}#####

<p>
drukujemy zawartość tabeli.
</p>

#####{$figures[21]}#####

<h3>Wypełnianie kolejnych tabel</h3>

<p>
W podobny sposób wypełniamy (przynajmniej w części) pozostałe tabele.
Gdy baza danych zawiera już pewną ilość rekordów przechodzimy do przygotowywania
zapytań SQL. Wracamy do strony głównej bazy danych <span class="variable">filmy</span>.
Służy do tego odsyłacz oznaczony literą A.
Obszar oznaczony jako B zawiera ikony ułatwiające dodawanie, usuwanie oraz edycję rekordów
w konkretnych tabelach.
Przycisk C prowadzi do strony, za pomocą której wykonujemy zapytania SQL, zaś D &mdash;
do strony wykonującej eksport bazy danych.
</p>

#####{$figures[22]}#####

<h3>Wydawanie zapytań SQL</h3>

<p>
Przechodzimy do formularza wysyłającego zapytania SQL.
W polu tekstowym wprowadzamy treść zapytania,
po czym naciskamy przycisk <span class="option">Wykonaj</span>.
</p>

#####{$figures[23]}#####

<p>
Wyniki zwrócone przez bazę są prezentowane w postaci tabeli.
Oprócz odpowiedzi, na ekranie pojawia się wykonane zapytanie
oraz informacja o czasie przetwarzania.
</p>

#####{$figures[24]}#####

<h3>Eksport bazy danych</h3>

<p>
Na koniec wykonujemy eksport bazy danych.
Możemy wybrać tabele, jakich eksport dotyczy,
ustalić format eksportu oraz zapisać eksportowane dane do pliku.
</p>

#####{$figures[25]}#####

<p>
Po wykonaniu eksportu zawartość i struktura bazy danych zostają zapisane
w pliku tekstowym o rozszerzeniu <span class="filename">.sql</span>.
Plik taki możemy oczywiście przeglądać i modyfikować dowolnym edytorem tekstowym.
</p>

#####{$figures[26]}#####

#####{$tables[1]}#####

#####{$tables[2]}#####

#####{$tables[3]}#####

#####{$tables[4]}#####