Zadejte hledaný výraz...

Struktura DB, rezervace

Steeta
verified
rating uzivatele
(3 hodnocení)
13. 6. 2016 13:31:19
Ahoj, mám takový dotaz.
Řekněme, že mám pro danou zakázku zabraný datum 1.5. - 30.5., k tomu potřebuji přidělit dělníka od 1.5. - 30.5.
dále je možnost, že v průběhu zakázky budu dělníka potřebovat jinde a tudíž ho na zakázce budu mít pouze v rozmezí 1.5. - 10.5. a pak zpět bude od 15.5. - 30.5.
(pracovníků bude přiděleno několik k jedné zakázce)
Jak nejlépe to hodit do DB? Přemýšlel jsem klasicky dávat datumy ve formátu DATE, ale pak nastává problém jak nějak rozumně řešit kontrolu na DB při zadání datumu zda je již někde vytížen či nikoli. Pak druhá varianta je pro každý den uložit řádek do DB a ty jeden po druhém kontrolovat, což mi ale přijde zas trochu čuňačina.
K jaké variantě by jste se přikláněli? A pokud k první, nějaký nápad na SQL dotaz pro kontrolu zda je někde již zařazen? Alespoň nakopnutí.
Pak mě napadla ještě jedna varianta a to uložit si všechny dny po jednom do DB a do dalšího sloupce nějak vkládat ID všech přidělených pracovníků na určitý den. Nicméně předem neznám počet pracovníků a blbě by se mi pak filtrovali a upravovali, nechci mít sloupec ve tvaru 1,5,20,22,23 (IDčka pracovníků nějak oddělená)
Díky za nakopnutí
13. 6. 2016 13:31:19
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201969
hm
verified
rating uzivatele
(20 hodnocení)
13. 6. 2016 13:43:11
tohle je uplne klasickej obycejnej navrh
tabulka zakazek
tabulka pracovniklu
spojovaci tabulka pracovnici-zakazky (s datumem od kdy do kdy jakej rpacovnik na zakazce je - pokud ma pracovnik pauzu tak bude mit dva zaznamy)
nedelej proboha zadny silenosti kolem, nech datovou strukturu standardni, vsechno co potrebujes ti vyresi spravne dotazy, nic vic nic min... Upravovat nejak silene strukturu nebo vymejslet kraviny toho typu cos tu vymyslel nema jedinej smysl, tim mozna ulehcis praci sobe, protoze ocividne netusis co delas, ale bohuzel z toho bude pak jen sracka
13. 6. 2016 13:43:11
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201968
Luděk Novák
verified
rating uzivatele
13. 6. 2016 13:48:58
Já bych asi tu spojovací tabulku pojal jako timesloty - pro každého pracovníka generovat po přiměřených blocích (hodinách, půldnech, ... ), ty přiřazovat na projekt - zakázky, interní činnosti, přesuny, dovolené apod., zbylé bloky nechávat nepřiřazené. Jasné jak facka a odpadnou ti zmatky se zrušením přiřazení, s nestíháním přejezdu mezi zakázkami, ...., které bys tam dřív nebo později mohl chtít zohledňovat.
13. 6. 2016 13:48:58
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201967
Luděk Kvapil
verified
rating uzivatele
13. 6. 2016 13:49:18
Já bych to řešil tak, že by byla tabulka, kde by byl project_id, worker_id, workday_id. Jeden řádek, jeden pracovník. Takže když na projektu 1 ve workday 1 bude dělat 5 lidí, tak by tam bylo i 5 řádků...
Obsazenost pracovníka by šlo řešit přes count(workday_id). Zároveň by se snadno vykazovaly hodiny na projektu...
13. 6. 2016 13:49:18
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201966
Steeta
verified
rating uzivatele
(3 hodnocení)
13. 6. 2016 13:51:37
Aleš Jiříček:
Však jsem psal, že mi to přijde jako prasečina :D ale chtěl jsem znát názor i někoho dalšího :) a ano z části jsem si to chtěl ulehčit :D
ndpudo, siva01:
no to jsou defacto řešení které jsem dával jako ty druhé, nicméně trochu prasácké mít pro každý den jeden řádek :/ ale pro práci pro mě snazší no
13. 6. 2016 13:51:37
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201965
Luděk Kvapil
verified
rating uzivatele
13. 6. 2016 13:59:23
Napsal Steeta;1299092
ndpudo, siva01:
no to jsou defacto řešení které jsem dával jako ty druhé, nicméně trochu prasácké mít pro každý den jeden řádek :/ ale pro práci pro mě snazší no
vůbec to není prasácké... Aspoň co jsem takhle četl v knížkách o SQL, tak všude tam řeší podobné situace právě takhle... Mně spíše připadá prasárna dávat více pracovníků na jeden řádek.. Na správu databáze by to bylo šílené. Nemluvě o těch dotazech o.O
13. 6. 2016 13:59:23
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201964
Steeta
verified
rating uzivatele
(3 hodnocení)
13. 6. 2016 14:01:21
siva01: ano to je vůbec největší prasárna, o tom žádná. No zkusím to cestou dotazů na SQL a kontrolou rozmezí na sloupce DATE
13. 6. 2016 14:01:21
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201963
Luděk Kvapil
verified
rating uzivatele
13. 6. 2016 14:01:35
Respektive já mám takový nástroj, kterému říkám PriceMonitor. Sbírá ceny z Heureky. Z počátku jsem také měl tu db nenormalizovanou, ale nakonec jsem zjistil, že normalizace databáze mi ušetří spoustu času při analýzách. Je to možná trochu pomalejší, ale zato je to snažší na správu a práci.
13. 6. 2016 14:01:35
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201962
Luděk Novák
verified
rating uzivatele
13. 6. 2016 14:09:04
Tohle fakt čuňačina není, lepší mít databázi bombenfest und idiotensicher. Radši víc dat, která spolehlivě nejsou navzájem v konfliktu, jasných a "robustních", než vymýšlet vychytanou logiku, které rozumí sotva její autor a jež vezme zasvé s první změnou. Při zakládání pracovníka spustit vygenerování bloků, klidně 365*24h, a rezervovat a účtovat. Tohle si ošetříš snadno, zatímco překryvy a nepřekryvy a pracovník1 a pracovník2 a kde co nullable na jedné řádce, to je cesta do pekel.
13. 6. 2016 14:09:04
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201961
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
13. 6. 2016 14:10:39
Napsal siva01;1299097
vůbec to není prasácké... Aspoň co jsem takhle četl v knížkách o SQL, tak všude tam řeší podobné situace právě takhle... Mně spíše připadá prasárna dávat více pracovníků na jeden řádek.. Na správu databáze by to bylo šílené. Nemluvě o těch dotazech o.O
Takový návrh je chybný, protože databáze bude obsahovat více jak 90% dat, která nejsou k ničemu potřeba (pokud jeden zaměstnanec pracuje na jednom projektu měsíc, je v databázi 29 záznamů z 30 k ničemu).
Jediné, co je třeba znát, jsou změny. Tedy datum, kdy byl zaměstnanec přeřazen na jiný projekt.
13. 6. 2016 14:10:39
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201960
hm
verified
rating uzivatele
(20 hodnocení)
13. 6. 2016 14:33:53
hosi... nebudu se s vama hadat, ale neda mi to vam nenapsat, ze vase reseni jsou slozita, generuji tuny zbytecnejch dat a stejne nakonec tu logiku psat musite... navic logika u tohodle bude jendoducha v kazdym pripade... na tomhel neni moc co vymejslet...
13. 6. 2016 14:33:53
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201959
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
13. 6. 2016 14:42:25
Napsal Aleš Jiříček;1299115
hosi... nebudu se s vama hadat, ale neda mi to vam nenapsat, ze vase reseni jsou slozita, generuji tuny zbytecnejch dat a stejne nakonec tu logiku psat musite... navic logika u tohodle bude jendoducha v kazdym pripade... na tomhel neni moc co vymejslet...
Vaše řešení je podobně špatné jako ta ostatní. Ukládat datum od do není potřeba a při dočasném přeřazení na jiný projekt vám bude vznikat více řádků, nehledě na to, že mimo vložení nového záznamu musíte upravit i ten předchozí. To je špatně.
13. 6. 2016 14:42:25
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201958
hm
verified
rating uzivatele
(20 hodnocení)
13. 6. 2016 14:44:26
Rad to uznam, ale jen pokud napisete spravne reseni, abych se mohl poucit ;) Uprimne nechapu lidi co reknou - nemas pravdu - ale uz nereknou co je spravne, na takove lidi byvam sprosty
13. 6. 2016 14:44:26
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201957
Luděk Kvapil
verified
rating uzivatele
13. 6. 2016 14:59:19
Napsal Jan Stejskal;1299109
Takový návrh je chybný, protože databáze bude obsahovat více jak 90% dat, která nejsou k ničemu potřeba (pokud jeden zaměstnanec pracuje na jednom projektu měsíc, je v databázi 29 záznamů z 30 k ničemu).
Jediné, co je třeba znát, jsou změny. Tedy datum, kdy byl zaměstnanec přeřazen na jiný projekt.
Ježiš.. Když nepracuje, tak přece není žádný záznam v řádku. To je snad jasný, ne?
---------- Příspěvek doplněn 13.06.2016 v 15:00 ----------
Když na tom v jeden den maká 5 lidí, tak je u projektu 5 řádků na den.. Když 4 lidi, tak jsou u projektu 4 řádky na den.. Nemaká nikdo? žádný řádek..
Ad časové úseky: tak prostě přiřadím začátek a konec, ale stále je princip stejný. Místo pracovního den by bylo od a další sloupec do..
13. 6. 2016 14:59:19
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201956
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
13. 6. 2016 15:01:51
Napsal Aleš Jiříček;1299117
Rad to uznam, ale jen pokud napisete spravne reseni, abych se mohl poucit ;) Uprimne nechapu lidi co reknou - nemas pravdu - ale uz nereknou co je spravne, na takove lidi byvam sprosty
Ale já už to řešení napsal. Pokud jste to nepochopil, tak tedy polopatě: potřebujete tři tabulky, zaměstnanci, projekty a spojovací, kde je id zaměstnance, id projektu a datum. Datumem se rozumí datum změny, tedy den, kdy je zaměstnanec přeřazen na jiný projekt. Práci lze plánovat, přeřazovat zaměstnance mezi projekty operativně, získat přehledy hodin nad jednotlivými projekty atd. Vše na straně databáze. Nevzniknou žádná zbytečná data.
---------- Příspěvek doplněn 13.06.2016 v 15:04 ----------
Napsal siva01;1299122
Ježiš.. Když nepracuje, tak přece není žádný záznam v řádku. To je snad jasný, ne?
---------- Příspěvek doplněn 13.06.2016 v 15:00 ----------
Když na tom v jeden den maká 5 lidí, tak je u projektu 5 řádků na den.. Když 4 lidi, tak jsou u projektu 4 řádky na den.. Nemaká nikdo? žádný řádek..
Nepochopil jste. Vy potřebujete záznam v db, když se pracuje. A tento záznam je zbytečný. Není potřeba mít uloženo, že se pracuje. Stačí si uložit, kdy se začalo pracovat.
13. 6. 2016 15:01:51
https://webtrh.cz/diskuse/struktura-db-rezervace/#reply1201955
Pro odpověď se přihlašte.
Přihlásit