Modellazione di una relazione applicazione / comitato studente

0

Sto sviluppando un ERD per un programma di gestione degli studenti laureati (è per una lezione universitaria, quindi è un'implementazione abbastanza banale).

In questo frammento di modello, sto cercando di elaborare le entità / relazioni 'applicazione' e 'comitato'. Fondamentalmente, un comitato - composto da membri dello staff - può essere formato e assegnato per esaminare un'applicazione. Ecco le entità che ho trovato:

  • applicazione: composta dai dati delle domande di uno studente inviate tramite un modulo (id dello studente, data di presentazione, laurea, ecc.).
  • comitato: autoesplicativo. Gruppo di membri dello staff che possono esaminare le applicazioni.
  • staff_member: qualsiasi membro della facoltà.
  • committee_membership: Un'entità associativa che ho creato per risolvere i molti-a-molti tra la commissione e membro del personale dal momento che una commissione può avere molti membri dello staff, e un membro del personale possono appartenere a molti comitati.

Questa è un'implementazione efficace di ciò che sto cercando di fare? Sto ancora cercando di avvolgere la mia mente su entità associative e quando sono necessarie. Sembra strano avere il tavolo 'comitato' con una singola colonna. Inoltre - e so che ti ho dato informazioni limitate - le mie relazioni sembrano generalmente corrette?

    
posta Tyler Daniels 03.10.2013 - 00:06
fonte

3 risposte

4

Questa è solo una rapida valutazione del tuo ERD, quindi non prenderlo come un elenco completo di ciò che potrebbe essere necessario aggiungere o modificare per renderlo completo per le tue esigenze ...

In primo luogo, suggerirei che l'entità del comitato a colonna singola dovrebbe avere un nome e forse una descrizione. Potresti anche aver bisogno di altre informazioni allegate a quel tavolo, come la data in cui il comitato è stato formato e quando è scaduto. Ma sicuramente una sorta di nome umano-friendly al minimo. Se tu avessi il compito di stampare un rapporto sui comitati e il loro lavoro durante l'anno scorso, vorresti sicuramente più di un semplice ID per identificarli, giusto?

Secondo: dove pensate di mantenere l'esito delle deliberazioni della commissione? Probabilmente vorrete registrare da qualche parte se l'applicazione è stata approvata, non approvata, o se è stata rinviata per modifiche / ulteriori informazioni. Si potrebbe anche volere un campo note sull'applicazione per spiegare le ragioni del comitato per la loro decisione, qualunque sia la decisione.

Quando pratichi questo tipo di esercizi, è utile tenere a mente quali potrebbero essere i possibili usi finali dei dati, quindi continua a chiedersi "e se ...?" per un po 'cercheremo di trovare colonne probabili per ogni entità. Saranno creati report per questi dati? Che tipo di rapporti? Che cosa succede se un'applicazione è contrassegnata per richiedere ulteriori informazioni e inviarla nuovamente: deve tornare allo stesso comitato per il secondo ciclo di approvazione o potrebbe ricadere in un nuovo comitato per gestire la revisione della domanda?

    
risposta data 03.10.2013 - 00:45
fonte
3

Senza alcuna colonna aggiuntiva nella tabella 'comitato', la sua esistenza può sembrare strana, ma questa è la forma normale corretta. Altre informazioni potrebbero essere aggiunte a questa tabella come il nome di un comitato, la data di creazione, ecc ... che renderebbero la tabella più utile e forse meno strana.

    
risposta data 03.10.2013 - 00:40
fonte
2

Oltre a quanto detto prima, la tabella di intersezione dovrebbe avere entrambe le colonne FK definite come obbligatorie (non null) a meno che non si introduca una colonna del numero di sequenza per rappresentare il PK (che non è richiesto dall'azienda qui).

Il concetto M-M è semplice. Nel tuo caso, in quale altro modo potremmo rappresentare quel comitato C1 che ha membri M1, M2, ..., Mn? Non possiamo creare un numero fisso di colonne (contro la normalizzazione) e non sappiamo nemmeno quanti saranno. Quindi dobbiamo rappresentare la relazione di ciascun membro con un comitato in una riga separata. Lo stesso è vero se lo guardi dal lato del membro. Abbiamo bisogno di memorizzare informazioni come M1, C1, C2, C3, ..., Cn. Lo stesso argomento vale. Di conseguenza hai trovato la tabella di intersezione.

Esistono molte risorse che mostrano M-M - Qui Pattern M-M

    
risposta data 03.10.2013 - 14:56
fonte

Leggi altre domande sui tag