2010-08-05 8 views
8

Potete mostrarmi come ottenere questo ERD in 5a forma normale? Abbiamo fatto ieri un incarico di classe in cui abbiamo ricevuto un vero cliente e ci ha spiegato il suo bisogno, il mio gruppo ha inventato questo modello. Sto cercando di fare un ulteriore passo avanti e vedere se riesco a portarlo alla 5a forma normale in modo da posso capire meglio la prossima settimana faremo un altro gruppo ERD che dovrà essere in 5nf, la cosa è che non so da dove cominciare e il libro non mi sta arrivando. ragazzi potete aiutarmi. Erd Model http://img534.imageshack.us/img534/2118/capturekk.jpgAiuto per la normalizzazione del progetto di database necessario (5nf)

Nuove informazioni "Clienti falsi bisogni"

Il cliente ha 2 dipartimenti "Lab 1, Lab 2" che ordinano prodotti medici da lui, come guanti e pi animali domestici ecc .. i reparti sono cresciuti e lui vuole tenere traccia di ciò che è in inventario quello che i venditori stanno vendendo chi ha il miglior prezzo e quanto costa il centro da cui proviene.

Il modo in cui spiegato l'articolo è ordinato è che un individuo va a lui e chiede forniture poi scrive giù quello laboratorio la persona è da nome di persone e ciò che centro di costo a disegno di legge. ma lui vuole anche tenere traccia di ciò che è stato acquistato per data e cosa è disponibile e cosa deve essere acquistato. Ha anche dato un esempio che alcuni utenti vogliono elementi da un fornitore specifico che potrebbe non avere i prezzi migliori e lui riceve anche alcuni cataloghi nelle mail con prezzi troppo che vuole pista.

Mi scuso se è confuso ma questo è tutto dalla memoria.

+0

C'è qualcosa che ti fa pensare che questo non è già in 5NF? –

+0

Studiare le definizioni di queste forme su Wikipedia mi porta a sospettare che lo sia, anche se seguirò la discussione con interesse. –

+0

Si prega di chiarire la logica di business alla base di questo modello: si tratta di un sistema di tracciamento degli acquisti, ossia la visione di un cliente degli ordini che hanno collocato con vari fornitori, piuttosto che il caso più comune di un fornitore che tiene traccia degli ordini effettuati dai clienti. – APC

risposta

4

Sto per sporgermi e dire che il tuo schema attuale non ha alcuna idoneità per 5NF. Facendo una citazione da wikipedia, si dice maggior parte dei tavoli 4NF già conformi alle 5NF:

Uso Solo in rare situazioni fa un tavolo 4NF è conforme alle 5NF. Queste sono situazioni in cui un vincolo reale del mondo reale dei valori di attributo nella tabella 4NF non è implicito in nella struttura di quella tabella. Se tale tabella non è normalizzata 5NF, il onere di mantenere la logica coerenza dei dati all'interno della tabella deve essere effettuata in parte dall'applicazione responsabile inserzioni, delezioni, e aggiornamenti esso; e vi è un elevato rischio che i dati all'interno della tabella saranno diventare incoerenti. Al contrario, il design 5NF esclude la possibilità di tali incoerenze.

http://en.wikipedia.org/wiki/Fifth_normal_form

Forse lo scopo non è quello di rendere il vostro 5NF base di dati, ma per capire la sua struttura rispetto al 5NF e fare un argomento per il motivo per cui potrebbe essere già in 5NF.

Aggiornamento: leggere qualche forma di consenso dai commenti, sembra il vostro disegno potrebbe essere già in 5NF, se era da disegno o per caso da un precedente passaggio di normalizzazione.

+0

Ma può essere ulteriormente migliorato è quello che voglio davvero sapere, stavo guidando il gruppo quando abbiamo fatto impazzire questo grafico ed è stato principalmente il mio input che compone l'ERD ma è stato per lo più per caso e facendo riferimento ad alcune diapositive che avevamo precedentemente recensito in classe. –

+0

Ok, quindi la mia domanda principale è che l'hai fatto diversamente? se sì, cosa faresti per rendere questo un solido design 5nf. –

+0

Sembra abbastanza solido per me - hai aggregato i dati correlati (cioè un'entità con i suoi attributi) nelle proprie tabelle, hai diviso i tuoi molti a molti. Penso che tu abbia bisogno di un set di risultati più complicato per dimostrare 5NF. Guardando la voce wiki, l'esempio mostrato era abbastanza specifico. Penso che il design attuale sia buono - se non lo è, allora il docente può segnalare eventuali mancanze. –

1

Disclaimer: Senza conoscere la tua logica aziendale, potrei sbagliarmi completamente con alcuni dei seguenti suggerimenti.

Ok alcune cose che ho visto nello schema del database.

  1. La tabella del centro di costo sembra essere sia una tabella di ricerca che di associazione. Pertanto, se si dispone di una quantità prestabilita di centri di costo, diciamo 5 per esempio ma 1000 utenti, questa tabella avrà 5000 record che memorizzano tutti il ​​nome del centro di costo (ciò presuppone che l'assegnazione del centro di costo non sia univoca per ciascun utente). Potresti voler suddividere l'associazione utente in una tabella separata che ha il proprio PK e FK di costcenterId e userId.
  2. La tabella di inventario, che presumo memorizza la quantità di magazzino a disposizione per un articolo, dovrebbe richiedere solo una quantità non precisa per determinare la descrizione. Se la descrizione non è univoca per ogni inventario di articoli, è possibile dividerla nella sua tabella di ricerca e fare riferimento alla tabella di inventario.
  3. Si sta memorizzando "lineQuantity" nella tabella del fornitore. A cosa serve questa colonna. Sembra che si riferisca ad un ordine specifico in qualche modo (quantità di oggetti acquistati?) Se è così, vorresti dividerlo nella sua tabella e associarlo con l'ordine e non con il venditore. senza sapere esattamente che lineaQuantity è se questo suggerimento potrebbe essere completamente sbagliato.
  4. Ultimo suggerimento non sicuro se questo è importante per la tua classe. Stai definendo tutti i tuoi tipi di dati come CHAR (10), potresti volerli modificare come veri e propri tipi di dati che useresti per il database.