Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Estacio

Como devo trabalhar com datas?

Recommended Posts

Boa noite,

 

Estou precisando modelar um banco de dados e estou com dificuldade para decidir.

 

seria um projeto de escala de trabalho, eu tenho: Áreas, Horarios, Funcionarios, Agenda

 

Funcionario--->Area<---Horarios

|--->Agenda

 

area tenho id, nome

horarios tenho id, id_area, nome, sigla, inicio, fim

funcionario tenho id, id_area, nome, horariopadrão

 

na tabela agenda, não consigo decidir o modelo...

id_funcionario, ano, mes, dia

ou

id_funcionario, ano, mes, dia1, dia2, dia3,.... dia31

 

sendo que se uso a primeira forma, para cada dia eu tenho um registro, e para mostrar o mes completo eu teria que fazer x selects para x= funcionarios da area * numero total de dias do mes/ano, seriam muuuuitos registros.

 

e no segundo caso eu teria que fazer x selects para x= funcionarios da area do mes/ano

 

Area Tal:

1 2 3 4 5 6 7 30 31

Nome: seg ter qua qui sex sab dom ............... seg..dom

Fulano m m m m m t fo t fo

Fulano2 t t t t t fo t m m

 

manha, tarde, folga

 

 

e para inserir/editar os dados eu precisaria saber só se a linha existe, ja no segundo caso eu precisaria saber se a linha existe e o dia é nulo(sem id_horario).

 

 

Qual é o melhor jeito de modelar uma escala de trabalho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Data, use formato date (datetime).

Normalize, sempre.

 

Para um relatório do tipo sugerido use CASE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como eu modelo a tabela de agenda, com uma coluna dia, ou com varias colunas referentes aos dias do mes?

Quantidade de funcionarios maior que 60

 

id_func, dia1,dia2,dia3,dia4........dia31, mes,ano (em 1 mes 60 linhas)

 

ou

 

id_func, dia, mes, ano (em 1 mes 1860 linhas)

 

Não consigo pensar em outras formas de modelos...

Compartilhar este post


Link para o post
Compartilhar em outros sites
ID_FUNC
DATA

DATA , tem ano,mês, dia etc basta usar as functions que manipulam datas.

 

Acredite, é "mais barato" normalizar que tentar economizar espaço e ter consultas e atualizações complicadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, fiquei preocupado com a quantidade de registros que seriam gerados a cada mês.

 

Para eu gerar um relatório como um calendário do mês com todos os funcionarios da área como ficaria a query?

 

fulano | dia/mes/ano/hora | dia/mes/ano/hora ....

 

qual função eu uso? tem como?

 

ou para cada dia eu teria que fazer um select?

com 60 funcionarios em uma area seriam mais de 1800 selects para voltar os 31 dias do mes, rs

 

 

 

desculpa, não sou bom conhecedor das funcoes do mysql. Nunca tive oportunidade de trabalhar com tal quantidade de registros.. rs



GROUP_CONCAT e depois eu explodo em um array?

 

é a melhor solução? :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.