Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Logik

Stran: 1 ... 16 17 [18] 19 20 ... 68
256
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 23. 10. 2019, 13:35:53 »
Citace
Přejmenování štítku je výjimečná operace. Vy ale budete muset složitě řešit přidávání štítku i mazání štítku, což jsou mnohem častější operace.
Ty jsi nikdy pořádnou aplikaci nevyvíjel, nebo fakt nevím. Na takovéto základní úkony (např. přidávání entit s relací n:m) jsou samozřejmě v každém rozumnějším frameworku nástroje, takže implementace nebude složitější, než bez "štítkové tabulky", je to na pár řádek.

Citace
Citace
SELECT DISTINCT v takovém případě bude full table scan
O existenci indexů jste už slyšel?
Evidentně narozdíl od Tebe nejen slyšel, ale umím je i používat a vím, kdy se použijí a kdy ne :-)

Kód: [Vybrat]
=> create index test on translations(table_name);
CREATE INDEX
=> vacuum analyze translations;
VACUUM
=> EXPLAIN SELECT DISTINCT table_name FROM translations ;                                 
QUERY PLAN                                 
----------------------------------------------------------------------------
 HashAggregate  (cost=11158.59..11158.77 rows=18 width=11)
   Group Key: table_name
   ->  Seq Scan on translations  (cost=0.00..10231.67 rows=370767 width=11)
(3 rows)

Pokud bys chtěl použít index, tak na to musíš v takovémto případě použít speciální "hack" pomocí CTE. Aneb jak jsou tvoje "jednoduchá" řešení "jednoduchá":
https://stackoverflow.com/questions/5973850/can-i-optimize-a-select-distinct-x-from-hugetable-query-by-creating-an-index-on

257
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 23. 10. 2019, 10:07:03 »
Citace
Jenže já jsem nepopisoval takhle obecnou situaci.
Samozřejmě. Protože tu furt prosazuješ řešení, který vyhoví jen pokud jdou věci dobře, a při první "neočekávaný" (ve skutečnosti očekávaný) situaci zhavaruje. Takovejch skvěle "jednoduchejch modelů" jsem se už napřepisoval a byla to někdy pořádná drbačka, když to aplikací proroste.....

Citace
Model, který odporuje zadání, lze těžko nazývat dobrým.
Opakuješ dokolečka už několikrát vyvrácené. Taková debata nemá smysl.

Takhle já jsem to ovšem nedefinoval
Ne, vy jste tak definoval vedoucího, což je ovšem zákonem definovaná věc, takže vaše definice na ní použít nejde. V praxi je Vaše definice: "ten kdo má podřízené" použitelná právě jen pro získání těch, kdo mají podřízené (a i tam viz informování) to chce myslet, kdy se takový dotaz hodí použít, a kdy chce člověk opravdu VEDOUCÍHO a ne jen "MAJITELE PODŘÍZENÝCH".
A když se oprostíme od honosných názvů a nazveme věci tím, co jsou, tak Váš dotaz je odpověď na jednoduchou otázku: "kdo má podřízené?" a nijak se neliší od dotazu: "kdo nemá podřízené?". Takže pro tento dotaz zrovna Miroslavova strategie - udělat si dotaz/pohled, z kterého mohu snadno odečíst obě informace, je přinejmenším dobrou strategií.

===

Citace
Proč by mu takový přehled neposkytla? V mém řešení je to jednoduché.
Ve vašem řešení to znamená psát admin nikoli přes primární entity, ale přes složitější dotaz. Tedy něco, s čím člověk místo toho, aby  použil v podstatě hotový mustr, tak se musí drbat s implementací speciálního případu . Uvědom si, že v rozumně velkém softu/frameworku má člověk takové věci, jako adminy závislých entit, a metody na jejich zakládání, přiřazování atd... hotové. Práce navíc není mít o tabulku víc, práce navíc je dělat řešení, které se nějak svoji strukturou odlišuje od standardního modelu, jak jsou v aplikaci modelovány vztahy, protože to musíš napsat znovu, nebo musíš existující "mustry" modifikovat.
Citace
Pokud chci seznam všech štítků, sesypu všechny použité štítky na jednu hromadu.
Což když půjde např. o štítky z více tabulek, bude fakt príma čistej a srozumitelnej kód. Ale to už lidi psali.
A i v případě jedné tabulky to má nevýhody: při přejmenování štítku to bude zbytečně zamykat všechny záznamy se štítkem, místo toho, co by si to prostě vedle změnilo štítek, SELECT DISTINCT v takovém případě bude full table scan, takže u větší db tomu začne docházet dech atd....
Samozřejmě, jde to řešit (např. materializovaným pohledem, jak píše Miroslav) - ale to už je ten klasický rovnák na vohejbák. Jednoduchost Tvého modelu je v tahu a udržovat takovou aplikaci je radost.....

