abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 6
dnes 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
dnes 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
dnes 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
včera 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
včera 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
včera 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
včera 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (23%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 809 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jaký typ sloupce pro true/false

14.5.2014 23:26 MArtin
Jaký typ sloupce pro true/false
Přečteno: 3641×
Ahoj, jaký zvolit typ sloupce v mysql aby se v sql dotazu v podmínce porovnávalo false/true
... WHERE check = true ...
... WHERE check = false ...
Ví někdo? Díky

Odpovědi

Josef Kufner avatar 15.5.2014 00:57 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
TINYINT(1), true = 1, false = 0.
Hello world ! Segmentation fault (core dumped)
15.5.2014 06:40 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Booleovské hodnoty v databázi považuji za chybu v návrhu. Proto nejlépe žádný, tedy takový sloupec v databázi nemít.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.5.2014 06:44 cronin | skóre: 48
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Booleovské hodnoty v databázi považuji za chybu v návrhu.
Dôvod?
15.5.2014 06:52 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Spíš by mě zajímal důvod, proč v databázi booleovské hodnoty mít. Velmi často jsou to redundantní údaje.

Kromě toho hledání podle boolean bude zpravidla provedeno jako full-scan, což není zrovna efektivní.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.5.2014 10:04 Ivan
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Nejcasteji se "boolean" (aka CHAR(1)) poziva pro logicky delete. Misto toho aby se radka fyzicky smazala tak se jen oznaci jako smazana. Existuji ale i dalsi rozumne duvody.

K tomu aby se nepouzil full-table-scan staci pouzit index nad vice sloupci, popr. existuji i takove veci jako histogramy - takze se full-table-scan pouzije jen kdyz je to opravdu vyhodne.
15.5.2014 10:55 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Podle mne je mnohem výhodnější použít standardní DELETE. Ten záznam tam pak nepřekáží. Mám pak zvlášť živé a smazané záznamy - nemusím do každého SELECTu přidávat "WHERE deleted=false". Pokud potřebuji hledat v živých i smazaných záznamech, spojím ty dvě tabulky přes "UNION ALL".
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.5.2014 12:26 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
tak to opravdu ne, co třeba relace, ....
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
15.5.2014 13:34 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Jaký je problém s relacemi?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.5.2014 15:51 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

Blbě se přemísťují (fyzicky mažou) číselníkové záznamy, je třeba komplexní update, který může být nežádoucí, takže se záznam jen oflaguje, bo to referenční integritu nerozbije…

Jestlu tomu budeme říkat mazání nebo třeba řízení accessibility je putna…

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
15.5.2014 23:32 jekub
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
odejde účetní porodit účetní. Z uživatelů smazat nejde - má na svědomí jakési vystavené doklady. char(1):=0

xkucf03 avatar 27.5.2014 17:39 xkucf03 | skóre: 45 | blog: xkucf03
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

V takovém případě už nejde z logiky věci o smazání, ale o změnu stavu – ten člověk nezmizel, nepřestal existovat, DELETE (ani ten „logický“) nedává smysl – pouze se změnil stav (nějaký příznak) a ten člověk už u nás nepracuje. A třeba se zase jednou vrátí. Rozhodně bys tam neměl mít sloupec smazáno, ale spíš zaměstnanec (boolean) nebo datumukončenípracovního_poměru (datum a čas) případně mít nějakou další tabulku, ve které budeš sledovat, v jakých obdobích u tebe pracoval. Případně se tohle dá řešit přes role – v tabulce uživatelů bude pořád, ale odebereš mu všechna práva/role (včetně „aktivní zaměstnanci“).

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
30.5.2014 23:51 jekub
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
omlouvám se, zřejmě to bylo příliš stručné k pochopení. Ne, nepotřebuji poradit.
xkucf03 avatar 27.5.2014 17:32 xkucf03 | skóre: 45 | blog: xkucf03
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

Co je s relacemi1? Nebo ty myslíš vazby 1:N, M:N?

Hodnoty cizích klíčů můžeš nastavit na NULL, nebo smazat i navázané záznamy, podle toho, co dává smysl.

[1] tabulkami

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
16.5.2014 16:51 manasekp | skóre: 29 | blog: manasekp | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
ja pouzivam hodnoty 0 a 1 pro oznaceni neceho co uz se "zpracovalo" tzn. webova stranka stazena, nejaky ucet otestovany atd. IMHO na tom neni nic spatneho. Ale jaky typ na to pouzit nevim, asi nejaky maly int stejne je to jedno.
manasekp | Recshop | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
16.5.2014 17:21 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
V tomto případě je ta booleovská informace nadbytečná. Buď informace zpracována není (je tam null) nebo zpracována je a ve sloupci je výsledek.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
16.5.2014 18:09 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Co když je tím výsledkem několik řádků v jiné tabulce? Můžete pak samozřejmě používat v dotazu EXISTS, ale možná ten údaj nechcete počítat pořád dokola, možná ho dokonce potřebujete použít v indexu, takže použijete počítaný sloupec. A v tom počítaném sloupci bude výsledek toho EXISTS.
Josef Kufner avatar 17.5.2014 01:29 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Docela často bývá žádoucí vědět, kdy se to stalo, takže se hodí timestamp nebo null. Počítané sloupce jsou v pohodě, o tom žádná.
Hello world ! Segmentation fault (core dumped)
17.5.2014 10:28 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
V tom případě bývá často zajímavý ten počet. Místo primitivního true/false se například hodí počet nepřečtených zpráv, který se pak uživateli může zobrazit při každém reloadu stránky. Netuším, k čemu by se v daném případě hodil EXISTS.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
17.5.2014 11:05 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Tam žádný počet nebo něco podobného být nemusí. Třeba stáhnu podepsanou datovou zprávu z datových schránek, jako první ji uložím jako BLOB do archivu zpráv. Pak je tam nějaký asynchronní proces, který prochází nezpracované zprávy, rozparsuje je a uloží je do struktury několika tabulek. Z hlediska čistoty struktury tabulek by bylo nejsprávnější zjišťovat, zda je daná zpráva rozparsovaná, dotazem do té struktury tabulek. Z hlediska použitelnosti a výkonnosti je ale dobré mít tenhle příznak někde vyjádřený jako jeden atribut té tabulky zpráv.

Už jenom samotný fakt, že celé SQL je postavené na booleovské algebře (pro každou položku z prohledávané množiny se vyhodnotí, zda je podmínka WHERE splněna nebo nesplněna), svědčí o tom, že v používaných modelech existují atributy, které mohou nabývat logických hodnot ano/ne.
17.5.2014 11:29 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Jak to souvisí s otázkou: Co když je tím výsledkem několik řádků v jiné tabulce?

Pokud je jako výsledek jeden řádek, tak tam buď je nebo není. Pokud je jich více, tak v nadřazené tabulce si udělám jejich čítač. Ani v jednom případě nepotřebuji boolean.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
17.5.2014 11:47 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Proč bych tam dával čítač, když ten údaj o počtu k ničemu nepotřebuju? S otázkou to souvisí tak, že je možné ji dál rozšířit na Co když je tím výsledkem několik řádků v jiných tabulkách? Přičemž některé ty řádky mohou být třeba sdíleny s dalšími záznamy (např. odesílatel datové zprávy bude mít v tabulce jenom jeden záznam, který bude provázán na všechny datové zprávy, které odeslal). To do toho čítače zapíšu celkový počet souvisejících záznamů, což je číslo, které je úplně k ničemu?
17.5.2014 11:57 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Pokud to číslo nepotřebuji, tak nebudu potřebovat ani takový sloupec, ani zmíněný boolean.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
17.5.2014 12:09 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Jak jsem psal výše, potřebuji vědět, které přijaté zprávy mám rozparsovat.
17.5.2014 12:12 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Jak jsem psal výše, nerozparsované zprávy nemají výsledek a proto se dají snadno detekovat i bez dalšího zbytečného sloupce typu boolean.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
17.5.2014 12:58 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Já ale nechci tu detekci psát pořád dokola. To, jestli je nebo není zpráva rozparsovaná, je její vlastnost, proto bych tuhle informaci rád našel jako atribut té zprávy. Třeba i proto, abych ho mohl použít ve složeném indexu. A teď nezáleží na tom, zda ten atribut bude někde fyzicky uložen, nebo se bude vždy dopočítávat.

Nebo jak by podle vás vypadaly indexy a dotaz, který mi vrátí nerozparsované zprávy seřazené podle data přijetí?
17.5.2014 13:30 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Nerozparsované zprávy jsou v jedné tabulce, po rozparsování se převedou do druhé tabulky. Jak prosté.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
17.5.2014 14:23 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Takže budu mít tři tabulky, jednu s ID (aby bylo kam odkazovat), a tabulku pro nerozparsované zprávy a druhou pro rozparsované zprávy, obě tabulky budou mít stejnou strukturu (to zavání špatným návrhem databáze)? Při parsování zprávy ten několikamegový BLOB z jedné tabulky smažu a do druhé zapíšu? To bude mít databázový stroj radost. Když budu potřebovat vypsat oba typy zprávy, budu muset použít SELECT UNION, který většinou databáze neumí moc optimalizovat (protože se většinou používá jen při špatně navržených strukturách databází).

Nebo abych ta data nepřesouval z jedné tabulky do druhé, budu mít data jen v jedné tabulce, a v druhé tabulce bude jenom seznam ID těch nerozparsovaných zpráv. Abych je mohl mít seřazené podle data přijetí, bude tam i počítaný sloupec odkazující na datum přijetí v té hlavní tabulce. Když budu chtít znát ten příznak zpracována/nezpracována, vždycky si tu druhou tabulku k té hlavní připojím.

Ano, existuje mnoho krkolomných způsobů, jak se vyhnout booleovské hodnotě. Ale proč to dělat, když ta modelovaná data prostě mají příznak typu ano/ne?
17.5.2014 17:41 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Implementaci fronty v SQL nepovažuji za vhodné řešení.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
17.5.2014 18:34 Logik
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Ufff :-) aneb jak neuznat, že tvrdím s odpuštěním hovadinu.

