Come posso mantenere un record del database di un'entità che appartiene a diverse categorie di un'altra entità, per anno, per stagione, ecc.

1

Sto costruendo un tipo di sistema di gestione della scuola.

Voglio gestire i record del database di cose come valutazione, durata / stagione, anni accademici. ogni informazione deve appartenere a un particolare anno accademico, quindi in qualsiasi momento l'amministratore può richiedere informazioni relative ad un particolare anno. Anche la valutazione può appartenere non solo a un anno accademico, ma a un termine, a una lezione, a una materia, anche a uno studente.

Ho capito come sviluppare uno schema di database scalabile per questo. Ho pensato di avere database separati per ogni anno, o di combinarli ciascuno su una tabella molto diversa, ma come riferire correttamente ogni valutazione a un particolare studente, soggetto, classe, termine e anno è ancora la mia confusione sull'intera questione.

    
posta Wisdom Ugoo 31.07.2016 - 20:10
fonte

2 risposte

2

Consente di ottenere queste informazioni insieme e provare qualche soluzione.

Per iniziare: ogni tabella ha una colonna ID che può essere referenziata da altre tabelle. Supporrò che la colonna sia denominata ID e che le colonne di riferimento siano tablename_id.

Quindi da quello che descrivi presumo le seguenti tabelle (e riferimenti):

ACADEMIC_YEARS

TERMINI (academic_year_id)

SOGGETTI

CLASSI (subject_id, term_id)

STUDENTI

ISCRIZIONI (student_id, class_id)

VALUTAZIONI (enrollment_id)

Quindi le iscrizioni definiscono quali classi prende uno studente. Le classi fanno riferimento all'oggetto e al termine. Ciò significa che la stessa classe deve essere creata di recente per ogni termine, quindi assumere una classe è una cosa temporanea. Puoi spostare il term_id dalla classe alla registrazione se le classi sono sempre le stesse anche se questo sembra molto improbabile.

Una valutazione si riferisce a un'iscrizione. Quindi 'sa' quale classe (e quindi soggetto e termine) e quale studente sono valutati dai riferimenti.

Non sono sicuro della tua descrizione se questa forma di valutazione è sufficiente o se ci sarebbero anche altre valutazioni a livelli più alti. Quindi, per favore chiarisci questo punto.

    
risposta data 01.08.2016 - 11:04
fonte
1

Tutto ciò che è successo ha avuto una data e ora è successo. Al momento in cui accadeva ci sono categorie in cui è caduto. Un anno accademico, una stagione, un semestre, un blocco, qualunque cosa.

Dato che stai facendo un database relazionale, un modo per farlo è attraverso chiavi esterne. Un anno accademico potrebbe avere molte valutazioni che indicano che sono accaduti quell'anno. Tuttavia, sarebbe sciocco a meno che il record dell'anno non avesse alcune informazioni utili su quell'anno a cui stai cercando di collegarti. Altrimenti è meglio elencare l'anno nel record di valutazione.

Cerca le forme normali. Ti insegneranno come costruire queste relazioni. Siate consapevoli del fatto che più la struttura è complicata, più difficile è scrivere query su di essa. Inoltre, tieni presente che se crei solo un enorme tavolo potresti scrivere tutto in un file di testo. Il trucco è trovare l'equilibrio tra gli exteram.

    
risposta data 31.07.2016 - 21:13
fonte