NORMALIZZAZIONE

di il
12 risposte

NORMALIZZAZIONE

Salve a tutti,
Qualcuno potrebbe aiutarmi con la NORMALIZZAZIONE della basi di dati, gliene sarei grato?
so le definizioni di dip.-funzionali e le varie forme normali ma certe volte ho dei dubbi "semantici" sulle relazioni da normalizzare. per esempiO:

VENDITA(CODICE, CODICE FARMACo, nome farmaco, id categoria farmaco, nome categoria farmaco, id farmacia, nome farmacia, indirizzo farmacia, data,q uantità) o anche
MOVIMENTAZIONI(cod.transazione, tipo transazione, data transazione, codice prodotto, descr.prodotto, categoria prodotto, codice magazzino, locazione magazzino, quantità)
o anche
VINERIA(nome vino, tipo vino, colore uva, nome produttore, indirizzo produttore,telefono produttore, anno, quantità).

diciamo che più che altro ho dubbi sulla chiave: solo CODICE o CODICE e CODICE FARMACO.

La so la def. di PK ma come faccio a capire se una prenotazione è determinata univocamente dal suo codice o si ha bisogno del codice del prodotto?


Cioè essenzialmente la teoria l'ho capita ma mi vengono dei dubbi tipo:
Nella tabella vendite un codice di vendita identifica univocamente il prodotto sulla stesas riga, oppure tipo ci può essere un identificatore esterno da vendita a farmaco e dunque dovrei considerare anche prodotto nella chiave? e farmacia?



spero che qualcuno possa ripondermi per favore, ho l'esame dopodomani e visto che credo che tutto sommato l'ho capito non vorrei lasciarmi questo dubbio che mi agita visto che pare un argomento facile e che tutti l'abbiano capito.

