a) Memo
vrachar() asi nebude to pravé. Nedá sa použiť Enter a vytvorenie odsekov.
Klidně můžeš použív VARCHAR. Samozřejmě do něj jde vložit jakýkoliv znak, včetně ENTERu.
Ostáva BLOB a ten sa mi javí ako kanón na vrabce.
Proč kanón na vrabce? BLOB je datový typ určený pro ukládání velkých dat, ve kterých se nebude hledat. Jestli to jsou textová data nebo grafická data je celkem jedno (dokonce, BLOB SUBTYPE 0 je definován jako textový).
Samozrejme chcem využívať TMemo na formulároch a aj v tlačových zostavách. Mám na mysli ich automatické zalamovanie textu a v prípade zostáv aj prispôsobenie výšky obsahu.
Nic z toho není závislé na tom, jestli použiješ VARCHAR nebo BLOB.
b) Boolean
Nadefinoval som si (vzhľadom na vlastné zvyky)|
Char(5)
Check (Value = ‘True‘ or Value = ‘False‘)
NUll – False (nemusí sa zadať. Niekedy potrebujem tri stavy)
Je to dobre? Viem, že vnútorne je Boolean reprezentovaný celými číslami.
"Dobře" je ošemetné slovo. Je to možné udělat i takhle, zvlášť když to nadefinuješ jako doménu a v ní uděláš omezení jen na hodnoty "True" a "False". Obvyklejší je ale použít buď nějaký malý INT (nula, jedna, NULL), u kterého se ti budou snadno dělat konverze z/na Delphovský boolean, nebo CHAR(1) (např. "Y", "N", NULL, nebo "A", "N", NULL, nebo klidně i "1", "0", NULL).
2) Použitie
a) Numeric
Nadefinoval som Numeric(8, 0) pre zadávanie IČO. V štyroch záznamoch som mal tri rôzne dĺžky (zapisoval som vždy maximálny počet číslic, ktorý mi to umožnilo) a to 11, 9 a 7. Nerozumiem prečo. Podľa mňa by tam malo byť vždy 8 číslic.
Možná se pletu, ale řekl bych, že Firebird reprezentuje NUMERIC jako číslo v plovoucí desetinné čárce. Pokud chceš BCD, tak je na to DECIMAL.
Každopádně pro IČO bych nepoužil ani jedno z toho, ale VARCHAR, a to délky tak asi 20.
b) Char() – VarChar() Úvaha
Char() má podľa význam používať v prípadoch keď je presne daný počet/max počet znakov. Napr. PSČ, IČO. Ináč Varchar().
Je tam niečo, čo túto úvahu neguje?
Tak například to, že PSČ nemá pevný počet znaků. IČO taky ne (jsou i "krátká IČa").
Moje zkušenost je taková, že CHAR má smysl pouze pro případ CHAR(1), a to ještě ne vždy. Jinak používat VARCHAR.
3) Domain
Tie sa mi veľmi páčia. Ale predpokladám, že majú význam len tam, kde sa v budúcnosti môže niečo zmeniť. Definovať Domain pre napr. Char(5), VarChar(10), VarChar(20) a podobne (čiže základné typy bez ďalšieho upresnenia) nemá zmysel.
Ano, "bez dalšího upřesnění". Jenže na domain můžeš udělat i upřesnění, jako třeba "smí obsahovat pouze hodnoty od 100 do 200" nebo "musí začínat nebo končit na A".
Vytvoril som DB (hurá) a na moje prekvapenie tam nevidím žiadne rozšírenie, len samotný názov DB. Má to tak byť?
Databáze se jmenuje tak, jak si ji pojmenuješ. Firebirdu je to úplně jedno, klidně bude pracovat s databází pojmenovanou
format.exe.