Sto progettando un sistema di gestione stipendi Ho progettato un database con diverse tabelle e questa domanda è correlata alle seguenti tabelle
EMPLOYEE (Employee_ID [pk], Name,... etc)
LOCATION (Location_ID [pk], Name, Address, ...etc)
Queste due tabelle hanno molte o molte relazioni in quanto un dipendente può lavorare in diversi luoghi e in una posizione, diversi dipendenti stanno lavorando.
Queste due tabelle sono correlate attraverso la tabella ATTENDANCE
.
ATTENDANCE (Employee_ID, Location_ID, Shift_Type, In, Out)
Il tipo di spostamento potrebbe essere "Giorno" o "Notte" e "In" / "Fuori" i campi sono campi DateTime
. Il tipo di turno viene deciso in base alla data nel campo "In". Ad esempio, se il campo In
di un dipendente è detto - 06/22/2014 07:30:00 PM
, il tipo di turno è Night
e il turno appartiene al 22/06/2014. (il suo Out
tempo sarebbe 23/06/2014 07:30AM
, cioè il giorno successivo)
LA CONDIZIONE è che, un Dipendente non può lavorare lo stesso turno nella stessa data due volte anche in due posizioni. Ma un dipendente può lavorare Giorno in un luogo e Notte in un'altra posizione.
La mia tabella iniziale di selezione della chiave primaria era (Employee_ID + In)
ma ciò non è corretto in quanto un dipendente può eseguire lo stesso turno nello stesso giorno se il In
è leggermente diverso in due occasioni.
Quindi ora so che la chiave primaria dovrebbe essere qualcosa come (Employee_ID + Shift_Type + Shift_Date)
. Ma il problema è che non ho un campo Data nella tabella PRESENDANCE. Ma ho In
campo che è un campo DateTime
.
Saltando che la mia comprensione del problema sia corretta ...,
La mia domanda è, senza aggiungere un altro campo alla tabella PRESENDANCE come Shift_Date
, c'è la possibilità di ottenere la parte Date del campo In
, quando si crea un PRIMARY KEY
per questa tabella?