Citace
Uživatel si původně chtěl jenom něco označit svými názvy, a teď musí určit prioritu štítku, přeložit ho do dalších jazyků a přes vedoucího požádat administrátora systému o založení štítku.
To, že něco daný model je schopen ještě neznamená, že to je vystaveno uživateli. Pořád dokolečka (viz druhý odstavec) máš problém pochopit, že je rozdíl mezi tím, na co je model připraven a co model uživateli vystaví. A že dobrý programátor připraví model na očekávatelné změny, pokud to je levné. Protože zatímco změna na aplikační úrovni je levná, změna DB struktury je hodně problematická (koexistence různých verzí aplikace, revert do staršího stavu, když si něco nesedne, atd. atd....).

258
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 22. 10. 2019, 21:13:29 »
Citace
Co na tom nechápete, že příklad nevhodný pro jednu situaci může být vhodný pro jinou situaci?
S tou nevhodnou situací jsi ovšem přišel Ty sám, že "je třeba informovat vedoucí pracovníky". A na tuto TEBOU stanovenou situaci je TEBOU navržené řešení nevhodné, protože mi neumožní informovat člověka, o kterém vím, že zítra ty podřízené pracovníky mít bude. Takže možná existuje nějaká situace, kde by to vhodné bylo, ale bude velmi speciální, když Ty sám jsi se užitečnost toho modelu snažil ukázat na situaci, kde selhal.
Citace
Ale já jsem nedokazoval, že je dobrý. Pro mé účely úplně stačilo, že je možný.
Nu, a ostatní Ti ten Tvůj "možný" model (který je spíše nemožný :-), ale dejme tomu) opravili na dobrý. A tam najednou Tebou navržený postup selhal.. A teď je otázka. Je lepší se učit postupy, které fungují na modelech, které nejsou dobré, nebo je lepší se učit postupy, které fungují na modelech dobrých?

Citace
Šlo jen o příklad, kdy je možné použít určitou strukturu tabulek.
Ovšem jelikož ten model není dobrý, tak to dokazuje jen známou věc: garbage-in garbage-out.
Citace
Omyl. To Miroslav Šilhavý napsal, že to nejde kontrolovat pomocí cizích klíčů, tudíž to v databázi nejde zkontrolovat vůbec.
Máš evidentně problém pochopit, co druhý tvrdí. Miroslav tvrdil, že to nejde zkontrolovat bez existence explicitního příznaku. Máš pravdum že debata o tom, co by se kontrolovalo v DB bez příznaku je vlastně absurdní. Jenže to je vlastně důsledek absurdní definice vedoucího: jde totiž o klasickou definici kruhem: že ten kdo má podřízené má podřízené.

Ty jsi se touto tautologickou definicí se snažil dát dotazu: "ti kdo mají podřízené" nějaký větší smysl oproti dotazu "ti, kdo nemají podřízené". Ale tam prostě žádný větší smysl není, což ukazuje i praxe, protože v ní je třeba definovat vedoucího jinak.

===

Citace
To je ale záměr. Štítky jsou prostě libovolný text, který si uživatel k objektu přilepí. Jestli má potřebu vytvořit si štítky „Novinka“ i „Novinky“, ať to klidně udělá.
Uffff. Na to se dá říct jen to, že evidentně nemáš zkušenosti s tím, čeho jsou uživatelé schopni, a že bych fakt nechtěl pracovat s DB navrženou podle Tebou ražených principů
Citace
Je to na něm, aplikace mu pouze poskytne nástroj, jak se štítky snadno pracovat.
Ano, vypíchl bych z toho to SNADNO. Ano, např. když mu aplikace neposkytne přehled použitých šťítků, a možnost je např. přejmenovávat a slučovat, tak duplicity budou v podstatě nutně vznikat. Samozřejmě přehled štítků je možné udělat i z Tvojí struktury pomocí select distinct, ale to už je zas klasickej rovnák na vohejbák (např. místo toho, aby člověk na takovej přehled použil "klasickýho admina", kterej každá lopata vygeneruje automaticky, tak to budeš muset extra psát).

Citace
Pokud má uživatel možnost štítky libovolně vytvářet a mazat a štítky nenesou žádnou další informaci, nedává smysl vytvořit si tabulku štítků, která bude mít jediný sloupec, a to název štítku. To není denormalizace.
Je to buďto porušení 3NF, anebo porušení jiného naprosto základního dabázového principu: "Nevýznamových identifikátorů míti budeš". Tebou ražený princip je stejná pitomost, jako např. mít v DB jako klíč rodné číslo.A tento přístup se Ti brzo vymstí, jakmile např. bude chtít zákazník štítky prioritizovat, nebo např. třeba lokalizovat do více jazyků. Todle je fakt s odpuštěním čuňárna.
 


