http://imageshack.us/Originariamente inviato da Il Pazzo
qual era il sito per upload-dare file?
http://imageshack.us/Originariamente inviato da Il Pazzo
qual era il sito per upload-dare file?
secondo me, sostanzialmente vi chiede di normalizzare il database...Originariamente inviato da Il Pazzo
Ho notato che il prof chiede spesso agli esami la risoluzione i esercizi di questo genere... il testo è il seguente:
Ma il mio prof che vuole fatto??? Una query???? Vuole spiegato qualcosa??? un altro schema??? che vuole???
quindi dovete fare altri ER e altri tracciati record.
cmq, posta l'esame e vediamo se si capisce meglio![]()
I got the remedy
Premesso che son passati due anni da quando ho fatto basi di dati e che ho rimosso gran parte della teoria ER e della relativa terminologia, mi pare che quello che ti chiede sia una valutazione generale.
Ordine è in relazione molti-a-molti con articolo, che a sua volta è in relazione uno-a-uno con fornitore. Il che significa che ogni ordine ha uno o più articoli, ciascuno dei quali preso da un fornitore a un certo prezzo unitario (nella relazione acquisto). Ora, il prezzo totale può essere salvato come attributo di ordine o calcolato al volo passando attraverso tutte e due le relazioni (per questo è un campo ridondante). Nel primo caso l'operazione "visualizza ordine con prezzo" richiede una singola lettura, nel secondo invece è molto più onerosa; all'opposto, se il campo non esiste l'operazione "aggiungi articolo al dettaglio" ha costo minimo, se invece esiste ogni volta che si aggiunge un articolo bisogna ricalcolare e aggiornare il campo ridondante.
La scelta migliore dipende dalla frequenza con cui si fanno le operazioni e dai volumi: se in un giorno fai 1000 volte l'operazione 1 e 1 volta la 2, conviene sicuramente tenere il campo altrimenti no. Basandosi sulle frequenze indicate, il campo dovrebbe restare, però bisogna anche considerare i volumi (per la componente "memoria utilizzata" del tradeoff, forse? boh) e all'1.39 non ho voglia di farlo.![]()
PS. il modello ER != SQL, non devi pensare in termini di query perché il modello va trasformato prima di realizzarlo su un database relazionale.
EDIT: e infatti adesso mi sovviene che (1,N) e compagni si chiamano cardinalità, che si parla di associazioni e non di relazioni e che uno-a-molti e compagni sono nello schema logico, non nel concettuale![]()
Ahhh... ma quindi credi che devo scrivergli una cosa simile a quella che mi hai scritto tu oppure devo calcolare se mi conviene tenere il campo ridondante o no?
Mi pare che da qualche parte negli appunti dovrei avere un metodo... un qualcosa.... per calcolare se conviene lasciare un campo ridondante o se conviene eliminarlo.....
Il secondo esempio è banale, tradurre uno schema concettuale in schema relazionale è una delle cose fondamentali che si spiegano in un corso di basi di dati. Come fa a sembrarti oscuro? E' come arrivare all'esame di analisi senza sapere come si fa uno studio di funzione.![]()
No... cioè... cavolo... ma lo schema relazionale non è quello che mi ha disegnato lui??? Oppure intende lo schema logico???Originariamente inviato da Anderville
Il secondo esempio è banale, tradurre uno schema concettuale in schema relazionale è una delle cose fondamentali che si spiegano in un corso di basi di dati. Come fa a sembrarti oscuro? E' come arrivare all'esame di analisi senza sapere come si fa uno studio di funzione.![]()
Il problema sostanzialmente suppongo che diversi docenti e diversi libri di testo chiamano le stesse cose in maniera diversa...
Io intendo schema relazionale il disegno... e schema logico la trasformazione in tabella...
Forse il prof intende per schema relazionale quello che io intendo per schema logico?
Schema relazionale = tabelle (che è uno schema logico direi, ma su questo non sono sicuro). Comunque
http://it.wikipedia.org/wiki/Modello_relazionale
http://it.wikipedia.org/wiki/Modello_E-R
Non sono cose che puoi non sapere andando a fare l'esame di basi di dati!
ah ecco.... forse facevo solo un pò di confusione con i nomi....
beh allora il secondo esercizio dovrebbe essere piuttosto chiaro....
devo trasformare quello schema in modello relazionale, cioè ad esempio così:
però eliminando la ridondanza e facendo le opportune modifiche alle tabelle per quanto riguara i vincoli di integrità referenziale....Articolo (Codice, Descrizione, Prezzo_unitario, Fornitore)
Fornitore (Id_Fornitore, Nome, Telefono, Indirizzo, Città)
Dettaglio_ordine (Ordine, Articolo)
Con ridondanza
Ordine (Id_Ordine, Data, Totale_prezzo)
Senza ridondanza
Ordine (Id_Ordine, Data)
Con i seguenti vincoli di integrità referenziale
Fornitore di Articolo con Fornitore
Ordine di Dettaglio_ordine con Ordine
Articolo di Dettaglio_ordine con Articolo
giusto?
Sì, eventualmente passando anche per lo schema concettuale ristrutturato. Nel primo esempio mi pare (sottolineo mi pare) non serva, nel secondo come minimo va eliminata la generalizzazione "Persona Fisica"/"Società" in "Cliente". Per farlo ci sono delle regole pratiche, dovresti averle nel libro di testo o in qualche dispensa.Originariamente inviato da Il Pazzo
ah ecco.... forse facevo solo un pò di confusione con i nomi....
beh allora il secondo esercizio dovrebbe essere piuttosto chiaro....
devo trasformare quello schema in modello relazionale, cioè ad esempio così:
però eliminando la ridondanza e facendo le opportune modifiche alle tabelle per quanto riguara i vincoli di integrità referenziale....
giusto?