abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 1
    včera 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 2
    včera 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    18.4. 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    18.4. 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    18.4. 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    18.4. 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    18.4. 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    18.4. 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    KDE Plasma 6
     (68%)
     (11%)
     (2%)
     (20%)
    Celkem 566 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Jaký typ sloupce pro true/false

    14.5.2014 23:26 MArtin
    Jaký typ sloupce pro true/false
    Přečteno: 6326×
    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: 70
    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: 45 | 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: 49
    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: 45 | 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: 45 | 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: 45 | 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: 49 | 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-DK, Relational pipes
    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: 49 | 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-DK, Relational pipes
    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.
    BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
    16.5.2014 17:21 Kit | skóre: 45 | 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: 70
    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: 45 | 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: 45 | 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: 45 | 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: 45 | 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: 45 | 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: 45 | 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: 45 | 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: 70
    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.
    BIOKOMP | 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: 70
    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: 45 | 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: 45 | 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: 49 | 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-DK, Relational pipes
    27.5.2014 17:41 Kit | skóre: 45 | 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: 49 | 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-DK, Relational pipes
    27.5.2014 17:44 Kit | skóre: 45 | 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: 70
    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: 36 | 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: 45 | 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: 64 | 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: 45 | 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: 70
    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.