Titolo del progetto

Progettazione di una base dati per la gestione di una biblioteca

1. Analisi dei Requisiti

🎯 Obiettivi

Realizzare un sistema informativo per:

  • Gestire il catalogo dei libri

  • Gestire gli utenti iscritti

  • Registrare i prestiti e le restituzioni

  • Tenere traccia della disponibilità dei volumi

  • Gestire le prenotazioni

📌 Funzionalità richieste

  • Inserimento e modifica di libri, autori e copie

  • Registrazione utenti (studenti, docenti…)

  • Prestito e restituzione dei libri

  • Prenotazioni in coda se il libro è occupato

  • Statistiche sui prestiti


2. Entità principali

  • Libro

  • Autore

  • Utente

  • Copia

  • Prestito

  • Prenotazione


3. Relazioni tra le entità

  • Ogni libro può avere più autori (relazione N:N)

  • Ogni libro ha una o più copie

  • Ogni utente può fare più prestiti

  • Ogni utente può fare più prenotazioni

  • Ogni copia può essere in prestito solo a un utente per volta


4. Modello Entità-Relazioni (ER)

✏️ Entità e Attributi

  • Libro (CodLibro, Titolo, Genere, AnnoPubblicazione, Editore)

  • Autore (CodAutore, Nome, Cognome)

  • Utente (CodUtente, Nome, Cognome, TipoUtente, Email)

  • Copia (CodCopia, CodLibro FK, Stato)

  • Prestito (CodPrestito, CodUtente FK, CodCopia FK, DataInizio, DataFine)

  • Prenotazione (CodPrenotazione, CodUtente FK, CodLibro FK, DataPrenotazione)

🔄 Relazioni

  • Libro ↔ Autore (N:N) → tabella LibroAutore

  • Libro ↔ Copia (1:N)

  • Copia ↔ Prestito (1:N)

  • Utente ↔ Prestito (1:N)

  • Utente ↔ Prenotazione (1:N)

  • Libro ↔ Prenotazione (1:N)


5. Modello Relazionale

Libro(CodLibro PK, Titolo, Genere, AnnoPubblicazione, Editore)
Autore(CodAutore PK, Nome, Cognome)
LibroAutore(CodLibro FK, CodAutore FK, PRIMARY KEY (CodLibro, CodAutore))
Utente(CodUtente PK, Nome, Cognome, TipoUtente, Email)
Copia(CodCopia PK, CodLibro FK, Stato)
Prestito(CodPrestito PK, CodUtente FK, CodCopia FK, DataInizio, DataFine)
Prenotazione(CodPrenotazione PK, CodUtente FK, CodLibro FK, DataPrenotazione)

6. Popolamento della Base Dati (esempi)

-- Libri e Autori
INSERT INTO Libro VALUES ('LB001', 'Il nome della rosa', 'Giallo', 1980, 'Bompiani');
INSERT INTO Autore VALUES ('AU001', 'Umberto', 'Eco');
INSERT INTO LibroAutore VALUES ('LB001', 'AU001');

