Progettazione di un database di Scaraggi Grazia
Analisi dei requisiti Si vuole automatizzare la gestione del prestito libri di una biblioteca A tale scopo bisognerà memorizzare i dati relativi a: Amici Libri Prestiti
Schema Entità-Relazioni Amici Prestiti 1 : N N N : 1 Libri N
Progettazione Concettuale Entità: Amici Attributi: IdAmici Nome Telefono
Progettazione Concettuale Entità: Libri Attributi: IdLibri Titolo Autore
Progettazione Concettuale Definizione delle relazioni Dalla relazione N : N deriva una ulteriore entità (Prestiti) i cui attributi saranno i seguenti: IdPrestiti Campo link alla tabella Amici : definisce il nome(o soprannome) della persone che ha preso in prestito il libro Campo link alla tabella Libri : definisce il libro preso in prestito DataRestituzione
Progettazione Concettuale Definizione delle relazioni Tabella: Amici Nome Campo Tipo Campo Dimensione Vincoli Note IdAmici Numerico Intero lungo Primary key Nome Testo 20 Not null Telefono 15
Progettazione Concettuale Definizione delle relazioni Tabella: Libri Nome Campo Tipo Campo Dimensione Vincoli Note IdLibri Numerico Intero lungo Primary key Titolo Testo 20 Not null Autore 15
Progettazione Concettuale Definizione delle relazioni Tabella: Prestiti Nome Campo Tipo Campo Dimensione Vincoli Note IdPrestiti Numerico Intero lungo Primary key FkAmiciPrestiti Foreign key Link alla tabella Amici FkLibriPrestiti Link alla tabella Libri DataRestituzione Data/ora Not null
Schema logico
Esempio di DML : Query Richiesta: Si vogliono visualizzare i libri presi in prestito dall’ amica “Grazia”.
Esempio di DML : QBE (Query by example)
Esempio di DML : Query Sql SELECT Titolo, Autore FROM Libri, Amici, Prestiti WHERE Nome=“NomeAmico” and IdAmici=FkAmiciPrestiti and IdLibri=FkLibriPrestiti
Risultato query
Esercizio n.2 Pazienti Ricoveri 1 : N N : 1 Medici Reparti 1 : 1
Le chiavi primarie potrebbero essere: Cod per l’entità Reparti; Cod per l’entità Pazienti; Paziente e Inizio per l’entità Ricoveri; Matr per l’entità Medici. Nell’ entità Ricoveri poniamo, come chiave, anche la voce Inizio, supponendo che ogni paziente non possa essere ricoverato due volte nello stesso giorno.
Le chiavi secondarie potrebbero essere: Reparto per l’entità Ricoveri campo link all’entità Reparti Reparto per l’entità Medici campo link all’entità Reparti Primario per l’entità Reparti campo link all’entità Medici
I vincoli di integrità referenziale, invece, sono : tra l’attributo Paziente di Ricoveri e la relazione Pazienti; tra Reparto di Ricoveri e Reparti; tra Reparto di Medici e Reparti; tra Primari di Reparti e Medici.
I valori nulli possono essere inseriti in tutti quei campi diversi dalla chiave primaria, quindi dai seguenti attributi: Nome di Reparti; Cognome, Nome di Pazienti; Fine di Ricoveri; Nome, Cognome di Medici.