Witam,
Mam problem z bazą do prowadzenia ewidencji czasu pracy (ok. 50 pracowników). Wstępnie czas pracy podzieliłem na 2 tabele, dni wolne i robocze. Z wolnym nie mam problemu. Ale nie wiem czy dobrze myślę z roboczymi. Muszę mieć podział na numery zleceń i podzleceń (w roku 300-400). Często jeden pracownik w danym dniu pracuje nad jednym zleceniem, ale czasem nad kilkoma i tu mam problem z zapytaniem.
selectem potrzebuję uzyskać np. listę:
id_prac, data, zlecnie1, zlecenie2, zlecenie2_1, ...


1. koncepcja tabeli:
id_prac, data, zlecenie1, zlecenie2,....
Każde nowe zlecenie/pod zlecenie dodawałoby nową kolumnę do tabeli. W kolumnach zleceń przechowywałbym ile godzin w danym dniu dany pracownik przepracował.
Zalety: Byłoby bardzo prosto dodać/pobrać dane.
Wada: Tabela stałaby się olbrzymia i przechowywała głównie zera.
Wniosek: zła koncepcja.

2.koncepcja tabeli:
id_prac, data, godzin, id_zlec
Zalety: prosta budowa tabeli, łatwo dodać dane.
Wada: nie mam pomysłu jak wydobyć z takiej tabeli takie zestawienie:
id_prac, data, zlecnie1, zlecenie2, zlecenie2_1, ...

Ogólnie uzyskać taką tabelkę:
www.rynekpracy.lublin.pl/upload/SF_fkecp.dot
tyle, że u mnie poza tym co widać, będzie długa lista zleceń (coś jak tu czas nieobecności).

Wstępną koncepcję mam taką, żeby dla danego miesiąca zrobić 30/31 zapytań:
select * from tabela where id_prac=1 AND data=2010-03-01
select * from tabela where id_prac=1 AND data=2010-03-02 ......

wcześniej bez problemu z innej tabeli pobiorę id_zlec dla danego miesiąca i w efekcie końcowym wyrysuję potrzebną mi tabelę, ale wydaje mi się, że to rozwiązanie chociaż działające, to jest nieeleganckie, bo wymaga aż 30/31 zapytań dla wyrysowania 1 tabeli.

Inny problem - nie mam doświadczenia z większymi bazami. Po np. pół roku taka tabela będzie mieć ok. 15 tys. "wierszy", kiedy pojawią się problemy.