259
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 22. 10. 2019, 13:02:18 »
Citace
Že nebude fungovat můj příklad jste neukázal. Pokud je např. jediná funkce vedoucího, že schvaluje dovolenou, bude můj příklad fungovat perfektně.
Ukázal jsem, že Tvůj příklad v situacích, které v praxi vcelku běžně nastávají, nebude fungovat: např. dojde k tomu, že se vedoucím pracovníků nedostanou potřebné informace, nebo že v případě návratu z mateřské po reorganizaci by člověku nezařazenému do firemní struktury neměl kdo dovolenou schválit.
Tvůj argument je špatný: to, že nějaký model funguje v jedné konkrétní situaci není důkaz toho, že je dobrý. Dobrý model funguje ve všech situacích, které s nějakou nemizivou pravděpodobností mohou nastat.

Citace
Když já potřebuji odvézt tři lidi autem a vy potřebujete odvézt metrák uhlí,
Chybný příměr. Software není věc na jedno použití. Správný příměr by byl: "Když já potřebuju (mám v zadání) odvážet lidi autem a vy TVRDÍTE, ŽE BUDU NĚKDY POTŘEBOVAT ODVÉZT I UHLÍ". A to je naprosto legitimní námitka, která podle toho, o koho jde, může či nemusí být správná. A moji arugmentaci, že česká legislativa i potřeby firemní praxe jsou takové, že si v podstatě odvážení uhlí vynucují, jste nijak nevyvrátil.

Citace
Tohle je častá chyba začínajících programátorů – implementují bez znalosti problematiky jakési obecné řešení, jehož výhoda se má ukázat někdy v budoucnosti.
Ano, to je častá chyba. Stejně jako je chyba začínajících programátorů, že slepě dodržují zadání, i když jsou v něm zjevné chyby. Zkušený programátor posoudí zadání a vyhodnotí dle své znalosti dané problematiky, kde je na místě ho nezobecňovat a kde je třeba ho zobecnit, popř. změnit (což dle procesů ve firmě někdy i může udělat sám, jindy to znamená složitý proces.)

A přesně tak zněla má argumentace: na příkladech z praxe jsem ukázal, proč dané zadání nebude dostačovat a tedy proč v tomto případě ho zobecnit na místě je. Ty jsi se to nejprve snažil vyvrátit - a ukázalo se, že o příslušné legislativě a z ní plynoucích potřebách pro praxi příliš nevíš (viz Tvůj vedoucí schvalující si sám dovolenou, nebo vůbec definice vedoucího odporující zákonu), a pak jsi toho radši nechal a vrátil ses k svému stanovisku: "toto je moje zadání a kdo ho slepě nedodrží anebo kdo ho implementuje obecněji, tak to dělá špatně.
Tak nevím, na koho to "implementuje bez znalosti problematiky" sedí spíš.... :-)


Citace
Nikoli. Příklad měl jen ukázat, že struktura databáze neurčuje, jak se budou v dotazech spojovat tabulky.
Napsal jsi: " Např. pokud je vedoucí zaměstnanec definován tím, že má podřízené, nemá smysl vytvářet si pohled s vedoucími..."Tedy jsi stanovoval "jak se to má dělat". Stejnětak jako Miroslav hájil outer join, tedy jak se to má dělat. Samozřejmě, že tím nemyslel, že se má 100% joinů dělat OUTER. Ale že to má smysl v běžných situacích. Tedy Miroslav stanovoval best practice.
Ty tvrdíš, že jeho best practice je špatná. Tedy říkáš, že best practice je jiná. Tedy ji stanovuješ - a vyvracíš ji příkladem, který je mimo praxi...

Citace
...pomocí triggerů to neumíte...
Ten, kdo se vyhýbá triggerům a bojí se databázovýho programování a radši tu logiku buďto nacpe až do aplikační vrstvy (čímž vznikne problematická situace, kdy různé constrainy jsou vynucované na různé úrovni aplikace), nebo ji v DB vynutí primitivními a neflexibilními mechanismy (přímo strukturou DB) aby se vyhnul triggerům, jsi jaksi Ty. Tak fakt nechápu, proč z toho obviňuješ nás....
Ano, když se člověk vyhýbá nástrojům, které je třeba použít k správnému návrhu databáze, tak tu databázi zkriplí.

Citace
stejné vztahy mohou existovat v jiných případech, třeba „štítek je definován tím, že existují objekty, které mají daný štítek přiřazen“.
Jo, klasika. Tak přesně vznikají ty databáze, kde je hromada šťítků typu: "Novinka", "Novinky", "novinky", "novikny", "novynky", "novikni"..... Kdybych byl vznětlivější typ, tak bych měl chuť zpřerážet hnáty člověku, co tu databázi takhle blbě navrhnul. Todle je i proti základním principům db programování (denormalizovaná struktura).

