Ne vždy musí jít o neznalost autora databáze, do věci promlouvají i jiné důvody jako je například přenositelnost nebo optimalizace.
V ideálním případě boolean reprezentuje jeden bit, jenže pro počítače (i databáze) je adresovatelná jednotka paměti jeden byte a pracovat přímo s bity je časově náročnější (musejí se "vymaskovávat"), proto je boolean obvykle vnitřně reprezentován prostě a jednoduše číslem (0 nebo 1) a to dokonce celým o rozsahu osmi nebo častěji 32bitů (práce s wordy je nejefektivnější). Jinak řečeno: sizeof(bool) == sizeof(int) - na většině implementací C/C++ například.
Takže v některým případech (neříkám vždy) se může stát, že takový tinyint(1) i int(4) zabírá v konečném důsledku méně prostoru, než boolean (teoreticky 64 bitů na 64bitovém serveru). Záleží na situaci, podpoře ze ztrany runtime (SQL serveru) atd atp.
To jen tak na okraj. Ne vždy se jedná o neschopnost. Dost často jen lidé nevidí všechny souvislosti ;-)
Co se veřejně věnovat pouze tomu, čemu rozumíte?
Oba zápisy tinyint(1) a tinyint(4) obojí ukládá jeden bajt dat. To, že si domýšlíte co má znamenat to druhé číslo a ještě špatně je v pořádku. Ovšem veřejně na tom postavit kritiku, ačkoli o tom mnoho nevíte – nechám bez komentáře.
Stejně tak jsem měl problém číst dál, když jsem četl ohnivou kritiku toho, že v MySQL někdo použil integerový typ pro bool.
To taky nikdo neříká :-))) U MySQL je tinyint ovšem 8 bitů, int 32 bitů a tak dále. http://dev.mysql.com/doc/refman/5.0/en/integer-types.html
MySQL pre kompatibilitu s SQL syntaxou pouziva cislo v zatvorke, ktore hovori o dlzke slova, ale neberie ho do uvahy. Niektore nastroje na pracu s DB mozu byt urcene pre viac platforiem a tomuto cislu venuju vyzam a niekto kto chcel urobit boolean vytvoril tinyint(1). Alebo aj nevenuju a defaultne tam daju int(4), alebo aj preto, ze vedia, ze aj tak MySQL pouzije viac bitov.
Takze ak je to MySQL, tak je uplne jedno, ci je tam tinyint 1, 4, alebo 17.
Funkcny priklad:
CREATE TABLE `nekritizuj_bezhlavo_toho` (`o_koho_robote_vela_nevies` TINYINT(17));
Proč je to nesmyslné? Já v tom nesmysl nevidím.
Nesmyslné je, když Daniel Dočekal a několik dalších kritizují něco, o čem evidentně vědí kulové.
Těším se a rozhodně si nenechám ujít, až Daniel Dočekal napíše třeba kritiku práce atomových fyziků, nebo jiných oborů, ve kterých se neorinetuje. Bude bžunda. Jestli to budou stejné voloviny jako píše o databázích, tak prosím o upozornění předem.
Internet Info Lupa.cz (www.lupa.cz)
Server o českém Internetu. ISSN 1213-0702
Copyright © 1998 – 2021 Internet Info, s.r.o. Všechna práva vyhrazena.