V čem bys to tedy implementoval, když bys měl zároveň požadavek na zajištění konzistence dat tak, aby to byla levně udržovatelná technologie (a tedy bys moh levně vývojáře "vyměnit" za jiný ucho co to bude za pár korun udržovat a dál vyvíjet)?

-------

Jinak k původnímu offtopic tématu. Enum a bool jsou dvě různé věci a hodí se na různé věci. Bool je odpověď na otázku zjišťovací, enum na otázku doplňovací. Pokud údaj v databázi je opravdu odpověď na otázku zjišťovací, není důvod ho nepoužít a použít enum je naopak špatné.

To, že se dosti často dělá v návrhu chyba a odpověď na otázku doplňovací se dělá pomocí série odpovědí na zjišťovací otázky (tzn. místo jakou má barvu? je v db je červený? je modrý? je zelený?) na věci nic nemění. Ono někdy se naopak dělá i opačná chyba, např. místo otázek: Je student? Je důchodce? se dá jedna otázka Co je? a když se pak změní legislativa a objeví se student důchodce, tak se může celá aplikace přepsat.

PS: To, že ve výše zmíněném případu je velmi na zvážení, jestli neudělat child tabulku ČlověkJeNěco, kam sypat příznaky, je pravda. Ovšem v případě, kdy se množina těchto statusů mění jen velmi zřídka, to bývá často overkill.
18.5.2014 10:36 Filip Jirsák
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
V tomhle případě se ale nejedná jen o frontu. Ty podepsané datové zprávy jsou důkazní materiál a archivují se. Možná kdybyste implementoval jenom frontu, můžete zvolit jiné řešení. Ale pokud je o enterprise aplikaci, nemůžete si tam nastrkat dvacet různých technologií pro ukládání dat a u každé řešit vysokou dostupnost, zálohování a vzájemnou konzistenci dat.
19.5.2014 06:56 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Vypadá to, že pro určité speciální případy v enterprise aplikacích se boolean skutečně hodí.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Josef Kufner avatar 18.5.2014 13:41 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Kdybych to dělal já, dám tam místo booleanu timestamp, abych věděl, kdy ke zpracování došlo. Nezpracované zprávy by měly NULL.
Hello world ! Segmentation fault (core dumped)
18.5.2014 23:18 manasekp | skóre: 29 | blog: manasekp | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
vysledkem muze byt neco uplne jineho co se uklada do jine tabulky nebo se to vypise do problizece nebo do textoveho souboru (vsechny 3 pripady tady mam v ruznych skriptech vyuzite). Taky je v nekterych pripadech vhodna moznost vsechno "vynulovat" a zpracovat znovu.
manasekp | Recshop | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
Josef Kufner avatar 15.5.2014 11:12 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Docela často je bool zneužit k rozlišení typu nebo stavu záznamu. V takových případech je vhodnější použít enum nebo referenci na entitu v jiné tabulce. Vhodnost booleanu se projeví v okamžiku, kdy je potřeba přidat třetí hodnotu.
Hello world ! Segmentation fault (core dumped)
16.5.2014 08:33 ffffffffffffffffffffffffffff
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
boolean ma len 2 hodnoty - true a false, ak sa ma pridat 3 hodnota, tak to nie je boolean
16.5.2014 09:31 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Nepochopil jsi ironii. Pokud nějakou proměnnou uděláš boolean, po nějakém čase můžeš potřebovat třetí stav a musíš kvůli tomu předělat kus aplikace. Proto je obvykle lepší použít ENUM. Už kvůli tomu, že má mnohem vyšší vypovídací hodnotu než true/false.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
28.5.2014 17:07 j
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Daleko lepsi je pouzit char nebo int ... protoze to bude stejne fungovat i jinde nez v mysql.
28.5.2014 18:00 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Je zbytečné se zabývat přenositelností mezi databázemi. Stejně se zpravidla musí struktura předělat, aby se využily schopnosti, které původní databáze neměla a ta nová je má.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
16.5.2014 14:16 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

