nemohol by si plz vytvorit/nakreslit tu strukturu toho ako vyzeraju/maju vyzerat obe tabulky a co medzi nimi mozes robit ? pretoze mam problemy to takto pochopit jednotlive tabulky, columny a samotne datatypy
1. samozrejme že môžeš xml do DB uložiť, ale zaprvé len ako čistý text (alebo teoreticky do BLOB vygrcnúť celý objekt, ale to neodporúčam), a zadruhé ho budeš musieť odescapovať.
a zatretie je to zbytočne zložité:
zoznam účastníkov je len zoznam IDčok ľudí, čiže zapísateľné ako čísla oddelené čiarkami, a to sa ľahko rozbíja späť do poľa (String.Split(), a ľahko dáva do stringu (aj na to je asi funkcia (Array.Join, alebo niečo také), ale aj keby nie...),
Problém v tomto prípade je, že sa ti brutálne blbo bude robiť niečo také, že "nájdi mi všetky akcie ktorých sa zúčastňuje konkrétna osoba alebo kombinácia osôb".
Odporúčal by som architektúru s tromi tabuľkami:
1. ľudia
2. akcie (info o akcii, jej ID, názov, popis, dátum, pičoviny)
3. ľudia na akciách (tabuľka s troma stĺpcami, id záznamu (primary key), id akcie, id človeka) - táto tabuľka bude obsahovať jeden záznam pre každého účastníka na každej akcii, a potom si vieš v dátach vyhľadávať v pohode podľa kombinácie účastníkov na akcii, podľa akcie, podľa účastníka a toho na čom sa zúčastnil, atď atď...
s dynamickosťou problém nevidím, buď (najkorektnejšie) DB triggery a(lebo) constraints, ktoré automaticky vymažú záznamy účastníkov k akcii ak vymažeš akciu, resp. zakážu ti vymazať akciu pokiaľ má ešte nejakých účastníkov.
alebo menej korektne, proste v kóde pri odstraňovaní akcie najprv odstrániš všetkých jej účastníkov.
alebo ešte menej korektne, vyprdneš sa na to, proste vymažeš akciu, a budeš mať nejakú scheduled procedúru, ktorá pozrie či všetky akcie na ktorú sa odkazujú záznamy z človeknaakcii tabuľky existujú, a ak nie, tak to vymaže dané záznamy z človeknaakcii...
horso inak riesil som nedavno nieco podobne, cisto len via DBS a riesil som to cez triggre, ak to najdem na tomto pc, tak by som ti to mohol supnut ako help. ale nvm ci to tu mam, kdyby neco, tak skype
@n0win0u ja to riesim len v tom datasete v C# kde su pekne funkcie na to tak sa s tym nejak nechcem trapit ked je to takato chujovina krom toho o tomto case uz duplom nie ale keby moc chces mozes poslat rad si pozriem
@horsiq presne tak, ale odporúčam NAJPRV vymazať ľudí z eventu, a až potom zmazať event... ako ono je to v zásade jedno, ale ak nastane nejaký problém, tak je rozhodne konzistentnejší a korektnejší "dojebaný stav" keď máš event bez účastníkov, než keď máš účastníkov na evente bez eventu
@midnight ja som si to aj 3x musel prečítať keď som zbadal "...rovněž je podmínkou aby byl celý zdrojový kód aplikace napsán v programovacím jazyku C#..." či tak nejak
ach, som prisiel neskoro, aj ked C# je moja spanielska dedina, ale ked to tak citam v ramci SQL by to nemalo byt nic ine ako rozbijanie m:n vztahu cez tretiu tabulku a potom joinovat ... to je tak mno, najkrajsi na opis by bol ORM, ale to ty fakt netusis co a ako a co to je, ... ale strasne sa mi lubi, ze sa snazis, keep up
@midnight nie nie pre jedneho typka z ciech potrebuje na take male turnaje appku kde si zaregistruje hracov a potom si vytvori udalost a tam ma poznacene kto sa zucasni kto zaplatil vstupny poplatok potom uctovanie jedal/napojov a izieb a pod na RFID karty tiez s uchovanim v databaze a zaverecnym vyuctovanim pri odchode aby sa furt nemuselo saskovat s peniazmi cize zoberie si v bare pivo pipne si vysacku so svojim menom atd a sa mu to pripise na ucet, len pri odchode dostane fakturu so sumou variabilnym symbolom a cislom uctu kde to ma uhradit
Roleta je špeciálny inkognito mód, ktorým skryješ obsah obrazovky pred samým sebou, alebo inou osobou v tvojej izbe (napr. mama). Roletu odroluješ tak, že na ňu klikneš.
13 komentov
1. samozrejme že môžeš xml do DB uložiť, ale zaprvé len ako čistý text (alebo teoreticky do BLOB vygrcnúť celý objekt, ale to neodporúčam), a zadruhé ho budeš musieť odescapovať.
a zatretie je to zbytočne zložité:
zoznam účastníkov je len zoznam IDčok ľudí, čiže zapísateľné ako čísla oddelené čiarkami, a to sa ľahko rozbíja späť do poľa (String.Split(), a ľahko dáva do stringu (aj na to je asi funkcia (Array.Join, alebo niečo také), ale aj keby nie...),
Problém v tomto prípade je, že sa ti brutálne blbo bude robiť niečo také, že "nájdi mi všetky akcie ktorých sa zúčastňuje konkrétna osoba alebo kombinácia osôb".
Odporúčal by som architektúru s tromi tabuľkami:
1. ľudia
2. akcie (info o akcii, jej ID, názov, popis, dátum, pičoviny)
3. ľudia na akciách (tabuľka s troma stĺpcami, id záznamu (primary key), id akcie, id človeka) - táto tabuľka bude obsahovať jeden záznam pre každého účastníka na každej akcii, a potom si vieš v dátach vyhľadávať v pohode podľa kombinácie účastníkov na akcii, podľa akcie, podľa účastníka a toho na čom sa zúčastnil, atď atď...
s dynamickosťou problém nevidím, buď (najkorektnejšie) DB triggery a(lebo) constraints, ktoré automaticky vymažú záznamy účastníkov k akcii ak vymažeš akciu, resp. zakážu ti vymazať akciu pokiaľ má ešte nejakých účastníkov.
alebo menej korektne, proste v kóde pri odstraňovaní akcie najprv odstrániš všetkých jej účastníkov.
alebo ešte menej korektne, vyprdneš sa na to, proste vymažeš akciu, a budeš mať nejakú scheduled procedúru, ktorá pozrie či všetky akcie na ktorú sa odkazujú záznamy z človeknaakcii tabuľky existujú, a ak nie, tak to vymaže dané záznamy z človeknaakcii...
@midnight díky moc za pomoc s tými 3mi tabuľkami to spravím
keď zmažem event tak z tabuľky ľudia na akciach vyselektujem všetky riadky s id akcie a vymažem proste a s mazanim ľudí podobne
díky moc ešte raz
inak np
inak, odkedy robíš v C#?
odkedy musím, požiadavka "zákazníka"