Przykładowa baza danych – Biblioteka

W tym wpisie zaprezentuję Wam przykładową bazę danych biblioteki. Oczywiście jest to moja wizja bazy "Biblioteki", ale mam nadzieję, że się przyda.

Baza danych: BIBLIOTEKA
Środowisko: SQL SERVER


SCHEMAT

przykład bazy danych biblioteka database example library


TABELE

W moim projekcie zastosowałem 8 tabel:

1. Kategorie – zawiera kategorie książek
2. Książki – zawiera listę książek w bibliotece
3. Autorzy – zawiera listę autorów książek
4. Wydawnictwa  – zawiera listę wydawnictw które wydają książki
5. Czytelnicy – zawiera listę czytelników biblioteki
6. Pracownicy – zawiera listę pracowników biblioteki
7. Role – zawiera listę stanowisk pracowników w bibliotece
8. Wypożyczenia – zawiera wykaz wypożyczeń książek z biblioteki


TABELA – KATEGORIE

Ma służyc do przechowywania kategorii książek.

POLA
id_kategoria
– pole id_kategoria będzie kluczem głównym w tabeli
nazwa – nazwa kategorii

SKRYPT

CREATE TABLE Kategorie
    (
         id_kategoria INT PRIMARY KEY
        ,nazwa NVARCHAR(46)
    );


TABELA – AUTORZY

Służy do przechowywania informacji o autorach książek.

POLA
id_autor
– pole id_autor będzie kluczem głównym w tabeli
imie – wiadomo imię autora
nazwisko – tutaj także chyba nie wymaga komentarza

SKRYPT

CREATE TABLE Autorzy
    (
         id_autor INT  PRIMARY KEY
        ,imie NVARCHAR(15)
        ,nazwisko NVARCHAR(30)
    );


TABELA – WYDAWNICTWA

Służy do przechowywania informacji o wydawnictwach wydających książki.

POLA
id_wydawnictwo
– pole id_wydawnictwo będzie kluczem głównym w tabeli
nazwa – nazwa wydawnictwa
Można oczywiście rozszerzyć zakres danych w tej tabeli np. o: adres, miasto, kod-pocztowy, telefon, email, strona_www itp. Pozostawiam to do Waszej oceny.

SKRYPT

CREATE TABLE Wydawnictwa
    (
         id_wydawnictwo INT  PRIMARY KEY
        ,nazwa NVARCHAR(30)
    );


TABELA – KSIĄŻKI

To główna tabela bazy. Tutaj będziemy przechowywali inforamcje o książkach. W tabeli będziemy mieli także kilka kluczy obcych do tabel: Kategorie, Autorzy, Wydawnictwa.

POLA
id_ksiazka
– to klucz głowny naszej tabeli
isbn – numer ISBN to unikalny numer każdej książki
id_kategoria – numer id kategorii z tabeli Kategorie
tytul  – tytuł książki
opis – opis książki
id_autor – numer id autora z tabeli Autorzy
id_wydawnictwo  – numer id wydawnictwa z tabeli Wydawnictwa
rok_wydania – rok wydania książki
jako klucz główny można było uznać kolumnę ISBN bo to unikalny numer książki ale dla przejżystości postanowiłem dodać jednak kolumnę "id_ksiazka"

SKRYPT

CREATE TABLE Ksiazki
    (
         id_ksiazka INT PRIMARY KEY
        ,isbn NVARCHAR(13)
        ,id_kategoria INT CONSTRAINT FK_kategoria REFERENCES Kategorie(id_kategoria)
        ,tytul NVARCHAR(255)
        ,opis NVARCHAR(500)
        ,id_autor INT CONSTRAINT FK_autor REFERENCES Autorzy(id_autor)
        ,id_wydawnictwo INT CONSTRAINT FK_wydawnictwo REFERENCES Wydawnictwa(id_wydawnictwo)
        ,rok_wydania INT
    );   


TABELA – CZYTELNICY

Tabela czytelnicy będzie przechowywała informacje o naszych czytelnikach.

POLA
id_czytelnik
– klucz główny w tabeli czytelnicy
login – login czytelnika
haslo – hasło czytelnika
email – e-mail czytelnika
telefon – telefon czytelnika
data_urodzenia – data urodzenia czytelnika
Ktoś zapyta dlaczego nie będziemy przechowywali imienia i nazwiska czytelników. Można to zrobić. Jednak jeżeli chcielibyście stworzyć taką bazę w rzeczywistości i przechowywać w niej takie dane musicie wiedzieć, że musicie zgłosić ten zbiór do GIODO.

SKRYPT

CREATE TABLE Czytelnicy
    (
         id_czytelnik INT PRIMARY KEY
        ,login NVARCHAR(10)
        ,haslo NVARCHAR(20)
        ,email NVARCHAR(30)
        ,telefon NVARCHAR(20)
        ,data_urodzenia DATE
    );


TABELA – ROLE

Tutaj będziemy przechowywali informacje nt. stanowisk pracowników w bibliotece. W sumie jest to tabela opcjonalna, nie jest wymagana.

POLA
id_rola
– klucz głowny w tabeli
nazwa – nazwa stanowiska/roli w bibliotece
 

SKRYPT

CREATE TABLE Role
    (
         id_rola INT PRIMARY KEY
        ,nazwa NVARCHAR(25)
    );


TABELA – PRACOWNICY

Tutaj będziemy przechowywali informację pracowników naszej biblioteki.

POLA
id_pracownik
– klucz główny w tabeli
login – login pracownika
haslo – hasło pracownika
id_rola – numer id roli z tabeli "Role"
 

SKRYPT

CREATE TABLE Pracownicy
    (
         id_pracownik INT PRIMARY KEY
        ,login NVARCHAR(10)
        ,haslo NVARCHAR(20)
        ,id_rola INT CONSTRAINT FK_rola REFERENCES Role(id_rola)
    );   


TABELA – WYPOŻYCZENIA

To kolejna ważna tabela w naszej bazie. Tutaj będziemy przechowywali informacje nt. wypożyczen książek z naszej biblioteki.

POLA
id_wypozyczenie
– klucz głowny w naszej tabeli
id_czytelnik – numer id czytelnika z tabeli "Czytelnicy" który wypożyczył książkę
id_ksiazka – numer id wypożyczonej książki (numer id książki z tabeli książki)
data_wypozyczenia – data wypożyczenia książki
id_pracownik_wypozyczenie – numer id pracownika który wypożyczył książkę
data_oddania – data oddania książki przez czytelnika
id_pracownik_oddanie – numer id pracownika który przyjął książkę po wypożyczeniu
 

SKRYPT

CREATE TABLE Wypozyczenia
    (
         id_wypozyczenie BIGINT PRIMARY KEY
        ,id_czytelnik INT CONSTRAINT FK_czytelnik REFERENCES Czytelnicy(id_czytelnik)
        ,id_ksiazka INT CONSTRAINT FK_ksiazka REFERENCES Ksiazki(id_ksiazka)
        ,data_wypozyczenia DATE
        ,id_pracownik_wypozyczenie INT CONSTRAINT FK_pracownik_wypozyczenie REFERENCES Pracownicy(id_pracownik)
        ,data_oddania DATE
        ,id_pracownik_oddanie INT CONSTRAINT FK_pracownik_oddanie REFERENCES Pracownicy(id_pracownik)
    );


CAŁY SKRYPT TWORZĄCY STRUKTURĘ BAZY "BIBLIOTEKA" ZNAJDZIESZ >>>TUTAJ<<< A SKTYPT TWORZĄCY STRUKTURĘ BAZY + PRZYKŁADOWE DANE ZNAJDZIESZ >>>TUTAJ<<<

UWAGA

Musimy jednak pamiętać, że jeżeli połączymy wszystkie poszczególne części kodu w jeden skrypt tworzący bazę, to niektóre tabele musimy umieścić wcześniej w kodzie, dlaczego? Jeżeli w kodzie danej tabeli odwołujemy się (klucz obcy) do drugiej tabeli a jej jeszcze nie ma utworzonej, to kompilator zwróci nam błąd. Np. tabela 'Książki'. Jeżeli będziemy próbowali utworzyć tabelę 'Książki', w której mamy zdefiniowanych kilka kluczy obcych np. 'id_kategoria' , ' id_autor' , 'id_wydawnictwo', jeszcze przez utworzeniem tych tabel ('Kategorie' , 'Autorzy' , 'Wydawnictwa), to przy próbie jej utworzenia zobaczymy błąd:

Foreign key 'FK_kategoria' references invalid table 'Kategorie'.
Could not create constraint. See previous errors.


  SQL tutorial. SQL SERVER. Baza Biblioteka SQL tutorial. SQL SERVER. Baza Biblioteka