260
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 22. 10. 2019, 10:19:56 »
Citace
Zadání je funkční.
Na konkrétních příkladech - dokonce i Tvých - jsem ukázal, že takové zadání v praxi nebude fungovat dobře. Tyto příklady jsi nijak nevyvrátil. Budeme diskutovat způsobem, že kdo víckrát zařve svoji pravdu, tak vyhrál? Nebo budeme argumentovat?

Citace
Pokud se vám na něm něco nezdá, můžete zadání
rozporovat.
Jestli jsi to nepochopil, tak právě v těch případech bylo to rozporování implicitně obsaženo: upozorňovali jsme Tě na případ, který Tvé zadání neumí pochytit, ač je potřeba. Jen jsme prostě z Tebe nechtěli hned dělat blba a mysleli jsme, že tu chybu svého zadání pochopíš sám a nebudem Ti ji muset otlouct o hlavu - to je jaksi součást normálního vstřícného postoje v diskusi.

A co jsi se vyjádřil, že tu koninu myslíš vážně, že to nebylo jen nepřesné vyjádření, jak jsme předpokládali, ale že chybu toho zadání nevidíš, tak jsme Ti ji rozporovat začali i explicitně. Tak kde máš problém? Že jsme Ti nedali formální změnový požadavek vyhotovený na formuláři XB-457 ve třech kopiích a opatřených kolkem? Jsme v diskusi, ne v korporátu.

Citace
ale navrhnete
řešení, které je v rozporu se zadáním, je to vaše chyba.
Pokolikáté budu muset zopakovat, že ŘEŠENÍ NEBYLO V ROZPORU S TVÝM ZADÁNÍM, do navržené datové struktury šlo uložit i data požadovaná dle tvého chybného zadání. Ovšem naše řešení UMOŽŇOVALO snadnou opravu toho zadání. A zároveň Tě jemně upozorňovalo na chybu zadání.
Uvědom si, k ČEMU MĚL TEN TVŮJ PŘÍKLAD SLOUŽIT: K DEMONSTRACI BEST PRACTICIES při návrhu databáze. Tedy jsou dvě možnosti. Buďto na svém zadání trváš, pak ale je to totální OT, protože demonstrovat best practicies na chybném zadání je nonsens. Anebo chceš diskutovat k tématu - pak by mělo být automatické, že se zadání opraví tak, aby vyhovovalo běžné situaci v praxi.
A i když budeš na tom chybném návrhu trvat - i to se občas u klienta nebo třeba šéfa v práci stane - i tak by v praxi bylo Tvé řešení chybné, protože dřív či pozdějc by se na omezení toho návrhu narazilo tak jako tak. To je jedna z dalších věcí, která dělá dobrého programátora: když už šéf/klient neuhne a chce blbost, tak SW navrhnout aspoň tak, aby ta blbost vadila co nejméně. A ne to naimplementovat pitomně a umejt si ruce, že to bylo v zadání.....





261
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 20. 10. 2019, 19:01:06 »
Citace
se zadáním „vedoucí je definován tím, že má podřízené
  • Zadání je evidentně defunkční.
  • Je tedy v podstatě skoro jisté, že bude změněno.
  • A proto je tedy správné aplikaci připravit i na Tebou zmíněnou eventualitu, která nyní dle zadání nemůže nastat.
  • To, že je aplikace na něco připravená (např. vhodnou strukturou DB) neznamená, že aktuální implementace něco porušuje.
Který z těchto bodů nechápeš?

262
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 19. 10. 2019, 23:52:37 »
Citace
Nikdo si nevymýšlel vlastní zadání.
Promiň, už mi mělo dojít, že máš problém porozumět, když člověk se vyjadřuje ve zkratce, a nikoli přísně formálně logicky. Tato věta znamenala:

Nikdo NEMĚNIL tvé zadání, akorát si lidi povšimli chyby toho zadání (která ho činí v praxi nepoužitelným) a tak automaticky přizpůsobili návrh databáze tomu, aby když/až se ta chyba návrhu opraví, nebylo třeba přepisovat půl aplikace.

Už tomu rozumíš, nebo to potřebuješ ještě polopatičtěji? Teda promiň, možná nerozumíš tomu "přepisovat půl aplikace" - tím se myslí, že by s tím bylo zbytečně příliš mnoho práce, samozřejmě se tím nemyslí, že by se musela přepsat každá druhá řádka každého zdrojáku.
Ještě něco potřebuješ vysvětlit?



