Esercizi consigliati sui database

A seguito della vostra richiesta vi consiglio i seguenti due esercizi. Non appena avrò avuto un adeguato feedback sul loro svolgimento ed in funzione delle difficoltà che avrete incontrato ve ne suggerirò degli altri. Inserite di seguito i commenti in cui proponete le vostre soluzioni o ponete domande.

Esercizio 1

E’ richiesta la progettazione concettuale e logica del database di seguito descritto per la gestione dei dati relativi ad un campionato di calcio.
Per ogni partita, descrivere il girone e la giornata in cui si è svolta, il risultato del primo tempo e il risultato finale, la data, le squadre coinvolte nella partita, con nome, città della squadra e allenatore e infine per ciascuna squadra se ha giocato in casa. Si vogliono conoscere i giocatori che giocano in ogni squadra con i loro nomi e cognomi, la loro data di nascita e il loro ruolo principale.

Scrivere le seguenti query SQL (si consiglia di realizzare il database in MS Access):
elenco delle squadre
elenco delle partite della prima giornata
elenco dei giocatori di una determinata squadra

Esercizio 2

E’ richiesta la progettazione concettuale e logica del database di seguito descritto per la gestione dei dati relativi all’anagrafe del comune di Chissadove con cittadini e famiglie. Il database deve memorizzare le informazioni sui cittadini nati nel comune e su quelli residenti in esso; ogni cittadino è identificato dal codice fiscale, ha un cognome, nome, sesso e data di nascita. Per i nati nel comune sono registrati anche gli estremi di registrazione anagrafica (numero del registro e pagina), per i nati in altri comuni è registrato il comune di nascita.
Per le famiglie va memorizzato il nome del capofamiglia (ogni famiglia ha un capofamiglia e zero o più membri), il grado di parentela con il capofamiglia (coniuge, figlio, genitore o altro); ogni cittadino residente appartiene ad una e una sola famiglia; tutti i membri di una famiglia hanno lo stesso domicilio (via, numero civico, interno).

Scrivere le seguenti query SQL (si consiglia di realizzare il database in MS Access):
Elenco delle famiglie e rispettivi capifamiglia
Elenco dei cittadini nati nel comune
Elenco delle famiglie che abitano in una data via

12 Commenti a “Esercizi consigliati sui database”

  1. GRAFFEO.FRANCESCO scrive:

    professore( relativo all’esercizio 1), ma girone è entità cn attributi data, risultati partita?

  2. cossentino scrive:

    Giornata dovrebbe essere una entità contenente il numero della giornata (prima, seconda, … oppure semplicemente 1,2,3,…)
    Girone a questo punto potrebbe essere in relazione con Giornata (un girone prevede lo svolgimento di certe giornate di torneo). Ad esempio il girone invernale potrebbe prevedere le prime 20 giornate mentre quello estivo le successive 20.
    Risultati partita è OVVIAMENTE un attributo di partita.
    Un errore di questo tipo discende da una inesatta applicazione delle regole di identificazione di entità, attributi e relazioni.
    Riveda quanto descritto qui.

  3. GRAFFEO.FRANCESCO scrive:

    Allora, seguendo il suo consiglio, giornata è in relazione con girone, girone è in relazione con squadre e squadre è in relazione con giocatori?

  4. cossentino scrive:

    Girone in relazione con giornata (un girone è composto da molte giornate)
    Giornata in relazione con partita (in una giornata si giocano molte partite)
    Partita in relazione con Squadra
    Squadra in relazione con giocatore

    (tutti i nomi di entità vanno al singolare)

  5. jessica scrive:

    salve professore riguardo all’esercizio sul database del campionato di calcio volevo sapere se è errato considerare giornata e girone attributi o
    meglio:
    io ho considerato come entità le seguenti:
    campionato di calcio in relazione con partite e girone e giornata attributi di partirte;
    squadre in relazione con partite e giocatori in relazione con squadre.
    ho pensato che la ralazione tra squadre e partite sia n:n per cui quando
    faccio le tabelle ne avrò una in più con il nome della relazione e questa conterà come attributi le chiavi primarie di squadre e relazione.
    per specificare il tipo di questi due attrbuti dovrò dire che sono contatori o interi lunghi?(sempre nella tabella che prende il nome della relazione)
    inoltre riguardo la terza query è esatto rispondere nel seguende modo?
    SELECT id,nome,cognome,data di nascita,ruolo
    FROM giocano.id giocatori
    WHERE giocano.id squadre=squadre.id
    AND suadre.id=3(per esempio)
    [giocano è il nome che ho dato alla tabella nata dalla relazione n:n tra squadre e partite]

  6. cossentino scrive:

    Rispondo alla richiesta di jessica:
    ho difficoltà a seguire nel dettaglio la soluzione da lei proposta. Le consiglierei di realizzare l’erd e pubblicarlo.
    In linea di massima la sua idea non dovrebbe essere sbagliata ma devo dire che i dettagli mi sfuggono senza l’ERD.

  7. jessica scrive:

    a causa di un problema con la connessione le invio il mio erd nel pomeriggio mi scuso ancora

  8. jessica scrive:

    professore le invio il mio ERD via email perchè qui non me lo fa caricare.

  9. Anna.Ciaccio scrive:

    Salve professore, riguardo all’esercizio due, nella prima parte, quando fa distinzione tra i nati nel comune e quelli residenti in esso; io non ho ben capito come procedere; ho considerato come entità di questa prima parte:cittadino, nato_comune,residente_comune, ma non sono sicura abbia fatto correttamente.Riguardo al primo esercizio, le ho mandato un email con allegato il modo in cui l’ho svolto.

  10. geraci.fabio scrive:

    Salve professore, la mia risoluzione sul database del calcio è la seguente contenuta in questo link:
    http://img4.imageshack.us/img4/1092/databasecalciok.png

  11. cossentino scrive:

    Rispondo a Geraci:
    Riguardo all’entità partita:
    -Squadre coinvolte viola una delle regole di normalizzazione (vedasi http://www.pa.icar.cnr.it/cossentino/access/4_3.html). Inoltre basta mettere la relazione con Squadra (errore abbastanza grave). viene il dubbio che non abbia ben compreso le relazioni.
    -girone non ha ragione di esistere come attributo, semmai mettiamo una relazione con l’entità girone .
    lo stesso per giornata.
    non capisco la ragione dell’attributo n°partita.

    Entità giornata.
    non mi piace affatto una data come chiave primaria.
    Semmai il numero di giornata affiancato dall’anno del campionato (es. 08-09). Ottenendo così una chiave multipla.

    Entità girone:
    perchè due attributi per andata e ritorno? Meglio mettere solo andata come booleano. Se è vero il girone è di andata, se è falso di ritorno.
    Non basta Anno come chiave primaria (ci sono sempre almeno due gironi dentro ogni anno).

    Entità giocatore:
    come avrà ormai capito l’attributo squadra non va messo.

    Come regola generale:
    la esistenza di una relazione comporta la introduzione delle chiavi esterne (o la creazione di una tabella aggiuntiva per relazioni n:n) ma solo nel progetto logico. Cioè DOPO l’ERD.
    Nell’ERD tali attributi non vanno considerati in quanto rappresentati dalle relazioni.

  12. cossentino scrive:

    non ho ancora visto nessun esempio di codice SQL.
    Vi esorto a scrivere il codice delle query richieste dagli esercizi.

    Ovviamente per poter scrivere il codice SQL dovete aver completato il progetto logico dopo quello concettuale.

Lascia un Commento

Devi aver fatto il login per inviare un commento