12 Risposte

  • Re: NORMALIZZAZIONE

    .
  • Re: NORMALIZZAZIONE

    Non mi è chiara la spiegazione vista che la OOp non la conosco quasi. Mi sta dicendo che gli oggetti che riesco a individuare mi definiscono le tabelle che devo tener presenti e quindi le chiavi da usare? ma "codice" in vendita poi perchè non l'hai incluso?
  • Re: NORMALIZZAZIONE

    Quella sopra è la spiegazione meno "relazionale" che abbia mai letto
    Non c'entrano nulla gli oggetti con ER, anzi.

    Comunque a parte questo, la risposta è : non lo puoi sapere.
    Le informazioni di tipo semantico non sono derivabili da nulla, bensì dal dominio del problema stesso.

    PS non è esattamente un argomento "facile", è uno (non il più) dei più DIFFICILI. E' facile insegnato male, e con esempi banali.

    Se hai fretta chiedi, e ti sarà svelato
  • Re: NORMALIZZAZIONE

    Infatti, capisco cosa intendi quando dici il dominio. io, in altre parole, dico che quest'argomento mi è ostico perchè "è interpretabile". perchè ad esempio parlando di quegli esempi che ho proposto, se io presumo che una vendita è univoca per ogni articolo, qualsiasi esso sia, allora basta anche solo codice, ma se poi per ogni prodotto c'è un identificatore per vendita allora devo mettere anche cod. prodotto, peggio ancora se poi una vendita all'interno di varie farmacie ha lo stesso codice, devo mettere sia codice, sia cod farmaco, sia cod farmacia come chiave.
    Quindi è questo il miop dubbio? Tu hai qualche consiglio?
  • Re: NORMALIZZAZIONE

    Il tuo dubbio è corretto (o meglio comprensibile).
    Ti segnalo, così per dire, che non è affatto detto che esista una singola vendita per un singolo articolo (nel caso delle farmacie è così, ma in generale no), poichè possono esserci i resi.
    Quindi lo stesso bene può essere venduto più volte, perchè si esercita il diritto di recesso eccetera (se pensi a Amazon un buon 20% - dicono - ricade in questa categoria).

    Come vedi a livello "bimbominkiesko" (cioè gli esercizi) è facile, nel mondo "normale" non lo è affatto.
    Così, tanto per darti altro motivo di riflessione, che succede se vogliamo un archivio aggiornato da più farmacie diverse, contemporaneamente? (vabbè... fai finta di niente... perchè è un argomento un po' troppo avanzato, per ora)
  • Re: NORMALIZZAZIONE

    Poi, così tanto per dire, su questa c'è parecchio da dire, sia a livello di dipendenza funzionale, che di finta dipendenza (cioè qui ci scapperebbe una domanda tipica che facevo, giusto per capire se lo studente ha capito qualcosa).

    MOVIMENTAZIONI(cod.transazione, tipo transazione, data transazione, codice prodotto, descr.prodotto, categoria prodotto, codice magazzino, locazione magazzino, quantità)

    Che mi dici di magazzino, e locazione magazzino?
  • Re: NORMALIZZAZIONE

    Con questi dubbi non so come farai l'esame, comunque:

    Iniziamo a capire quali sono gli obiettivi della normalizzazione (per gli appassionati dei database relazionali)
    Banalmente: Eliminare la ridondanza delle informazioni e garantire l'integrità dei dati

    Esempio del caso VENDITA(CODICE, CODICE FARMACo, nome farmaco, id categoria farmaco, nome categoria farmaco, id farmacia, nome farmacia, indirizzo farmacia, data,q uantità)

    Migliorabile ha identificato tre entità che entrano in gioco:
    - farmaco
    - categoria
    - farmacia
    aggiungo ovviamente anche:
    - vendita

    Le 4 entità in gioco corrispondono a 4 tabelle.
    Sono tutte tabelle con PK rispettivamente (codice farmaco,id categoria farmaco,id farmacia, codice vendita)
    La tabella vendita avrà anche le FK verso le tabelle (farmaco,farmacia) e quindi (codice farmaco,id farmacia)
    Per queste tabelle non si usa la chiave primaria composta.
    Si possono usare chiavi primarie composte quando la combinazione di alcuni degli attributi dalla tabella rappresenta di per sé una chiave univoca.
  • Re: NORMALIZZAZIONE

    Bhè diciamo che dipende sempre se vogliamo rimanere nell'esempio didattico, o nel mondo "reale" (che è poi quello didattico, se insegnato da qualcuno che sa cosa fa, cosa rarissima)

    Ecco l'esempio
    VENDITA(CODICE,
    [1] CODICE FARMACo, nome farmaco, id categoria farmaco, nome categoria farmaco,
    [2] id farmacia, nome farmacia, indirizzo farmacia,
    data,q uantità)


    Guardando "farmaco" [1] puoi immaginare delle dipendenze funzionali: il codice farmaco implica tutto il resto =>, un po' come il codice fiscale.
    Vero?
    No.
    Guardiamo anche "farmacia" [2], potresti pensare che id farmacia => nome farmacia, indirizzo farmacia.
    Vero?
    No.

    O meglio, è vero nell'ambito che si insegna, ma manca un elemento-chiave, cioè IL TEMPO e gli effetti della normalizzazione.
    Ti è chiaro? (o meglio te lo hanno spiegato?)
  • Re: NORMALIZZAZIONE

    +m2+, il codice farmaco implica tutto ciò che ha "farmaco" nel nome, da come disse il prof. il quale disse espressamente che avrebbero messo tracce che, a partire dai campi dei nomi della tabella, ci avrebbero ben chiarificato le dipendenze. dunque codice farmaco implica anche categoria tra gli altri(a differenza di come dice toki sopra che ha considerato cateegoria a parte), e id farmacia implica nome e indirizzo farmacia. data, quantità sono implicate dalla chiave, che non riesco a definire.
  • Re: NORMALIZZAZIONE

    111 ha scritto:


    +m2+, il codice farmaco implica tutto ciò che ha "farmaco" nel nome, da come disse il prof. il quale disse espressamente che avrebbero messo tracce che, a partire dai campi dei nomi della tabella, ci avrebbero ben chiarificato le dipendenze. dunque codice farmaco implica anche categoria tra gli altri(a differenza di come dice toki sopra che ha considerato cateegoria a parte), e id farmacia implica nome e indirizzo farmacia. data, quantità sono implicate dalla chiave, che non riesco a definire.
    Infatti è come pensavo, cioè il modo sbagliato di insegnare
    Manca l'elemento tempo.
    Supponi che il farmaco aspirina sia oggi nella categoria farmaci da banco.
    supponi che domani venga spostato di categoria, diventando con ricetta medica.
    cosa succede, se hai normalizzato come ti hanno insegnato, e vuoi andare a vedere se una certa vendita è stata relativa a un farmaco da banco?
  • Re: NORMALIZZAZIONE

    La variabile tempo, e quindi maggiore precisione la attuiamo nei modelli er e nelle prog. logiche ma nelle normalizzazioni il prof ha spiegato in questo modo molto "malleabile".
    quindi supponendo la mancata variabile tempo, come procederei in questo caso?
  • Re: NORMALIZZAZIONE

    Sono un poco confuso.
    Prova a spiegarmi cosa succede con un archivio normalizzato se cambi un dato
Devi accedere o registrarti per scrivere nel forum
12 risposte