GAJDAW


PROGRAMY

1 2 3 4 5 6


MVC w praktyce. Katalog Open Clip Art

Włodzimierz Gajda





3. Baza danych

Baza danych katalogu będzie zawierała dwie tabele: img oraz tag. Pierwsza z nich jest przeznaczona na obrazy, a druga na słowa kluczowe. Po połączeniu tabel img oraz tag relacją wiele do wielu w bazie danych pojawi się trzecia tabela o nazwie img_has_tag.

Po przygotowaniu modelu widocznego na rysunku 10, generujemy klasy dostępu do bazy danych. Wykorzystujemy do tego skrypt dbframe, który ułatwia połączenie aplikacji DBDesigner i Propel.

Rysunek 10. Struktura bazy danych

3.1 Wyzwalacze

Zliczanie liczby obrazów związanych z wybranym słowem kluczowym wykonujemy wykorzystując wyzwalacze (ang. triggers). Po wstawieniu rekordu do tabeli img_has_tag, czyli w obsłudze zdarzenia AFTER INSERT, zwiększamy liczbę obrazów związanych z tagiem. Kompletny kod wyzwalacza jest przedstawiony na listingu 1. Dzięki wyzwalaczowi, to serwer bazy danych odpowiada za aktualizację pola imgs_count w tabeli tag.

...brak dostępu...

Listing 1. Wyzwalacz zliczający liczbę obrazów związanych ze słowem kluczowym

3.2 Wypełnianie bazy danych

Wypełnianie bazy danych rozpoczynamy od ustalenia nazw wszystkich plików w formacie .svg. Skrypt get-file-list.php rekurencyjne przeszukuje folder z klipartem openclipart-0.18-full/clipart/ i ustala nazwy wszystkich plików o rozszerzeniu SVG. Pełna lista znalezionych plików jest zapisana do pliku files.txt.

Następnie otrzymana lista plików jest w skrypcie wstaw.php przetwarzana element po elemencie. Dla każdego elementu:

Do tabeli img wstawiamy obraz z odpowiednio ustalonymi ścieżkami, zaś do tabeli tag wstawiamy wszystkie słowa kluczowe obrazu. Wstawione słowa łączymy relacją n:m ze wstawionym obrazem.

Zrzut wypełnionej bazy danych, zawierający 42 227 rekordów, jest zapisany w pliku 1-dbframe/input/clipart.sql. Wypełnioną bazę danych możesz odtworzyć wykonując skrypt create-db-filled.bat.




1 2 3 4 5 6