263
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 19. 10. 2019, 14:26:53 »
Citace
I kdyby zadání bylo nereálné, neznamená to, že ho můžete tiše ignorovat, vymyslet si své vlastní zadání a tím se řídit.
Opakuješ vyvrácené. Nikdo si nevymýšlel vlastní zadání. Jen se navrhla struktura DB tak, aby až se zjistí, že nereálné je, tak se to nemuselo předělávat. Dobrý programátor takovéto věci předvídá.

Citace
...použít jiný termín, třeba „nadřízený....
Ale pak se  na ostatní nezlob, že když použiješ termín a myslíš tím něco jiného, než ten termín znamená, že Ti ostatní nerozumí. To není chyba na přijímači, ale na vysílači.

Citace
nebo vytipovali podřízené na školení, nedává smysl informovat o tom někoho, kdo žádné podřízené nemá.
Jo, takže když někdo nemá ten den podřízené, třeba protože zrovna probíhá organizační změna, tak se nedozví, jaké povinnosti má vůči svým podřízeným, které dostane zítra přiřazené. Právě si prakticky demonstroval, jak je Tvůj příklad defunkční a jak je nutné ty dva fakty (být vedoucí a mít podřízené) oddělit.
Btw. uvědomit si a upozornit na takovéto problémy patří do práce programátora, představa, že Ti někdo dá 100% správné zadání, které jen stačí do písmene přesně implementovat, je mimo.

Citace
Já jsem nepsal o žádném podnikovém IS, psal jsem o jedné jediné tabulce, která sloužila jenom jako příklad.
A tak se pozná dobrý programátor od špatného, jestli řeší věci izolovaně a pak je musí předělávat, nebo od začátku přemýšlí nad problémem v kontextu :-) :-)

Citace
že ze struktury tabulek neplyne jediný možný pohled na data...
Ovšem argumentovat tím, že z blbé struktury tabulek něco plyne, je argumentace špatná. Protože právě blbá struktura databáze je tím, co nabádá ke špatným řešením.

264
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 19. 10. 2019, 13:01:06 »
Citace
Já jsem napsal, že jedno možné zadání je „vedoucí je definován tím, že má podřízené“.
Což je ovšem zadání s odpuštěním nereálné a tedy nesmyslné. Vedoucí pracovník je termín přímo definován zákonem, tento fakt musí být zachycen v pracovní smlouvě, a jsou zákonem dané možnosti, jak se člověk vedoucím stane a jak jím být přestane. Není možné, aby se z někoho stal "nevedoucí" jen tím, že mu odejde z oddělení poslední zaměstnanec.  I kdyby existovala firma, kde by to dle tvého nelegálního zadání fakt fungovalo, tak možnost, že dřív či později začnou zákon respektovat je natolik reálná, že je blbost na to aplikaci nepřipravit.
Tak se nediv, že si to ostatní Tvé zadání přeložili do reality.
Citace
Špatné implementace zadání se totiž mimo jiné vyznačují tím, že jsou přehnaně obecné, přičemž ta obecnost se nikdy nevyužije
Nu, a proto je třeba, aby ten, kdo navrhuje danou strukturu, o věci něco věděl, jinak není schopen rozlišit obecnost potřebnou od obecnosti "přebujelé".Pokud teda při svém návrhu db ignoruješ legislativu platnou pro daný obor, tak se nediv, že dojdeš k nesmyslným datovým strukturám.

Navíc - viz další odstavec - v normální velké firmě (pro malé se IS zpravidla nedělají) je třeba podchytit v IS daleko více informací (viz další odstavec), takže se do IS firmy hodí daleko flexibilnější datová struktura, než se kterou tady operuješ.
Citace
Když se v budoucnosti zadání změní, změníte ten pohled....... jenže pak se změní organizační struktura na maticovou,
A jsme doma. Vyvrátil sis sám vlastní přístup. Samostatný pohled na vedoucí je evidentně nedostatečný - nebo budeš mít jeden pohled na organizační vedoucí a jiný na projektové vedoucí a třetí na....?
Samozřejmě, že rozumný přístup je mít tabulku organizačních jednotek, a funkcí/rolí v organizačních jednotkách. Nejen vedoucích, ale např. schvalovatelů dovolených, sekretářek, a hromady dalších funkcí/rolí, které je třeba zachytit (např. sekretářkám se posílají pokyny o objednávání kancelářských potřeb atpod.). Tak snadno podchytíš jak stromovou strukturu, tak maticovou, nebo i další pitomosti, co si zrovna ředitel ve firmě vymyslí, aniž bys musel překopávat strukturu databáze. Jen max budeš doplňovat číselníky funkcí.
Tvůj přístup, že do struktury db zakóduješ (navíc ilegální) pravidlo, jak určit vedoucího - a pro další role pak budeš vymýšlet jiné další navzájem nekompatibilní adhoc mechanismy, jak je zachytit a vyhledat, to je cesta do pekel... Samozřejmě, na první pohled je Tebou navržené zachycení fce vedoucího jednoduché. Ale v reálu si o takovej návrh db nabiješ čumec.