Nebuď si tak jistý, to dogma nemusí být tak pevné, jak by se na první pohled zdálo :-)

Dokonce si myslím, že právě při programování, je daleko častější a potřebná Three-valued logic. Tedy stavy true/false/unknow (nebo true/false/not-true-and-not-false) jsou daleko běžnější než jen prosté true/false, a v SQL je to de-facto běžně používaný přístup maskující se pod NULL…

Viz:
Three-valued logic
Boost.Tribool
C# bool? (Nullable)

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
xkucf03 avatar 27.5.2014 17:30 xkucf03 | skóre: 45 | blog: xkucf03
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

Ty jsi nikdy nepotřeboval uložit jeden bit informace? Vždycky jich bylo víc?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
27.5.2014 17:41 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Zpravidla je těch bitů informace víc a ten jeden bit byl zpravidla navíc. Velmi často se dá nahradit tím, že tam nějaká jiná informace je nebo není.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
xkucf03 avatar 27.5.2014 18:31 xkucf03 | skóre: 45 | blog: xkucf03
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Velmi často se dá nahradit tím, že tam nějaká jiná informace je nebo není.

S tím souhlasím – např. tam může být čas, kdy něco přestalo platit nebo bylo dokončeno (třeba doručení objednávky, dokončení studia) nebo to jde převést na další tabulku (historie stavů). Ale je otázka, jestli tyhle dodatečné informace chceš sledovat – někdy je nepotřebuješ nebo je to dokonce nežádoucí (ohrožovalo soukromí nebo zabíralo zbytečné místo na disku), tak se boolean perfektně hodí. Rozhodně bych z toho nedělal nějaké dogma a neříkal, že boolean v DB je špatně.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
27.5.2014 17:44 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Ještě reakce na "nikdy": Protipólem je "alespoň jednou". Ano, výjimečně se mi stává, že potřebuji uložit jen jeden bit. Vždy si čtyřikrát rozmyslím, jestli to není způsobeno chybou v návrhu.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.5.2014 09:13 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

