Avatar billede maage56 Nybegynder
18. juli 2007 - 23:40 Der er 6 kommentarer

Design af indstemplings system

Hej.

Jeg er ved at prøve på at lave et indstemplings system men har ikke helt styr på hvordan min database skal se ud.

Det skal være sådan at man skal kunne se tidligere indstemplinger og udstemplinger for hver person. Kan man gemme det hele i en tabel eller hvordan fungere det?

Intil vidre har jeg det her

en tabel der indeholder

id, navn, indstempling, udstempling
Avatar billede freesite Nybegynder
19. juli 2007 - 11:55 #1
Jeg ville nok lave det sådanne at en tabel indeholder (id, navn) og en tabel indeholder (id, indstempling, udstempling)



Tabel Medarbejder
id, int primary key
Nanv, text

Tabel Stempel
id, int
ind, datetime
ud, datetime
index(id)

Så kan du hurtigt finde alle de poster som indeholder medarbejderens id, og senere udvide det med flere tabeller.
Avatar billede freesite Nybegynder
19. juli 2007 - 12:03 #2
Så hvis du vil have alle ind og udstemplinger fra personen som heddder xx siger du bare

select m.ind, m.ud
from Medarbejder m inner join Stempel S  ON a.id=s.id
where a.navn='xx'

eller hvis du kun vil have ind-stempling fra en person i dag

select m.ind, m.ud
from Medarbejder m inner join Stempel S  ON a.id=s.id
where a.navn='xx' and s.ind=now()
Avatar billede freesite Nybegynder
19. juli 2007 - 12:10 #3
eller over en periode

select m.ind, m.ud
from Medarbejder m inner join Stempel S  ON a.id=s.id
where a.navn='xx' and s.ind between '2007-01-01' AND '2007-07-01'

Dog kan det være et problem hvis flere har samme Navn, så overvej at medarbejder får et bruger id også.
Avatar billede freesite Nybegynder
19. juli 2007 - 12:13 #4
En side med et hurtigt overblik over funktioner

http://www.w3schools.com/sql/sql_between.asp
Avatar billede maage56 Nybegynder
19. juli 2007 - 12:55 #5
Tak jeg kigger lige på det
Avatar billede freesite Nybegynder
19. juli 2007 - 13:51 #6
Men da du aldrig stempler ind og ud samtidig ville det måske være smart at lave det sådanne

Tabel Medarbejder
id, int primary key
Nanv, text

Tabel Stempel
id, int
tid, datetime
ind_ud, tinyint(1)
index(id)

hvor ind_ud=0 indikerer at det er indstempling og ind_ud=1 indikerer udstempling. Så spare du også lidt plads


select m.tid,m.ind_ud
from Medarbejder m inner join Stempel S  ON a.id=s.id
where a.navn='xx' and s.ind between '2007-01-01' AND '2007-07-01' and m.ind_ud=0
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester