Database
 sql >> Base de Dados >  >> RDS >> Database

Como armazenar os horários dos funcionários em um banco de dados


Nível:Iniciante

Muitas organizações enfrentam o problema comum de armazenar agendas de funcionários. Não importa a instituição:uma empresa, uma universidade ou simplesmente uma pessoa física, muitas entidades precisam de um aplicativo para visualizar os horários. Por isso, tentarei criar um modelo de banco de dados e depois, em um artigo futuro, falaremos sobre um aplicativo simples para armazenar os horários dos funcionários em um banco de dados.

Atualmente o design é o seguinte:

O modelo é bem simples.

Dica – Estratégias-chave naturais e substitutas
  1. Use uma chave primária substituta sempre que os valores da chave natural puderem ser alterados ou quando uma chave natural for muito complexa.
  2. Se uma chave candidata natural consistir em um pequeno número de colunas (idealmente apenas uma) e seus valores não mudarem, use-a como uma chave primária natural

Saiba mais sobre chaves primárias naturais e substitutas.

O employee A tabela contém atributos básicos que descrevem cada funcionário, por exemplo:nome, sobrenome, endereço e telefone. Nome e sobrenome não identificam exclusivamente cada registro (pode haver mais de uma pessoa com o mesmo nome e sobrenome), por isso uma nova coluna foi introduzida (id ), chamado de chave substituta .

A schedule tabela contém os dias e horas em que cada funcionário está no trabalho. O work_date coluna especifica um dia em que cada funcionário estava trabalhando. O start_work_hour e end_work_hour colunas identificam as horas de trabalho para aquele dia.

Vamos supor que temos um funcionário chamado Peter. Ele estava no trabalho em 4 de fevereiro e marca seu horário de início e término na programação.

A linha correspondente na schedule tabela fica assim:

id employee_id data_trabalho start_work_hour end_work_hour é_feriado é_fim de semana
1 1 2015-02-04 10 16 0 0



Ao construir tal sistema, podemos querer saber quem trabalhou mais noites ou quem trabalhou mais fins de semana/feriados. Para gerar relatórios que contenham tais informações, as colunas is_holiday e is_weekend foram introduzidos.

Usando essa abordagem, você precisará ter uma tabela separada para feriados que contenha as datas dos feriados da empresa. Quando um funcionário insere seu horário de trabalho, as colunas is_holiday e is_weekend pode ser atualizado usando um gatilho. Após inserir a data e hora, o trigger verificará se a data é feriado ou final de semana e inserirá o valor correto no campo.