CHAR(1) | BINARY(1) popřípadě ENUM, stejně dříve nepozději potřebuješ minimálně three-valued typ.

Často volím variantu BINARY(1), protože jsem líný…

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
15.5.2014 10:00 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Dříve jsem BINARY(1) také používal, ale u něčeho, na co si za boha nevzpomenu, to dělalo problémy, takže moc nedoporučuji...
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
15.5.2014 15:44 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Používám v MySQL snad všude
BINARY(1)
protože je to zkráceně
CHAR(1) CHARACTER SET binary
takže za boha nevím, kde by to mohlo dělat problém ;-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Josef Kufner avatar 20.5.2014 13:43 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Tyhle všelijaké obskurnosti způsobují, že klienti ty data zobrazují všelijak. Například v PHP funguje TINYINT(1) bezproblémově při přímém použití v podmínce. Tedy v kódu "if ($row['col']) { ... }" zafunguje, jak je očekáváno. Viděl jsem ale používat i ENUM('Y', 'N'), kde pak obojí znamená true.
Hello world ! Segmentation fault (core dumped)
20.5.2014 12:31 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Celá disuze mi přijde dost akademická. Pokud to vezmu prakticky, tak v Mysql lze uvést jednoduše typ BOOLEAN což je alias k TINYINT(1). Z toho je vidět, že Mysql interně používá TINYINT(1). Zápis pomocí BOOLEAN je ovšem srozumitelnější a řekl bych i přenositelnější na jiné DB. Pro hodoty mi pak z totožného důvodu přijde vhodnější zápis TRUE/FALSE, byť jde opět jen o aliasy k 1 a 0.

