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.
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
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.