Ćwiczenia w PHP i SQL - Portal Sakila

Niniejszy wpis jest pewnego rodzaju "instrukcją" prowadzącą do zbudowania portalu obsługującego wypożyczalnię wideo - Sakilę. Portal ten bazuje na testowej bazie danych Sakila (tutaj zip), z której korzystam podczas zajęć związanych z bazami danych. Przy każdej liście zadań znajduje się zaznaczenie, które metody spośród CRUD są implementowane w zadaniach na liście.

(Lista jest w trakcie tworzenia. Data ostatniej aktualizacji: 02.11.2023.)

Lista 1: wyświetlanie informacji podstawowych (cRud)

  1. Utwórz plik index.php wyświetlający listę filmów w bazie. Każdy film powinien być linkiem do pliku film.php, wysyłającym metodą GET (ale nie formularzem!), który film wyświetlić.
  2. Utwórz plik film.php. Plik ten powinien wyświetlić informacje o wybranym filmie (parametr wysłany metodą GET) - tytuł, opis, rating, długość. Następnie należy wyświetlić kategorie, do których film należy (każda kategoria "klikalna" - link do category.php wyświetlającego szczegóły kategorii), oraz obsadę (lista/tabela aktorów, każdy "klikalny" - link do actor.php wyświetlającego szczegóły aktora).
  3. Utwórz plik actor.php. Plik ten powinien wyświetlić szczegóły dotyczące aktora: imię i nazwisko, liczbę filmów, w których grał. Poniżej powinna być przedstawiona lista filmów, w których grał (każdy tytuł "klikalny" jak w p. 2).
  4. Utwórz plik category.php. Plik ten powinien wyświetlać szczegóły kategorii: nazwę, liczbę filmów w tej kategorii i ich listę (każdy tytuł "klikalny" jak w p. 2).

W tym momencie powinno być możliwe przeglądanie listy filmów, szczegółów o filmach, aktorach i kategoriach.

Czytaj dalej

Konfiguracja interfejsów sieciowych w Linuksie z wykorzystaniem netplanu

Netplan jest narzędziem zarządzającym konfiguracją wszelkich aspektów konfiguracji sieci komputerowych podłączonych do urządzenia z systemem Linux. System Ubuntu zaadaptował to narzędzie w wersji 17.10 Artful Aardvark (Pomysłowy Mrównik) i od tamtej pory należy z niego korzystać, aby „trwale” skonfigurować sieć w systemie.

Dzięki netplanowi możliwe jest:

  • konfigurowanie tylko podanych interfejsów / urządzeń (te niewymienione w pliku konfiguracyjnym nie są "ruszane"),
  • wykorzystanie sieci w ekstremalnie okrojonym systemie (wręcz na etapie initramfs),
  • bardzo szybka zmiana konfiguracji, ponieważ jest ona ustalana przy starcie systemu i tracona przy restarcie (efemeryczna),
  • możliwe jest generowanie maszyn wirtualnych / kontenerów z zadaną konfiguracją sieciową jedynie poprzez dodanie pliku konfiguracyjnego do jej plików.
Czytaj dalej

Ograniczenia modelu relacyjnego. Rodzaje kluczy w relacyjnych bazach danych

Tworząc schematy baz danych, możemy korzystać z narzucanych przez model relacyjny ograniczeń, aby system baz danych "pilnował nas" podczas pracy z przechowywanymi w bazie danymi.

Ograniczenia modelu relacyjnego możemy podzielić na trzy grupy:

  1. ograniczenia oparte na modelu danych, wynikające wprost z założeń modelu relacyjnego,
  2. ograniczenia oparte na schemacie (ograniczenia bezpośrednie), wynikające z zaprojektowanego schematu danych,
  3. ograniczenia oparte na aplikacjach (ograniczenia semantyczne / reguły biznesowe), wynikające z założeń, na podstawie których projektuje się schemat bazy danych; ograniczenia te nie mogą być zaprogramowane w bazie danych (lub jest to bardzo trudne do zaimplementowania), przez co są wyrażane w projektowanej aplikacji bazodanowej.
Czytaj dalej

Ćwiczenia w kwerendach wprowadzających/wstawiających

Bazując na bazie testowej Sakila, wykonaj następujące ćwiczenia. Pod listą zadań znajduje się przypomnienie składni polecenia INSERT INTO.

  1. Stworzyć kwerendę wprowadzającą do tabeli actor następujące dane.
polewartość
actor_id201
first_nameAndrew
last_nameMcConaughey
last_update2020-10-21 14:12:23

2. Stworzyć kwerendę dodającą do tabeli film_actor następujące dane. Nieokreślone dane pozostawić domyślne.

actor_idfilm_id
2011
2012
2013

3. Utworzyć tabelę actor_copy zgodną z definicją tabeli actor.

4. Utworzyć zapytanie wykonujące kopię danych z tabeli actor do tabeli actor_copy.

Czytaj dalej