Problema basi di dati - SQL

Daniel90
Salve...sto preparando un esame di informatica, ma non ho esercizi svolti sulle basi di dati...volevo sapere se qualcuno mi sa risolvere un problema tipo il seguente:

Dato il seguente schema di base di dati relazionale:
SCUOLA (Nome, Indirizzo, Città, CodPreside)
PERSONALE(CF, Nome, Cognome, Indirizzo, Città , DataNascita, Telefono)
ALUNNO(CF, Nome, Cognome, Indirizzo, Città , DataNascita, Telefono)
CLASSE(Alunno, AnnoScolastico, Classe, Sezione, Scuola)
INSEGNAMENTO (Docente, AnnoScolastico, Materia, Scuola)
Sottolineare le chiavi primarie ed indicare i vincoli di chiave esterna (descrivere eventuali ipotesi
ritenute utili per la scelta delle chiavi).
Esprimere in SQL le seguenti interrogazioni:
a. Trovare i nomi e i cognomi dei bambini iscritti alla scuola “A. Palladio” nell’anno
scolastico 2009/2010.
b. Trovare le diverse materie insegnate nella scuola “Volta” negli anni 2008/2009 e
2009/2010.
c. Trovare Nome e Cognome dei docenti che hanno insegnato “matematica” in qualche
scuola di “Milano”





GRAZIE mille in anticipo!!!

Risposte
xsl
Dove trovi difficoltà?
P.S. Per comporre le queries devi usare gli operatori dell'A.R.

Daniel90
Ehm...sto facendo l'esame di un corso leggermente diverso da quello che ho frequentato (non sto qui a spiegare il perchè)...e quindi di SQL ho letto soltanto una cinquantina di slide in cui si spiega cosa sono le basi di dati, select, where, from e poco più...però non ho esempi a cui rifarmi, gli esercizi che devo fare sono tutti molto simili a quello...

Grazie per la risposta ;-)

xsl
"Daniel90":
di SQL ho letto soltanto una cinquantina di slide in cui si spiega cosa sono le basi di dati, select, where, from e poco più...però non ho esempi a cui rifarmi, gli esercizi che devo fare sono tutti molto simili a quello...

Come ti ho già consigliato cerca di comporre le queries a livello concettuale, cioè usando gli operatori dell'Algebra Relazionale, poi traduci queste in SQL. E' un buono modo per cominciare.

niere
Sottolineare le chiavi primarie = la chiave primaria è un attributo (cioè una delle colonne della nostra tabella, che a sua volta è all'interno del nostro database) oppure una serie di attributi (es. nome + cognome di una persona) che identifica univocamente una tuple (cioè una riga) della tabella. Il problema è che bisogna ragionarci sopra per capire quali sono queste chiavi primarie.
Nel tuo esempio, sperando di non dire cavolate, dovrebbero essere (anche io sto studiando i database e non è così semplice come sembra):

SCUOLA (Nome, Indirizzo, Città, CodPreside) (il nome di una scuola, in genere, è solo uno, non vi è ambiguità con un'altra)
PERSONALE( CF, Nome, Cognome, Indirizzo, Città , DataNascita, Telefono) (il CF basta per individuare il personale)
ALUNNO(CF, Nome, Cognome, Indirizzo, Città , DataNascita, Telefono)
CLASSE(Alunno, AnnoScolastico, Classe, Sezione, Scuola)
INSEGNAMENTO (Docente, AnnoScolastico, Materia, Scuola)

Le chiavi primarie si evidenziano sottolineandole.

Le chiavi esterne invece sono attributi, o serie di attributi, che possono essere usati come chiave primaria per un'altra tabella.

Per fare le interrogazioni (a., b., c.) devi usare le funzioni di "congiunzione", "selezione" e "proiezione".

Forse ti può tornare utile qualche guida on-line
http://database.html.it/guide/lezione/1 ... lazionale/

Rggb1
Non mi torna affatto quell'insieme di attributi, per descrivere la chiave primaria di CLASSE, esempio: se è univoca una istanza <> allora questa esprime un solo alunno/anno/scuola, e non è molto utile...

Analogamente per INSEGNAMENTO: un docente può - direi - insegnare materie diverse, o le stesse in anni diversi (e magari anche in più scuole).

niere
Quindi è meglio fare:

CLASSE(Alunno, AnnoScolastico, Classe, Sezione, Scuola)

L'obiettivo è identificare univocamente una specifica classe con sezione e anno? Boh

INSEGNAMENTO (Docente, AnnoScolastico, Materia, Scuola) ?

Forse era meglio fare prima il diagramma E/R, almeno si capivano le varie associazioni..così è un casino (almeno per me) :?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.