265
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 18. 10. 2019, 18:21:37 »
Citace
Jak jsem psal, takový předpis se snadno může změnit....
Takže když změní platební předpis a přidají tam tuto kontrolu, tak kvůli tomu budeš překopávat strukturu databáze a měnit definici toho, kdo je vedoucí?
Teda, s tebou v jednom SW teamu bych fakt pracovat nechtěl - a šéf by Tě nepochválil, že věc na hodinu Ti trvá týden....

Citace
Pokud máte nějaké zadání, můžete ho rozporovat, že je podle vás špatně, ale nemůžete si ho potichoučku úplně předělat.
Pleteš si zadání a strukturu databáze. V zadání je např. schopnost IS zachytit to, že je někdo vedoucí. Nikoli to, jak má DB tuto skutečnost zachycovat. A právě dobrého programátora od špatného odlišuje to, jak dobře je to zadání schopen zobrazit pomocí struktury databáze.

Dobrá implementace zadání se mj. vyznačuje tím, že je schopna do sebe s co nejmenšími změnami integrovat změny a rozšíření zadání. Protože změny zadání jsou každodenní realita - málokteré zadaní tak, jak ho dostaneš, je opravdu správně - a právě takové výjimky (jako např. vedoucí bez podřízených), které ale v reálné praxi nastávají poměrně často, se v zadání zpravidla zapomínají.

Proto pokud kvůli takovým trivialitám, jako např. přidání možnosti vyhodit z oddělení posledního člověka, aniž by se Ti ztratila informace o tom, že je někdo vedoucí, musíš modifikovat strukturu databáze, tak je Tvá implementace zadání prostě špatná.I kdybys dostal explicitně zadáno, že vedoucí je právě ten, kdo má podřízené, i tak je správné řešení funkci a počet podřízených od sebe oddělit, protože jednak to může být chyba v zadání, jednak je velmi pravděpodobné, že i když to je dnes opravdu tak, že to zítra bude jinak.

Ostatní tedy nepředefinovávají zadání, ale počítají s rozumnou implementací tohoto zadání.

266
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 17. 10. 2019, 12:02:16 »
Citace
Ty dva nesouvisející fakty (vedoucí a platová třída) jste spojil vy.
To jsem jaksi nespojil já, to jaksi spojili platové předpisy v mnoha firmách. Třeba jen tak, že vedoucí nesmí mít platovou třídu menší než..... Tvuj "zlepšovák" takovouto situaci prostě nebude umět zkontrolovat, protože nebude umět správně podchytit, kdo má funkci vedoucího.

Citace
A pak nedojde k situaci, že si ředitel nemůže vzít dovolenou, protože mu ji nemá kdo schválit.
Evidentně o firemní struktuře (velké firmy) toho moc nevíš. Ředitel, jakožto statutár, si vůbec dovolenou nebere, protože není zaměstnanec firmy, ale pracuje dle smlouvy o výkonu funkce (mandatorní smlouvy). Právě proto, protože zaměstnanec je někomu podřízen, zatímco ředitel ne - a tedy mnoho paragrafů ze zákoníku práce zde vůbec nedává smysl - např. ředitel dovolenou nemá. Právě proto, že je nesmysl, aby si ji sám schvaloval.

Další věc je, že je naprosto normální, že dovolené neschvaluje pouze nadřízený, ale i další pověření lidé (např. zástupci nadřízených, ale běžní jsou i další schvalovatelé, např. sekretářky vedoucích), takže Tvoje jednoduché pravidlo pro schvalování dovolené je nesmyslné, v IS je třeba mít možnost explicitně jmenovat lidi, kteří dovolenou schvalují. Takže ty řídké případy, kdy statutár má zároveň pracovněprávní vztah (to se děje v podstatě jen u malých s.r.o., kde jednatel zároveň pro s.r.o. pracuje - a takové zpravidla nemívají IS) jde bez problémů vyřešit tímto mechanismem a není třeba databázi plevelit nesmyslnou rekurzivní výjimkou, že je člověk nadřízený sám sobě (přičemž to platí jen pro jednoho konkrétního člověka).

Zatřetí pak IS, který by zakázal schválit dovolenou člověku bez nadřízeného by byl vadný. I taková situace totiž může ve firmě nastat: např. zaměstnanec vracející se z mateřské dovolené, kdy zatím bylo jeho oddělení bylo zrušeno, takže není zařazen ve firemní struktuře. Pro takové lidi musí existovat nějak stanovený schvalovatel (a toto právo by samozřejmě měl mít i řiditel) - který pak kupodivu může schvalovat i dovolenou řiditeli v pracovněprávním poměru.

