Poslední úpravy - Vyhledat:

SQL

O modelování

Power Designer

Oracle Data Modeler

Krátká videa DM

Zdroje...

edit SideBar

DM /

Datové typy

Proč máme určovat datové typy pro data, která se budou ukládat do databáze?

Systémy řízení báze dat mají optimalizovány způsoby práce s daty podle typu dat, jinak se ukládají a zpracovávají celočíselné údaje a jinak například textové názvy či jména. To proto, že očekávané operace, které budou nad těmito daty požadovány, se odlišují. A očekávané operace závisí na významu dat, která do databáze chceme uložit. Celočíselný údaj udává počet, pořadí. Jména či názvy je jakýmysi identifikátory. S počty budeme eventuálně počítat, názvy a jména budeme porovnávat, zda jsou stejná či různá. Pořadí se dají porovnat, co je před čím, jména můžeme pro určitý účel seřadit podle abecedy.

Jsou i jiná data – například obrázky. Od velmi schopného databázového systému můžeme chtít například porovnat množství určité barvy v obrázcích, nebo dokonce porovnat, zda zobrazují totéž (například stejný otisk prstu).

V průběhu historie databázových systémů se utvořila představa o základních datových typech:

  • Číselné datové typy, které ještě dále dělíme na
    • celočíselné
    • s pevnou desetinnou čárkou
    • s plovoucí desetinnou čárkou
    Číselné údaje udávají množství, počet, pořadí.
    Běžně používáme ještě jiné údaje, kterým se také říká "čísla", ale nejsou čísly v tomto smyslu: například rodné číslo, telefonní číslo. Jsou sice zaznamenávány pomocí cifer, ale jistě nemá smysl s nimi provádět výpočty (až na např. výjimku integritní kontroly rodného čísla).
    S čísly očekáváme výpočetní operace.
  • Textové údaje omezené délky (typ se většinou nazývá CHAR nebo VARCHAR)
    Textové údaje zachycují jména nebo názvy objektů z aplikační oblasti,
    nebo kódy: telefonní číslo, rodné číslo, URL adresa ... jsou kódy.
  • Datum-čas
    Identifikují okamžik v toku času, s nějakou přesností: den, hodina, ...
    Může být udáno jen datum, či i s časem, nebo jen samotný čas (v rámci nespecifikovaného dne; tento datový typ systém Oracle nepodporuje)).
    Rozlišují se dva významné typy:
    • datetime, který je určen pro vstup dat do databáze z vnějšku
    • timestamp, který je určen k tomu, že sama databáze do něj vkládá hodnoty (časová razítka)
    Na rozdíl od "občanského" zápisu datumu nebo času jakožto textu či skupiny čísel, datumočasové typy nabízejí efektivní porovnání "dříve" podle toku času, efektivní vypočtení délky časového intervalu mezi dvěma datumočasovými údaji. Dostupné jsou funkce "extrahující" jednotlivé "občanské" složky: rok, měsíc, den, hodina, minuta, sekunda.
  • Logické hodnoty ano-ne
    U tohoto typu je dobré si uvědomit, že konkrétní hodnota může být ANO, NE, nebo NULL, tedy že jsou tři možnosti.
    (Poznamenejme, že např. systém Oracele tento typ nepodporuje.)
  • Typ vyjmenovaných hodnot
    Podpora tohoto typu v databázových systémech je spíše sporadická. Většinou ho musíme realizovat buď CHECK klauzulí nebo číselníkem.
    Jak název říká, jedná se o případy, kdy pro daný atribut máme vyjmenovány do úvahy připadající hodnoty: například akademické tituly, oslovení,
    kategorie, do kterých lze objekty uvažovaného typu zařazovat.

Množina základních datových typů má neostré hranice, dále se mezi běžné typy zařazují "nové":

  • Volné texty, tj. do nichž lze vložit "libovolně" dlouhý text (typ se nazývá různě např. TEXT, MEMO, CLOB...).
    Používá se pro různé poznámky, anotace, textové obsahy strukturovaných dokumentů, vysvětlivky...
    "Libovolnost" délky je omezena možnostmi konkrétního databázového systému.
    Od typů CHAR či VARCHAR se odlišuje nejen (ne)omezením možné délky, ale hlavně efektivitou vyhledávání. Nalezení konkrétních záznamů se zadanou hodnotou v takovém poli je typicky řádově pomalejší, než u typů CHAR či VARCHAR.
    Moderní databázové systémy nabízejí podporu pro vyhledávání v textu v polích tohoto typu, tedy lze například vyhledávat podle konkrétních slov či slovních spojení obsažených v textu.
  • Bitové řetězce "libovolné" délky (většinou nazývané BLOB)
    Vhodné pro přeložené programové kódy, či jiná počítačově zpracovatelná data.

Přední databázové systémy nabízejí ještě další možnosti:

  • Obrázky (eventuálně další multimédia)
    Uvědomte si, že od typu BLOB se odlišují určeným významem, tedy tím, že bitový řetězec se má interpretovat jako obrázek. K tomu jsou nabízeny různé metody pro práci s obrázky.
  • Časové období od-do
    Od prostých datumočasových dat se liší možností porovnat, zda nějaká událost padne do uvažovaného období, zda se dvě období nějak překrývají...
  • Polygony
    Určeny pro vymezení útvaru v rovině, nejčastější použití je v geografických systémech.
    Opět jsou důležité metody, umožňující zjistit, zda daný bod leží v uvnitř polygonu, zda se polygony nějak překrývají, zda je nějaký bod v zadané vzdálenosti od polygonu...

Nabídka datových typů se neustále rozšiřuje, a navíc jsou nabízeny možnosti si vlastní datový typ dodefinovat. S tím jsou však určité obtíže: pro efektivní práci s daným typem musí systém řízení báze dat tento mít zabudován tak, aby mohl efektivně data daného typu ukládat a používat pro něj optimalizační metody. Mezi nově nabízené dnes patří například

  • XML dokumenty
    V tomto ohledu se odlišují "tradiční" databázové systémy, které s XML dokumenty zacházejí jako s jedním z datových typů a nabízejí k němu odpovídající metody,
    a nativní XML databáze, které s XML dokumenty zachází podstatně efektivněji. Tyto systémy ovšem obvykle nenabízejí další služby běžné u nejrozšířenějších databázových systémů.

Obšírný přehled databázových datových typů nabízených často používanými databázovými systémy naleznete na wikipedii.

Upravit - Historie - Tisk - Poslední úpravy - Vyhledat
Poslední úprava stránky: 11.02.2011, 00:04