Zadanie 7 — Dodanie tabel: książki i pracownicy

Cel zadania

Celem tego zadania jest rozbudowa naszej bazy danych biblioteka o dwie nowe, kluczowe tabele: ksiazki i pracownicy. Nauczysz się projektować strukturę tabel od zera, dobierając odpowiednie typy danych dla różnych rodzajów informacji, takich jak tytuł książki, rok wydania czy stanowisko pracownika. Podobnie jak w poprzednim zadaniu, zaimportujesz do nowo utworzonych tabel duże zestawy realistycznych danych, utrwalając umiejętność pracy z plikami SQL.

Scenariusz / opis zadania

Nasza biblioteka cyfrowa zaczyna nabierać kształtów. Mamy już listę czytelników, ale biblioteka to przede wszystkim książki i ludzie, którzy w niej pracują. Twoim zadaniem jest rozszerzenie schematu bazy danych o ewidencję zbiorów oraz personelu. Musisz stworzyć dwie nowe tabele. Pierwsza, ksiazki, będzie przechowywać informacje o każdej pozycji w bibliotece: jej unikalny numer ISBN, tytuł, autora, rok wydania oraz kategorię. Zastanowisz się, jak najlepiej reprezentować te dane, np. czy rok wydania powinien być liczbą, czy datą. Druga tabela, pracownicy, będzie zawierać dane osób zatrudnionych w bibliotece, w tym ich imię, nazwisko, stanowisko (np. bibliotekarz, dyrektor) i datę zatrudnienia. W obu tabelach zdefiniujesz klucze główne, aby zapewnić unikalność każdego rekordu. Po stworzeniu struktur tabel, Twoim kolejnym krokiem będzie przygotowanie dwóch osobnych plików SQL – ksiazki.sql i pracownicy.sql – zawierających po 50 realistycznych rekordów. Nauczysz się, jak ważne jest generowanie wiarygodnych danych testowych, które odzwierciedlają rzeczywiste informacje, co jest kluczowe w procesie tworzenia i testowania aplikacji.

Pomocnik wykonania

  1. Połącz się z bazą danych: Użyj swojego ulubionego klienta SQL, aby połączyć się z serwerem i wybrać bazę danych biblioteka poleceniem USE biblioteka;.
  2. Zaprojektuj tabelę ksiazki: Zastanówmy się nad potrzebnymi kolumnami:
  3. Utwórz tabelę ksiazki: Napisz i wykonaj poniższy kod SQL.
    CREATE TABLE ksiazki ( id_ksiazki INT AUTO_INCREMENT PRIMARY KEY, tytul VARCHAR(255) NOT NULL, autor VARCHAR(255) NOT NULL, rok_wydania YEAR NULL, isbn VARCHAR(17) UNIQUE NULL, kategoria VARCHAR(50) NULL );
  4. Zaprojektuj tabelę pracownicy: Określmy pola dla tej tabeli:
  5. Utwórz tabelę pracownicy:
    CREATE TABLE pracownicy ( id_pracownika INT AUTO_INCREMENT PRIMARY KEY, imie VARCHAR(50) NOT NULL, nazwisko VARCHAR(50) NOT NULL, stanowisko VARCHAR(100) NOT NULL, data_zatrudnienia DATE NOT NULL );
  6. Przygotuj pliki z danymi: Utwórz dwa nowe pliki tekstowe: ksiazki.sql oraz pracownicy.sql. W każdym z nich umieść po 50 poleceń INSERT z realistycznymi danymi.
  7. Import danych dla tabeli ksiazki: Użyj wiersza poleceń, aby zaimportować dane. Upewnij się, że jesteś w katalogu z plikiem ksiazki.sql.
    mysql -u root -p biblioteka < ksiazki.sql
  8. Import danych dla tabeli pracownicy: Powtórz proces dla drugiej tabeli.
    mysql -u root -p biblioteka < pracownicy.sql
  9. Weryfikacja importu: Po każdym imporcie sprawdź, czy dane zostały poprawnie dodane.
    SELECT * FROM ksiazki LIMIT 5;
    SELECT * FROM pracownicy LIMIT 5;
  10. Sprawdź strukturę bazy: Wykonaj polecenie SHOW TABLES; aby zobaczyć wszystkie trzy tabele w Twojej bazie danych.

Przykłady kodu i poleceń

Poniżej znajdują się definicje DDL (Data Definition Language) dla obu tabel. Dane DML (Data Manipulation Language) znajdują się w osobnych plikach .sql.

Struktura tabel

-- Upewnij sie, ze jestes w bazie 'biblioteka'
USE biblioteka;

-- Tabela przechowujaca informacje o ksiazkach
CREATE TABLE ksiazki (
    id_ksiazki INT AUTO_INCREMENT PRIMARY KEY,
    tytul VARCHAR(255) NOT NULL,
    autor VARCHAR(255) NOT NULL,
    rok_wydania YEAR NULL,
    isbn VARCHAR(17) UNIQUE NULL,
    kategoria VARCHAR(50) NULL
);

-- Tabela przechowujaca informacje o pracownikach
CREATE TABLE pracownicy (
    id_pracownika INT AUTO_INCREMENT PRIMARY KEY,
    imie VARCHAR(50) NOT NULL,
    nazwisko VARCHAR(50) NOT NULL,
    stanowisko VARCHAR(100) NOT NULL,
    data_zatrudnienia DATE NOT NULL
);
    

Ilustracja konsoli

+---------------------------------------------------+
|                                                   |
|   MariaDB [biblioteka]> SHOW TABLES;              |
|   +-----------------------+                       |
|   | Tables_in_biblioteka  |                       |
|   +-----------------------+                       |
|   | czytelnicy            |                       |
|   | ksiazki               |                       |
|   | pracownicy            |                       |
|   +-----------------------+                       |
|   3 rows in set (0.001 sec)                       |
|                                                   |
+---------------------------------------------------+
    

Informacje dodatkowe / uwagi