Sto violando qualsiasi regola NF sulla progettazione del mio database?


8

Sono un principiante nella creazione di database ... Devo crearlo per la mia applicazione web di reclutamento.

La mia applicazione deve pianificare proiezioni, esami e interviste dei candidati e salvare i risultati nel database.

Lo schema del mio database è il seguente:

inserisci qui la descrizione dell'immagine

Il mio problema è che ho incluso applicant_idsu altri tavoli ... ad esempio esame, colloquio, tipo di esame.

Sto violando qualche regola di normalizzazione? Se lo faccio, cosa mi consigliate per migliorare il mio design?


1
Non credo che nessuno che non abbia una conoscenza specifica del dominio o dell'impresa possa semplicemente guardare il tuo modello di dati e darti consigli realistici su chiavi, vincoli, tipi di dati, ecc. Posso dirti, tuttavia, che qualsiasi colonna nullable violerà un'interpretazione rigorosa di 1NF.
giorno

Risposte:


10

Ci sono alcune cose da considerare oltre alla normalizzazione. Ad esempio, hai una colonna per AGE. Lo aggiornerai ogni anno? Come saprai quando farlo? Lo stesso vale per anni di esperienza.

Ci sono alcune colonne che probabilmente avranno più valori per ciascun candidato: Scuola, Corso, ecc.

Potresti anche voler verificare la tua opzionalità su tali relazioni. In questo momento un candidato deve avere un esame correlato, ma un esame non deve avere un candidato associato ad esso. Immagino che sia all'indietro su come funzionano le cose nella vita reale. Hai problemi simili con tutte le altre relazioni.

Aiuta se leggi le relazioni dopo averle create.


1
Ci sono alcune cose da considerare oltre alle tabelle e alle colonne :) Il mio paese ha leggi sulla protezione dei dati (limite di tempo per la conservazione dei dati, persona ha diritto di accesso ai propri dati, ecc.) E leggi sulla discriminazione basata sull'età che dovrebbero far riflettere almeno due volte i datori di lavoro prima di registrare l'età di qualcuno nella fase del colloquio.
giorno

5

Immagino che in realtà hai bisogno di una relazione da molte a molte tra la tua tabella dei candidati e le altre tabelle principali (principalmente screening ed esame). Che se avessi una proiezione contiene più di un candidato (e la situazione simile per le altre tabelle).

Vedrei un'intervista con un singolo candidato, ma un esame o una sessione di screening con più di un candidato. In questo caso è necessaria una tabella delle relazioni che collegherà lo screening con il candidato.

Vedi qui sulle relazioni Many-To-Many.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.