| Lp. | Tematy jednostek metodycznych | Liczba godzin | Wymagania podstawowe | Wymagania ponadpodstawowe | Efekt z podstawy programowej |
|---|---|---|---|---|---|
| 1 | Organizacja zajęć i regulamin | 1 | Stosuje zasady BHP | Samodzielnie opracowuje regulamin grupy | INF.03.1(5) |
| 2 | Podstawowe pojęcia baz danych | 2 | Określa encje, atrybuty, klucze, relacje | Analizuje zależności logiczne | INF.03.4(1) |
| 3 | Relacyjne bazy danych | 3 | Charakteryzuje relacje, klucze główne i obce | Projektuje relacje 1:N i N:N | INF.03.4(2) |
| 4 | Typy danych i normalizacja | 4 | Rozróżnia typy danych w tabelach | Normalizuje do 3NF | INF.03.4(3) |
| 5 | Projektowanie diagramu E/R | 3 | Tworzy podstawowy diagram E/R | Projektuje złożony diagram z atrybutami złożonymi | INF.03.4(4) |
| 6 | Tworzenie tabel i relacji w SQL | 3 | Tworzy tabele, ustala klucze główne | Dodaje więzy integralności i klucze obce | INF.03.4(5) |
| 7 | Tworzenie formularzy i zapytań | 3 | Dodaje dane przez formularz i wykonuje SELECT | Łączy tabele i filtruje wyniki | INF.03.4(6) |
| 8 | Tworzenie i formatowanie raportów | 2 | Tworzy podstawowy raport | Formatowanie raportu z nagłówkami i sumami | INF.03.4(7) |
| 9 | Związki między encjami | 2 | Tworzy dodatkową tabelę i relacje 1:N | Projektuje złożone powiązania N:M | INF.03.4(2,5) |
| 10 | Typy danych dla atrybutów encji | 2 | Modyfikuje typy kolumn w tabelach | Dodaje kolumny z typami DATE i DECIMAL | INF.03.4(3) |
| 11 | Typy systemów zarządzania bazami danych | 2 | Rozróżnia SZBD | Tworzy tabelę porównawczą systemów | INF.03.4(1) |
| 12 | Tworzenie tabel pracowników | 2 | Tworzy podstawową tabelę pracowników | Dodaje i edytuje kolumny oraz klucze | INF.03.4(5) |
| 13 | Tworzenie formularzy dla pracowników | 3 | Formularz dodaje pracowników | Formularz umożliwia edycję rekordów | INF.03.4(6) |
Polecenie: Zapoznaj się z regulaminem pracowni i przygotuj listę zasad bezpieczeństwa.
Polecenie: Utwórz tabelę klienci z polami id_klienta, imie, nazwisko, email, miasto.
CREATE TABLE klienci ( id_klienta INT AUTO_INCREMENT PRIMARY KEY, imie VARCHAR(50), nazwisko VARCHAR(50), email VARCHAR(100), miasto VARCHAR(50) );
query($sql); $conn->close(); echo "Tabela utworzona!"; ?>
Polecenie: Dodaj tabelę zamowienia i połącz ją relacją 1:N z tabelą klienci.
CREATE TABLE zamowienia ( id_zamowienia INT AUTO_INCREMENT PRIMARY KEY, id_klienta INT, data DATE, FOREIGN KEY (id_klienta) REFERENCES klienci(id_klienta) );
query($sql); $conn->close(); echo "Tabela zamowienia utworzona!"; ?>
Polecenie: Dodaj kolumnę telefon do tabeli klienci i sprawdź typ danych VARCHAR(20).
ALTER TABLE klienci ADD telefon VARCHAR(20);
query($sql); $conn->close(); echo "Dodano kolumnę telefon!"; ?>
Polecenie: Narysuj diagram E/R dla tabel klienci i zamowienia, zaznaczając klucze główne i obce.
Polecenie: Utwórz tabelę produkty i powiąż ją z tabelą zamowienia relacją N:M poprzez tabelę zamowienia_produkty.
CREATE TABLE produkty ( id_produktu INT AUTO_INCREMENT PRIMARY KEY, nazwa VARCHAR(100), cena DECIMAL(10,2) ); CREATE TABLE zamowienia_produkty ( id_zamowienia INT, id_produktu INT, ilosc INT, FOREIGN KEY (id_zamowienia) REFERENCES zamowienia(id_zamowienia), FOREIGN KEY (id_produktu) REFERENCES produkty(id_produktu) );
query("CREATE TABLE produkty (id_produktu INT AUTO_INCREMENT PRIMARY KEY, nazwa VARCHAR(100), cena DECIMAL(10,2))");
$conn->query("CREATE TABLE zamowienia_produkty (id_zamowienia INT, id_produktu INT, ilosc INT, FOREIGN KEY (id_zamowienia) REFERENCES zamowienia(id_zamowienia), FOREIGN KEY (id_produktu) REFERENCES produkty(id_produktu))");
$conn->close();
echo "Tabele produkty i zamowienia_produkty utworzone!";
?>
Polecenie: Utwórz formularz dodający nowego klienta i wyświetl listę wszystkich klientów.
<form method="post">
Imię: <input type="text" name="imie">
Nazwisko: <input type="text" name="nazwisko">
Email: <input type="email" name="email">
Miasto: <input type="text" name="miasto">
<input type="submit" value="Dodaj klienta">
</form>
<?php
$conn = new mysqli("localhost","root","","sklep");
if($_SERVER["REQUEST_METHOD"]=="POST"){
$conn->query("INSERT INTO klienci (imie,nazwisko,email,miasto) VALUES ('".$_POST["imie"]."','".$_POST["nazwisko"]."','".$_POST["email"]."','".$_POST["miasto"]."')");
}
$result = $conn->query("SELECT * FROM klienci");
echo "<table class='effect-table'><tr><th>Imię</th><th>Nazwisko</th><th>Email</th><th>Miasto</th></tr>";
while($row=$result->fetch_assoc()){
echo "<tr><td>".$row['imie']."</td><td>".$row['nazwisko']."</td><td>".$row['email']."</td><td>".$row['miasto']."</td></tr>";
}
echo "</table>";
$conn->close();
?>
Polecenie: Wyświetl raport zamówień z nazwami produktów, ilością i ceną, posortowany według klienta.
<?php
$conn = new mysqli("localhost","root","","sklep");
$sql="SELECT k.imie,k.nazwisko,p.nazwa,zp.ilosc,p.cena FROM klienci k
JOIN zamowienia z ON k.id_klienta=z.id_klienta
JOIN zamowienia_produkty zp ON z.id_zamowienia=zp.id_zamowienia
JOIN produkty p ON zp.id_produktu=p.id_produktu
ORDER BY k.nazwisko";
$result=$conn->query($sql);
echo "<table class='effect-table'><tr><th>Klient</th><th>Produkt</th><th>Ilość</th><th>Cena</th></tr>";
while($row=$result->fetch_assoc()){
echo "<tr><td>".$row['imie']." ".$row['nazwisko']."</td><td>".$row['nazwa']."</td><td>".$row['ilosc']."</td><td>".$row['cena']."</td></tr>";
}
echo "</table>";
$conn->close();
?>
Polecenie: Utwórz tabelę dostawcy i połącz ją z tabelą produkty relacją 1:N.
CREATE TABLE dostawcy ( id_dostawcy INT AUTO_INCREMENT PRIMARY KEY, nazwa VARCHAR(100), kontakt VARCHAR(100) ); ALTER TABLE produkty ADD id_dostawcy INT; ALTER TABLE produkty ADD FOREIGN KEY (id_dostawcy) REFERENCES dostawcy(id_dostawcy);
query("CREATE TABLE dostawcy (id_dostawcy INT AUTO_INCREMENT PRIMARY KEY, nazwa VARCHAR(100), kontakt VARCHAR(100))");
$conn->query("ALTER TABLE produkty ADD id_dostawcy INT");
$conn->query("ALTER TABLE produkty ADD FOREIGN KEY (id_dostawcy) REFERENCES dostawcy(id_dostawcy)");
$conn->close();
echo "Tabela dostawcy utworzona i powiązana z produktami!";
?>
Polecenie: Zmień typ danych kolumny telefon na VARCHAR(15) i dodaj kolumnę data_urodzenia typu DATE.
ALTER TABLE klienci MODIFY telefon VARCHAR(15); ALTER TABLE klienci ADD data_urodzenia DATE;
query("ALTER TABLE klienci MODIFY telefon VARCHAR(15)");
$conn->query("ALTER TABLE klienci ADD data_urodzenia DATE");
$conn->close();
echo "Zmieniono typ kolumny telefon i dodano data_urodzenia!";
?>
Polecenie: Przeanalizuj różne SZBD i przygotuj tabelę porównawczą MS Access, MySQL, Oracle, MSSQL.
Polecenie: Wyświetl raport zamówień dla klienta o wybranym ID.
<form method="get">ID klienta: <input type="number" name="id_klienta">
<input type="submit" value="Pokaż raport"></form>
<?php
$conn = new mysqli("localhost","root","","sklep");
if(isset($_GET["id_klienta"])){
$id=$_GET["id_klienta"];
$result=$conn->query("SELECT k.imie,k.nazwisko,p.nazwa,zp.ilosc,p.cena FROM klienci k
JOIN zamowienia z ON k.id_klienta=z.id_klienta
JOIN zamowienia_produkty zp ON z.id_zamowienia=zp.id_zamowienia
JOIN produkty p ON zp.id_produktu=p.id_produktu
WHERE k.id_klienta=$id");
echo "<table class='effect-table'><tr><th>Produkt</th><th>Ilość</th><th>Cena</th></tr>";
while($row=$result->fetch_assoc()){
echo "<tr><td>".$row['nazwa']."</td><td>".$row['ilosc']."</td><td>".$row['cena']."</td></tr>";
}
echo "</table>";
}
$conn->close();
?>
Polecenie: Stwórz formularz umożliwiający edycję danych klienta.
<form method="post">ID klienta: <input type="number" name="id">
Imię: <input type="text" name="imie">
Nazwisko: <input type="text" name="nazwisko">
Miasto: <input type="text" name="miasto">
<input type="submit" value="Edytuj klienta">
</form>
<?php
$conn = new mysqli("localhost","root","","sklep");
if($_SERVER["REQUEST_METHOD"]=="POST"){
$conn->query("UPDATE klienci SET imie='".$_POST["imie"]."', nazwisko='".$_POST["nazwisko"]."', miasto='".$_POST["miasto"]."' WHERE id_klienta=".$_POST["id"]);
}
$conn->close();
?>