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.
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.
biblioteka poleceniem USE biblioteka;.ksiazki: Zastanówmy się nad potrzebnymi kolumnami:
            id_ksiazki: Klucz główny, INT AUTO_INCREMENT.tytul: Tytuł książki, VARCHAR(255), wymagany (NOT NULL).autor: Imię i nazwisko autora, VARCHAR(255), wymagane.rok_wydania: Rok wydania, typ YEAR jest do tego idealny.isbn: Unikalny numer ISBN, VARCHAR(17), powinien być unikalny (UNIQUE).kategoria: Kategoria książki, np. "Fantastyka", "Kryminał", VARCHAR(50).ksiazki: Napisz i wykonaj poniższy kod SQL.
            pracownicy: Określmy pola dla tej tabeli:
            id_pracownika: Klucz główny, INT AUTO_INCREMENT.imie: Imię pracownika, VARCHAR(50) NOT NULL.nazwisko: Nazwisko pracownika, VARCHAR(50) NOT NULL.stanowisko: Stanowisko, np. "Bibliotekarz", VARCHAR(100) NOT NULL.data_zatrudnienia: Data rozpoczęcia pracy, typ DATE NOT NULL.pracownicy:
            ksiazki.sql oraz pracownicy.sql. W każdym z nich umieść po 50 poleceń INSERT z realistycznymi danymi.ksiazki: Użyj wiersza poleceń, aby zaimportować dane. Upewnij się, że jesteś w katalogu z plikiem ksiazki.sql.
            pracownicy: Powtórz proces dla drugiej tabeli.
            SHOW TABLES; aby zobaczyć wszystkie trzy tabele w Twojej bazie danych.Poniżej znajdują się definicje DDL (Data Definition Language) dla obu tabel. Dane DML (Data Manipulation Language) znajdują się w osobnych plikach .sql.
-- 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 );
+---------------------------------------------------+
|                                                   |
|   MariaDB [biblioteka]> SHOW TABLES;              |
|   +-----------------------+                       |
|   | Tables_in_biblioteka  |                       |
|   +-----------------------+                       |
|   | czytelnicy            |                       |
|   | ksiazki               |                       |
|   | pracownicy            |                       |
|   +-----------------------+                       |
|   3 rows in set (0.001 sec)                       |
|                                                   |
+---------------------------------------------------+
    
    YEAR dla roku wydania. Jest on bardziej optymalny niż INT, ponieważ zajmuje tylko 1 bajt i przechowuje lata w zakresie od 1901 do 2155. Użycie VARCHAR(17) dla ISBN uwzględnia myślniki w numerze.ksiazki nazwisko autora i kategoria będą się powtarzać dla wielu wpisów. Na przykład, jeśli mamy 10 książek tego samego autora, jego nazwisko zostanie zapisane 10 razy. To jest przykład redundancji, którą będziemy eliminować w następnym zadaniu dotyczącym normalizacji.NULL w polach opcjonalnych), znaki specjalne, różne długości tekstów. W internecie istnieją generatory danych, które mogą w tym pomóc.