-- Utenti
INSERT INTO Utente VALUES ('UT001', 'Sara', 'Verdi', 'Studente', Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.');

-- Copie
INSERT INTO Copia VALUES ('CP001', 'LB001', 'Disponibile');
INSERT INTO Copia VALUES ('CP002', 'LB001', 'Prestato');

-- Prestiti
INSERT INTO Prestito VALUES ('PR001', 'UT001', 'CP002', '2025-03-01', '2025-03-15');

-- Prenotazioni
INSERT INTO Prenotazione VALUES ('PN001', 'UT001', 'LB001', '2025-03-02');

7. Test delle Query

🔹 Elenco libri disponibili

SELECT L.Titolo, C.CodCopia
FROM Libro L
JOIN Copia C ON L.CodLibro = C.CodLibro
WHERE C.Stato = 'Disponibile';

🔹 Prestiti attivi di un utente

SELECT P.CodPrestito, L.Titolo, P.DataInizio, P.DataFine
FROM Prestito P
JOIN Copia C ON P.CodCopia = C.CodCopia
JOIN Libro L ON C.CodLibro = L.CodLibro
WHERE P.CodUtente = 'UT001';

🔹 Libri prenotati da un utente

SELECT L.Titolo, PR.DataPrenotazione
FROM Prenotazione PR
JOIN Libro L ON PR.CodLibro = L.CodLibro
WHERE PR.CodUtente = 'UT001';

🔹 Autori di un libro

SELECT A.Nome, A.Cognome
FROM Autore A
JOIN LibroAutore LA ON A.CodAutore = LA.CodAutore
WHERE LA.CodLibro = 'LB001';

8. Conclusioni

Il sistema informativo per la gestione della biblioteca consente:

  • Il tracciamento completo dei libri e delle copie

  • La gestione di prestiti e prenotazioni con integrità

  • La possibilità di estendere il database a più sedi o anche a ebook

PROGETTAZIONE DB ACCESS GESTIONE BIBLIOTECA. (MODELLO 2)

📌 Fasi della Progettazione di una Base Dati

1️⃣ ANALISI DEI REQUISITI

Prima di progettare il database, definiamo le informazioni che dobbiamo gestire:
Libri: titolo, autore, editore, anno di pubblicazione, genere, copie disponibili.
Utenti: nome, cognome, contatto, data di registrazione.
Prestiti: chi ha preso un libro, quando, e la data di restituzione.
Dipendenti: chi lavora in biblioteca, ruolo e contatti.


2️⃣ PROGETTAZIONE CONCETTUALE (ER Model)

Creiamo un diagramma Entità-Relazione (ER) con le seguenti entità:

  • Libri 📚

  • Utenti 👤

  • Prestiti 🔄

  • Dipendenti 👨‍💼

Le relazioni principali sono:
📌 Un utente può prendere in prestito più libri → Relazione 1:N
📌 Un libro può essere preso in prestito da più utenti nel tempo → Relazione 1:N
📌 Un dipendente gestisce i prestiti → Relazione 1:N


3️⃣ PROGETTAZIONE LOGICA (Tabelle e Attributi)

Creiamo le tabelle con i relativi campi.

📚 Tabella: Libri

Campo

Tipo

Descrizione

ID_Libro

AutoNumero (PK)

Identificativo univoco

Titolo

Testo

Titolo del libro

Autore

Testo

Autore del libro

Editore

Testo

Casa editrice

Anno

Numero

Anno di pubblicazione

Genere

Testo

Categoria del libro

Copie

Numero

Numero di copie disponibili


👤 Tabella: Utenti

Campo

Tipo

Descrizione

ID_Utente

AutoNumero (PK)

Identificativo univoco

Nome

Testo

Nome e cognome dell'utente

Telefono

Testo

Numero di contatto

Email

Testo

Email dell'utente

Data_Registrazione

Data

Data di iscrizione alla biblioteca


🔄 Tabella: Prestiti

Campo

Tipo

Descrizione

ID_Prestito

AutoNumero (PK)

Identificativo del prestito

ID_Utente

Numero (FK)

Utente che ha preso in prestito il libro

ID_Libro

Numero (FK)

Libro preso in prestito

Data_Prestito

Data

Data di inizio prestito

Data_Restituzione

Data

Data prevista di restituzione

Restituito

Sì/No

Se il libro è stato restituito


👨‍💼 Tabella: Dipendenti

Campo

Tipo

Descrizione

ID_Dipendente

AutoNumero (PK)

Identificativo del dipendente

Nome

Testo

Nome del dipendente

Ruolo

Testo

Mansione (Bibliotecario, Responsabile, etc.)

Contatto

Testo

Numero o email


4️⃣ PROGETTAZIONE FISICA (Creazione in Microsoft Access o SQL)

Dopo aver progettato la struttura, possiamo creare il database in Microsoft Access o SQL.

Relazioni tra le tabelle

Collega le tabelle:
🔹 Libri → Prestiti (1 a molti)
🔹 Utenti → Prestiti (1 a molti)
🔹 Dipendenti → Prestiti (1 a molti)

Attiva l’integrità referenziale per garantire la coerenza dei dati!


5️⃣ POPOLAMENTO DEL DATABASE (Dati di esempio)

Dopo aver creato il database, inseriamo alcuni dati.

📚 Libri

ID_Libro

Titolo

Autore

Editore

Anno

Genere

Copie

1

Il Signore degli Anelli

J.R.R. Tolkien

Mondadori

1954

Fantasy

5

2

1984

George Orwell

Feltrinelli

1949

Distopico

3

👤 Utenti

ID_Utente

Nome

Telefono

Email

Data_Registrazione

1

Prof. Angelo Tramont

3299608626

Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

2024-01-15

2

Anna Bianchi

987654321

Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

2024-02-10

🔄 Prestiti

ID_Prestito

ID_Utente

ID_Libro

Data_Prestito

Data_Restituzione

Restituito

1

1

1

2024-03-10

2024-03-25

No

2

2

2

2024-03-12

2024-03-27

No

👨‍💼 Dipendenti

ID_Dipendente

Nome

Ruolo

Contatto

1

Laura Verdi

Bibliotecaria

333111222


Back to top