To co požaduje tazatel splňuje BOOLEAN dostatečně:
CREATE TABLE t (
   id  int not null primary key auto_increment,
   value boolean
);
INSERT INTO t (value) VALUES (FALSE),(TRUE),(NULL);
SELECT * FROM t WHERE value = TRUE;
Ohledně debaty zda je vůbec vhodné používat boolean - to je přece třeba zvážit vždy podle situace. Je na místě upozornit, že použití např. enum nebo set místo booleanu může být flexibilnější, ale podrobnější rozbor by měl smysl jedině v případě, že bychom znali celé zadání tazatele.
-- OldFrog
26.5.2014 10:18 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Nechapu tu akademickou diskusi nad smysluplnosti booleanu. Prostě boolean je informace jako každá jiná a záleží na konkrétním případě, jestli je to opravdu výčet všech možností (i do budoucna) nebo ne.

Boolean používám na mazání a selecty pouštím nad materializovaným view který odfiltruje smazané záznamy... Výhody? podle mě hlavně fk z jiných tabulek
never use rm after eight
26.5.2014 11:36 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Nemohu za to, že se mnozí nedokáží smířit s tím, že se snažím booleovským proměnným vyhnout, jak to jen jde. Mohli mě ignorovat, ale místo toho neustále chtějí znát mé důvody a snaží se mi je vyvrátit. Co mám s nimi dělat? Asi ignorovat.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
26.5.2014 16:14 lertimir | skóre: 58 | blog: Par_slov
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Pokud to podáš takto, tak to podle mne znamená: "Nemám je rád a snažím se jim vyhnout, jak to jde." Tak to tě jistě budou ignorovat (nebo respektovat, že je nemáš rád.) Ale, když argumentaci stavíš jako logickou strukturu, která fakticky říká: "Je lepší stavět datový model tak, aby se v něm booleovské proměnné nevyskytovaly.", tak se nediv, že dostaneš spoustu otázek: Proč? a případně příkladů datových modelů, kde nepoužití booleovskych proměnných může znamenat značné komplikace v designu.
26.5.2014 16:38 Kit | skóre: 37 | Brno
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Však jsem to tak napsal. Zkus se podívat na můj první příspěvek. Zkus si přečíst i další mé příspěvky. Všechny prezentuji jako svůj názor.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
26.5.2014 18:04 Logik
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
"Booleovské hodnoty v databázi považuji za chybu v návrhu. Proto nejlépe žádný, tedy takový sloupec v databázi nemít."
Tak tvrdíš, že citované pravidlo má generální platnost, nebo ne? Pokud ne a je to jen nějaké pravidlo, kterého se z nevímjakého důvodu držíš, proč ho sem píšeš?

