Lezioni
Quiz
Domande
Utenti
Spazio pubblicitario disponibile Mi interessa, dimmi di più
Esempio di progettazione di una base di dati

Affrontiamo la progettazione di un database considerando il seguente problema di esempio, relativo alla gestione di alcune informazioni bibliografiche:

Per ogni libro presente nella base di dati deve essere memorizzato il titolo. Ogni libro è scritto da uno o più autori; di ogni autore interessano nome, cognome e data di nascita. I libri sono pubblicati da una casa editrice di cui si memorizza la città.

Descriveremo dapprima lo schema concettuale della base di dati con un diagramma Entità/Relazione, poi lo tradurremo nel modello relazionale fornendo lo schema relazionale.

Schema concettuale

Dobbiamo per prima cosa effettuare un’analisi del testo del problema, leggendolo con attenzione più volte, al fine di individuare le entità e le associazioni che esistono tra le entità, determinando anche la loro cardinalità, nonché gli attributi e le chiavi delle entità.

Ricordiamo che solitamente le entità sono indicate da sostantivi e le associazioni da verbi. Se necessario possiamo introdurre delle ipotesi aggiuntive, motivando le decisioni prese.

Dall’analisi, per il nostro problema risultano tre entità: Libro, Autore e CasaEditrice.

Tra le entità Autore e Libro esiste l’associazione Scrive che è di tipo molti a molti:

  • Ogni autore deve scrivere uno o più libri (ipotizziamo che un autore sia inserito soltanto se ha scritto un libro presente nella base di dati); quindi la cardinalità minima di Autore è 1 e la massima N.

  • Ogni libro deve essere scritto da uno o più autori (come specificato nel testo); quindi la cardinalità minima di Libro è 1 e la massima N.

Tra le entità CasaEditrice e Libro esiste la relazione Pubblica che è di tipo uno a molti:

  • Ogni casa editrice deve pubblicare uno o più libri; quindi la cardinalità minima di CasaEditrice è 1 e la massima N.

  • Ogni libro deve essere pubblicato da una sola casa editrice; quindi la cardinalità sia minima sia massima di Libro è 1.

L’entità Autore ha gli attributi Nome, Cognome e DataNascita; l’entità Libro ha l’attributo Titolo; l’entità CasaEditrice ha gli attributi NomeCasaEd e Città.

Per tutte le entità, nessuno degli attributi citati nel testo è adatto per essere utilizzato come chiave primaria; pertanto aggiungiamo una chiave artificiale a ogni entità (CodiceAutore, CodiceLibro e CodiceCasaEd).

Il diagramma Entità/Relazione è costruito rappresentando ogni entità come un rettangolo e ogni associazione come un rombo, collegato alle entità opportune; sui collegamenti viene anche riportata la cardinalità con cui ogni entità partecipa all’associazione. Ad ogni entità sono collegati pure i rispettivi attributi, rappresentati con dei cerchietti; nel caso delle chiavi si utilizza un cerchietto pieno.

Il diagramma Entità/Relazione per il nostro problema è riportato nella figura seguente.

Diagramma Entità/Relazione

Schema relazionale

Effettuiamo ora la traduzione dallo schema concettuale a quello relazionale.

Ricordiamo le regole di traduzione:

  • alle entità del diagramma Entità/Relazione deve corrispondere una relazione con gli stessi attributi e stessa chiave primaria;

  • alle associazioni molti a molti deve corrispondere una nuova relazione con gli stessi attributi e come chiavi esterne le chiavi delle entità associate;

  • le associazioni uno a molti non richiedono una nuova relazione ma la chiave primaria dell’entità padre deve migrare nell’entità figlio come chiave esterna.

Lo schema relazionale è composto quindi da quattro relazioni; dalle entità dello schema concettuale si ottengono le relazioni Autori, Libri e CaseEditrici; dall’associazione Scrive si ottiene la relazione AutoriLibri.

Le chiavi primarie di Autori e Libri migrano in AutoriLibri, la chiave primaria di CaseEditrici migra in Libri.

Per ogni relazione si riporta tra parentesi l’elenco degli attributi, indicando le chiavi primarie con pk (primary key) e le chiavi esterne con fk (foreign key).

Lo schema relazionale per il nostro problema risulta il seguente:

Autori (CodiceAutore (pk), Nome, Cognome, DataNascita)

AutoriLibri (CodiceAutore (fk), CodiceLibro (fk))

Libri (CodiceLibro (pk), Titolo, CodiceCasaEd (fk))

CaseEditrici (CodiceCasaEd (pk), NomeCasaEd, Città)

3.4666666666667 1 1 1 1 1 Rating 3.47 (15 Votes)
Giorgia Pisacreta ha esclamato Eureka!
...perchè da oggi è su Scienze a Scuola!
Matteo Marongiu ha esclamato Eureka!
...perchè da oggi è su Scienze a Scuola!
Gloria Cirano ha esclamato Eureka!
...perchè da oggi è su Scienze a Scuola!

Altri stanno studiando...


Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home2/scienzeascuola/public_html/modules/mod_jf_mobilemenu/helper.php on line 83