Takže Tvůj nastolený problém je umělý a naprosto neodpovídá požadavkům praxe z mnoha důvodů....

Citace
Větší banalitu už tam nemáte?
Jistě, špatný počet zaměstnanců v sestavách je banalita, zatímco schvalování dovolené pro člověka, který si dovolenou nebere, to je nutnost....Pokud Ti přijde jako banalita to, že v jakémkoli algoritmu vypisující stromovou strukturu firmy budeš muset řešit výjimku, aby se Ti algoritmus nezacyklil, tak bych tebou navržené databáze fakt nechtěl používat.
Citace
že mám ignorovat realitu a databázi raději navrhnout jinak.
Realita je, že člověk je nadřízený sám sobě? Odkdy?
Realita je taková, že člověk, jmenovaný do funkce vedoucího, není vedoucím, i když zrovna třeba v jeho oddělení zrovna teď nejsou zaměstnanci?
Máš "zajímavý" "smysl pro realitu".
Citace
Já jsem žádné zlepšováky nenavrhoval
No, nečekal, jsem, že to budu muset vysvětlovat polopatě, ale holt....Tvými zlepšováky jsem nemyslel Tvůj způsob zápisu dotazu, ale Tvůj způsob, jakým jsi chtěl zachycovat zaměstnaneckou strukturu ve firmě. Která byla nesmyslná - viz výš - a tedy není divu, že ostatní ve své argumentaci Tebou navrženou strukturu DB ignorovali a argumentovali rozumnou strukturou DB - proti čemuž jsi se poněkud arogantně ohrazoval.






267
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 15. 10. 2019, 23:08:53 »
Citace
Napíšu, že vedoucí je definován tím, že má podřízené...
Promiň, ale toto je typický antipattern. Právě proto, že může být vedoucí oddělení, kde nejsou zaměstnanci (ale např. platově je v třídě vedoucích atd....) - spojuješ do jednoho příznaku dva nesouvisející fakty.
 
Stejnej nesmysl je vynucovat že každý má svého nadřízeného: kde jaksi Tvůj rovnák na vohejbák (že ředitel bude nadřízen sám sobě) nebude dobře fungovat, protože např. dotaz na počty podřízených jednotlivých lidí bude dávat (bez patřičných ošetření komplikujících dotazy a navíc snadno opomenutelných) špatné výsledky, protože ostatní vedoucí sami sebe nepovedou.

Stará známá poučka návrhu databází praví: "zachycujte realitu". Jakmile si začneš v struktuře DB vymejšlet "geniální zjednodušení", dřív nebo pozdějc si o ně "nabiješ hubu".

Takže se moc nedivím, že ostatní Tvé "zlepšováky" pro návrh db ignorovali a radši přemýšleli nad rozumnou strukturou databáze, tedy takovou, kde vztah "být nadřízen" zachycuje opravdu nadřízenost a vedoucí je opravdu vedoucí, a nikoli vedoucí, co má alespoň jednoho podřízeného.

268
Hardware / Re:Mám pořídit nový disk?
« kdy: 11. 10. 2019, 13:30:26 »
"Disk uz je docela stary, notas je repasovanej."
Tak do notebooku zásadně SSD. Jednou s tím praštíš a.... Koneckonců právě to se Ti asi stalo.

Rotačáky patřej do datovejch skladů, NASů... a do DOOMa.

269
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 06. 10. 2019, 23:12:43 »
Miroslav:
Citace
NULL může reprezentovat implicitní nastavení.... NULL je v takovýchto případech naprosto správná hodnota, od toho je.
To bych se hádal. Null znamená "nevím", "není jisté", "není definované". Proto se také chová tak jak se chová. "Nemá explicitně definované právo" není "nevím", to je přesně definovaný stav.
Použití NULL je IMHO v takovém případě nevhodné - např. proto, že to zesložiťuje dotazy (dotaz na explicitně nedefinovaná práva vypadá jinak než dotaz na zakázaná). V takovémto případě je IMHO nejlepší využít (not null) ENUM typu s hodnotami(ANO, NE, NEDEFINOVÁNO).
Ono vůbec, jak jsem psal, NULL je poměrně problematický rys SQL jazyka a je lepší se mu co to jde vyhýbat.

Filip:
Citace
....Vzhledem k tomu, jak dlouho vám trvalo, než jste zjistil....
Neschopnost myšlenku opustit.
Citace
S INNER JOINem samozřejmě zvládnu obsloužit i otázku 2.
A jak? Teda pokud nepoužijete nějaké except, což je jen zakuklený outer join.