Z toho je vidět, že normální člověk pochopí, že tomu tvrzení generální platnost dáváš. Oak se ovšem nediv, že se Ti ostatní snaží (a imho úspěšně) to pravidlo vyvrátit. Protože se snaží tazateli poradit - pokud tedy dá tazateli někdo radu špatnou, tak se tu radu snaží korigovat. Akorát jsou slušní a místo aby rovnou napsali, že se mýlíš, tak nejdřív chtějí vědět důvody, proč to tvrdíš.

Takže ano, mohli Tě ignorovat, ale tím by byl uveden tazatel v omyl. Proto bylo správné, když na Tebe reagovali.

Pokud si furt připadáš "nevině", tak pokládal bys za chybu ostatních, kdyby na radu "jak nainstalovat mysql" někdo reagoval, že on to dělá příkazem "rm / -rf" a Ti ostatní na to reagovali, že nemá pravdu? Nebo by to byla chyba toho člověka, co by tam tu blbinu napsal, byť jen "jako svůj názor"?

27.5.2014 19:22 priman
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Pokud chceš maximální optimalizaci, tak můžeš použít nula znakový char s možností NULL, tím dosahneš největší optimalizace za cenu horší čitelnosti. Pokud chceš raději čitelnost, tak použij typ boolean, který je aliasem pro tinyint(1). Pokud to není něco na styl "show_on_homepage", kde je opravdu logicky jen true/false, ale bude to něco jako "where_show", kde chceš naprasit třeba true na top a false na bottom, tak použij enum/set, který bude názvem hodnoty situaci lépe popisovat a navíc ti umožní v budoucnu přidat další volbu.
Josef Kufner avatar 27.5.2014 19:46 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Zrovna "show_on_homepage" je velmi brzy následováno požadavkem, aby to na homepage bylo jen v daném období.
Hello world ! Segmentation fault (core dumped)
30.5.2014 09:02 pocitujlasku | skóre: 15
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false

ja v mssql pouzivam bit.

True/false ma vyznam aj v pripade, mam vo front-end formular s checkboxmi. ako ulozim informaciu o tom, co je zvolene, alebo nie? tu informaciu potrebujem uchovat, lebo ju vyuzivam v dalsich storkach. int mi pride plytvanie, char(1) tiez nie je vhodny...

pripadne dost vyuzivam na identifikaciu, ci je zvoleny zaznam aktivny, alebo nie Active 0/1 - napr. uzivatel.

30.5.2014 11:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jaký typ sloupce pro true/false
Jestli MySQL CHAR(1) nebo MySQL TINYINT nebo v M$SQLBIT v jedné tabulce je putna, okupuje to stejný prostor.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.