Jedną z mniej znanych funkcji phpMyAdmin jest zarządzanie relacjami w bazie danych. Na małą popularność tej opcji wpływa konieczność przeprowadzenia dodaktowej konfiguracji aby była ona widoczna.
phpMyAdmin informacje o relacjach między tabelami przechowuje w tabelach w zdefiniowanej bazie danych. Dlatego najlepiej jest utworzyć oddzielną bazę danych, tylko na potrzeby phpMyAdmin. Domyślna nazwa bazy to phpmyadmin.
Aby utworzyć tabele niezbędne do dzialania zaawansowanych funkcji phpMyAdmin, wystarczy uruchomić instrukcje SQL znajdujące się w pliku scripts/create_tables.sql
w archiwum z phpMyAdmin. Skrypt ten zakłada, że istnieje użytkownik pma, z poziomu którego będzie odbywało się zarządanie danymi.
Skrypt:
- usuwa bazę phpmyadmin (jeżeli istnieje)
- zakłada ją ponownie
- nadaje prawa do wykonywania SELECT, INSERT, UPDATE i DELETE użytkownikowi pma w bazie phpmyadmin
- tworzy potrzebne tabele
Kolejnym krokiem jest uaktualnienie pliku config.inc.php
. Dla każdego z używanych serwerów, należy podać wartość zmiennych:
# nazwa bazy danych phpMyAdmin $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; # nazwa tabeli z opisem relacji $cfg['Servers'][$i]['relation'] = 'pma_relation';
Po przeprowadzeniu tych operacji, w interfejsie phpMyAdmin zobaczymy nową opcję: Widok relacyjny w widoku struktury tabeli:
Po wybraniu opcji "Widok relacyjny" otrzymujemy dostęp do formularza, w którym możemy zdefiniować relacje między tabelami:
Dla każdego pola tabeli, możemy zdefiniować, któremu polu w innej tabeli odpowiada. Robimy to wybierając odpowiednie pole z listy rozwijalnej. Dodatkowo, dla każdej tabeli możemy wybrać, zawartość którego pola będzie pokazywana jako etykieta rekordu.
Dla przykładu rozważmy takie dwie tabele, zawierające dane menedżera projektów.
Tabela project
- id - int(10)
- name - char(100)
Tabela item
- id - int(10)
- project_id - int(10)
- name - char(100)
W tabeli 'project' przechowujemy nazwy projektów, w tabeli 'item' - nazwy poszczególnych elementów projektów. Każdy 'item' ma przypisany także id projektu, do którego należy. Po wejściu do widoku relacyjnego tabeli 'item', dla pola 'project_id' należy wybrać pozycję 'project -> id' (co oznacza pole 'id' w tabeli 'project').
W widoku relacyjnym tabeli 'project' wybieramy wyświetlane pole: 'name'.
Dzięki temu, podczas edycji rekordu z tabeli 'item', zamiast pola tekstowego, dla 'id' zobaczymy listę rozwijalną, z której będzie można wybrać odpowiedni projekt:
W widoku tabeli danych, zawartość pól w kolumnie 'project_id' będzie odnośnikiem:
Po jego kliknięciu zobaczymy szczegóły odpowiedniego projektu.
Thanks for your insight for your fantastic posting. I’m glad I have taken the time to see this. Lefery
ReplyDelete