270
Vývoj / Re:MySQL - podmíněný SELECT přes dvě tabulky
« kdy: 06. 10. 2019, 17:07:57 »
 :'(
Citace
Odkazujete na komentář, kde jsem znova zopakoval, že zadání musí upřesnit tazatel.
A to, že jsi jednou napsal rozumnou věc jako znamená, že jsi v dalších příspěvcích nemohl začít tvrdit blbiny???
Citace
Snadnost úpravy při jedné specifické změně sémantiky je irelevantní,
Pokud je to změna sémantiky, která se dá očekávat, protože je v tomto smyslu nejasné zadání, tak to rozhodně irelevantní není. Dobrý programátor toto kritérium při designu programu zohledňuje: je to jedna z poměrně klíčových vlastností dobrého kódu.

Citace
Já vím, co jsem uváděl – a vy si to můžete přečíst.
Evidentně furt nevíte, co jste napsal za nesmysl. Prostě pokud někdo řekne, že chce všechny pražáky, a pak řekne,že ty ostatní, tak rozhodně nechce explicitně vyloučit ty, co nikde nebydlí. To jste jednoznačně popíral a to je prostě nesmysl.A pokud jste to popírat nechtěl, tak se holt smiřte s tím, že se neumíte vyjadřovat a pochopili jsme to tu prostě jinak, nežjste chtěl. Vzhledem k tomu, že je nás víc, tak asi nebude chyba na přijímači.
Btw. i Vaše ostatní příklady byly nesmyslné: např. příklad s vedoucím, tak tam jednou bude chtít vedoucí, co mají plat nad 50. A podruhé bude chtít ostatní vedoucí. Tedy všechny vedoucí, kteří nespadli do první kategorie - např. tedy i tyu kterých není plat znám. Rozhodně by Vás šéf nepochválil, kdybyste mu jednoho šéfa, u kterého není v IS plat znám,nedodal. To, že nebudou chtít běžné zaměstnance je nesmyslný argument - být vedoucím a mít plat je ortogonální kritérium,selekce podle jednoho nemá s tím druhým nic společného.

A koneckonců i v případě samotné Prahy jste vlastně sám se sebou ve sporu, protože přiznáváte, že: "Bezdomovce, u kterých neznají adresu, opravdu řešit nebudou.". ŘEŠIT NEBUDOU. Tedy nikoli, že jim nechtějí dát dárek - tedy že explicitně chtějí null hodnoty vyloučit, jak tvrdíte.

Obecně jsou dvě možnosti: buď si člověk možnost "třetí hodnoty" uvědomuje, pak ji zpravidla řeší explicitně. Daleko častější je ovšem to, že si tuto možnost vůbec neuvědomuje, a negací nějakého kritéria myslí: "Všechny ostatní".

Citace
proč JOINbez upřesnění je zkratka zrovna pro INNER JOIN. Že by to bylo proto, že je to nejčastější použití? Snadnost
Vzhledem k tomu, že standard SQL je všechno, jen ne úsporný - a preferuje ukecanost a relační čistotu před praktičností, tak to je špatný argument. Např. většina políček v db je dnes not null, a přeci je to nutné explicitně uvádět.

A btw..., když si tak horoval za pravou sémantiku SQL dotazů, tak zrovna sémantika NULL je v SQL pěkně zmršená(jeden z mnoha problémů např. https://www.oreilly.com/library/view/sql-and-relational/9781449319724/ch04s04.html)Furt se tu oháníte "pravou sémantikou SQL" a jak se jí mají lidé držet. Jenže ona ta "původní sémantika" SQL byla vytvořená
teoretikama a pro praxi se příliš nehodí.

Citace
Mít strukturu databáze, kde hodnoty >= 1 znamenají „povoleno“ a hodnoty 0 a NULL znamenají zakázáno, není dobrý nápad. Každý stav by
měl být reprezentován právě jednou hodnotou.
Opět směšuješ NULL a neuvedeno. Pro NULL to je zcela pravda. Ale v případě oprávnění, kde daná osoba může mít oprávnění pocházející z více zdrojů, je struktura, kde jsou existující oprávnění uložené, a ty co nejsou, prostě nejsou, naprosto normální a správná. A v takovém případě - pokud existuje i způsob jak určit "defaultní právo", tak má smysl i rozlišovat stav 0 = zakázáno.
Takže tady zmiňuješ sice správnou zásadu, ale na nesprávném místě.
A btw. i to explicitní NULL by v takové db struktuře mělo smysl, pokud by ta tabulka s právama obsahovala ještě něco dalšího a šlo by o denormalizaci: což je opět věc, kde se střetává teoretizování s realitou.

Stran: 1 ... 16 17 [18] 19 20 ... 68