Lehký úvod – teorie databází

1. díl - Lehký úvod – teorie databází

Tomáš Jecha, MVP, MCSD       12.12.2009       SQL, Databáze       42153 zobrazení

První díl přináší teoretické seznámení s databázovými systémy a jejich rozdělením.

Byla nebyla početná skupina programátorů, kteří alespoň jednou za život využili databázi. Ale nemalá část z nich dokáže pracovat jen s velmi omezenou škálou funkcionality, co nabízí. Často ani neví, že mohou použít nějaké uložené procedury nebo transakce. A když už to ví, tak často neví jak je správně použít a jaké jsou všechny možnosti a výjimky. Když se pak někdo takový pokusí sestavit větší systém založený na databázích, v práci se nakonec zamotá. Celé to pak může být děravé a nemalou část času tráví ošetřováním nejrůznějších problémů. Jenže při správném návrhu můžete prakticky úplně zamezit, aby se do databáze uložilo něco špatně. Proto jsem se rozhodl napsat tento seriál o Microsoft SQL Serveru. Rád bych na rozdíl od jiných článků zašel do hloubky a popsal i složitější vychytávky, které mohou ve výsledku o dost usnadnit práci. I to jest důvodem, proč budu popisovat problémy spíš z pohledu databázového specialisty než programátora. Navíc nechci vysvětlovat věci jen teoreticky, budu uvádět příklady, kde se popisované funkce dají využít. Dotazy rád odpovím, pokud na to budou mé schopnosti stačit.

Databáze obecně

Tento kus článku je pro opravdové začátečníky, takže kdo už s nějakou databází někdy pracoval, může ho s klidem v duši přeskočit.

Databáze není nic jiného než úložiště na data. I jednoduchý soubor s odřádkovaným textem je vlastně databáze. A kus kódu, který ho parsuje je vlastně databázový systém. U menších projektů můžete občas váhat zda použít řešení podobné textovému souboru nebo velký databázový server. Patrně tušíte, že zde bude rozdíl v robustnosti výsledného řešení. Přeci jenom SQL Server budovaný početnou skupinou profesionálů několik dlouhých let v porovnání s vlastním systémem ukládání, který si napíšete za 5 minut bude nabízet o něco komplexnější služby. Tím nechci říkat, že nasadit těžký server musí být vždy lepší, ale pokud budujete něco většího, určitě se vyplatí zvážit jeho výhody:

  • řešení několikanásobného přístupu - zkuste si zapsat 5x vedle sebe do jednoho souboru a máte skoro jistotu, že se program sesype. V databázích můžete ty kolize při dobrém návrhu velmi elegantně řešit.
  • několik možných druhů přístupů - přistupujte si do databáze ze sítě, či z internetu přes TCP/IP nebo z lokálního stroje přes sdílenou paměť - je čistě na vás, co vám zrovna vyhovuje
  • bezpečnostní politika - disponují silnou bezpečnostní politikou, která umožní dobře aplikace zabezpečit a omezit přístup škůdcům
  • zvládá větší objemy dat - databáze jsou navržené aby zvládaly procházet a modifikovat i velké množství dat ve velmi krátkém čase (psát ručně indexování, stránkování a binárně optimalizované ukládání je pro běžného smrtelníka velmi optížné)
  • SQL jazyk - dává nám možnost snadno řešit nejrůznější třídění, prohledávání, spojování atp.

Když to všechno sečteme, nabízí nám SQL Server robustní řešení ukládání dat. I proto jsou dnes databáze nezastupitelným prvkem při budování většiny aplikací a to jak desktopovým, internetových i mobilních.

Databázový systém

Databázový systém je zkráceným synonymem pro systém řízení báze dat (DBMS). Jedná se o softwarový produkt, který má na starosti řešit komunikaci mezi softwarem a fyzicky uloženými daty. Má zajistit jistou úroveň abstrakce a poskytnout nám více, či méně efektivní možnosti pro ukládání dat a udržení jejich integrity. Celý tento seriál se bude snažit vysvětlil právě postupy sloužící k úspěšnému udržení databáze v přijatelném stavu. Za přijatelný stav považuji:

  • Přístup k datům je v rámci možností rychlý
  • Data neobsahují odkazy na neexistující položky
  • Logika ukládání dat se udržuje přímo v databázi
  • Celá databáze dodržuje jednotné konvence pro pojmenování objektů

Dnešní databázové systémy by měli nabízet především tyto funkce

  • Zajištění integrity dat i po nečekaném vypnutí systému (výpadek proudu, pád systému)
  • Udržení dat podle definovaných struktur
  • Možnost využívat transakčního přístupu k atomickým operacím (buď se provede vše nebo nic)
  • Zabezpečení (autentizace a autorizace)
  • Model pro řešení konkurenčního přístupu k datům
  • Jazyk (primárně SQL) pro ovládání databáze
  • Uložené procedury, funkce a triggery – kusy SQL jazyka zajištující úkony s databází a reagující na změnu stavů databáze
  • Vazby mezi tabulkami a jednoznačná identifikace záznamů v tabulkách
  • Indexy nad sloupci tabulek a zajištění unikátní hodnoty řádků
  • … další funkce - každý ze systémů se snaží implementovat vlastní rozšíření

Pro ukázku uvádím několik dnes známých databázových systémů:

  • Microsoft SQL Server
  • MySQL
  • Oracle
  • Firebird
  • PostgreSQL
  • Microsoft Access

V tomto seriálu se budu zabývat pouze jedním z nich. A to Microsoft SQL Serveru.

Typy databází podle struktury dat

Plochá (flat) databáze

Nejzákladnějším typem databáze je databáze plochá (flat). Ta uchovává data jako obyčejnou sadu záznamů. Ukázkou takového typu databáze může být obyčejný textový CSV soubor. Ten na jednotlivých řádcích uchovává jednotlivé záznamy. Každý řádek je pak ještě rozdělen na sloupce pomocí oddělovačů. Důležitým rysem flat databází je, že tento typ neobsahuje vazby na jiné záznamy. Jedná se čistě o sadu záznamů. Využitelnost ploché databáze je ideální jen pro nejzákladnější ukládání seznamů. Tento typ lze samozřejmě implementovat i v rámci komplexnějších typů databází o kterých se dočtete v dalších odstavcích.

Hierarchické a síťové databáze

Dále popíšu 2 typy databází, které bych označil za předchůdce databází využívaných dnes. Bude to tedy spíše teoretický náhled na věci již nepoužívané a proto není 100% nutné správně chápat nebo vůbec znát do detailů jak fungují. Pokud vás toto téma nezajímají, přeskočte přímo na Relační databáze.

Jedná se o hierarchické databáze a síťové databáze. Prosím neplést termín síťový se síťovým prostředím více počítačů a termín hierarchický s ukládáním hierarchických dat (například pomocí hierarchyid ze SQL Server 2008 – o tom se dočtete v některém z pokračování). Jedná se totiž výhradně o strukturu tabulek a jejich vazeb v těchto typech databází.

Jak hierarchické, tak síťové databáze mají společnou snahu o eliminaci redundantních dat (opakujících se). Příkladem může být seznam studentů ve třídách základní školy. Každý student má jednu třídu, kterou navštěvuje. Ta je definovaná jménem a textovým popisem, kde se ve škole nachází. V ploché databázi by měl mít každý student u sebe sloupce jménoTřídy a umístěníTřídy. To je ale vysoce nepraktické hned z několika důvodů. Za prvé to znamená časté opakovaní stejný dat. Navíc změna názvu nebo umístění třídy se bude muset provést u všech záznamů s příslušnou třídou. Pokud na to zapomeneme, získáme různé interpretace téže třídy. Druhým problémem je získání seznamu tříd. Ten by se musel provádět postupným procházením všech studentů a hledáním odlišných tříd – přeci, co kdyby měl zrovna ten poslední student zapsanou jinou třídu? Zda přichází na řadu hierarchické a síťové databáze. Ty dovolují definovat k jednotlivým tabulkám rodičovské tabulky. Obecně pak platí, že každý záznam v tabulce musí obsahovat odkaz na jeden ze záznamů z hierarchický vyšší tabulky. Pro příklad uvádím strukturu tabulek ve školní databázi:

image

Hierarchická databáze

Podle této struktury může existovat samostatný seznam zaměstnanců (podobný jako ve flat databázi) a dále samostatný seznam tříd. Tabulka studentů je ale umístěna pod tabulkou tříd, což znamená, že každý student (záznam v tabulce studentů) musí mít odkaz na jeden záznam v tabulce tříd. Tím omezíme redundanci dat, protože každý student obsahuje pouze odkaz na jednu ze třít a zabírá tedy minimum prostoru a navíc jsou třídy definované na jednom místě a každá pouze jednou.

Toto byla ukázka hierarchické databáze. Velmi podobně je na tom i síťová databáze. Ta má navíc však jedno rozšíření - možnost více rodičovských tabulek. Například pokud by měl každý ze studentů možnost zvolit jeden povinný cizí jazyk – student se tedy váže na jednu třídu a jeden jazyk:

 image

Síťová databáze

Relační databáze

Relační databáze jsou dnes nejpoužívanějším typem databází a v zásadě plně nahradili ploché, hierarchické a síťové. Alespoň na poli databázových systémů – stále je pravděpodobné, že použijete například plochou databázi pro uložení jednoduchých dat do souboru, protože je prostě zbytečné instalovat databázový systém pro zajištění pokročilých funkcí.

Relační databáze se poučily z chyb a nedostatků předešlých typů databází. Již nemají rozdělení s kořenovým prvkem a nahlížejí na jednotlivé datové tabulky na stejné úrovni.

Relační databáze může obsahovat libovolný počet tabulek, které slouží právě k ukládání dat (řádků - rows). Tyto řádky musí být ve formátu, který určují předem definované sloupce (columns) tabulky. Takže pokud chceme ukládat například uživatele, vytvoříme do databáze tabulku a přidáme jí 3 sloupce: uživatelské jméno, plné jméno a heslo. Sloupce musí mít unikátní jména, takže například: userName, fullName a password. Když potom vkládáme uživatele, přiřadíme sloupcům hodnoty (například: userName='tomas',fullName='Tomáš Jecha' a password='tajne heslo'). Samozřejmě je řada dalších nastavení a úprav tabulky, které by bylo zapotřebí nastavit (třeba znemožnit duplicitní názvy sloupce userName), ale těmi se budeme zabývat později v článku. Navíc je dobré vytvářet unikátní identifikátory řádků, kterými můžete příslušný záznam identifikovat. Těm říkáme primární klíč – tedy sloupec, který musí obsahovat unikátní hodnotu v rámci všech řádků tabulky. V našem případě by to mohl být právě sloupec s uživatelským jménem.

Dále mohou tabulky v relačních databázích obsahovat takzvané cizí klíče (foreign keys). Ty mají zásadní funkci při návrhu databáze – definují odkaz na primární klíč z jiné (možno i stejné) tabulky. Tím pádem máme možnost přidáním sloupce označeného jako cizí klíč definovat, že každý řádek tabulky se odkazuje na jiný řádek jiné tabulky. O tom ale až v dalším článku, který se cizím klíčům věnuje.

Objektové databáze

Dalším typem databáze (který v tomto seriálu nebudu popisovat) jsou databáze objektové. S nástupem objektově orientovaného programování s objevila myšlenka ukládat data v databázi ve formě objektů. Snad někoho neurazím, když si dovolím vyřknout, že objektové databáze se zatím moc nepoužívají a nejsou také příliš podporovány databázovými systémy. Tím ale rozhodně nechci naznačit neužitečnost, či snad zbytečnost objektového přístupu k databázovým záznamům (entitám). Většina dnešních softwarových projektů pracující s databází reprezentuje data formou datových objektů - tedy přístupem objektovým. Dokonce .NET framework nabízí několik postupů jak reprezentovat data z relační databáze objekty – je to Entity Framework a LINQ2SQL.

Techniky, které vytváří datové objekty schopné korespondovat se záznamy v databázi se nazývají object-relation mapping (zkráceně ORM nebo OR mapping) – vytváříme tedy most objektovým přístupem a relační databází. Jinými slovy se snaží udělat z relační databáze z pohledu programátora objektovou databázi.

Objektová databáze sama o sobě je pak pokus jak nabídnout přímý objektový přístup bez nutnosti použití některého z object-relation mapping. Tyto mappery jsou však dnes na takové úrovni, že většina vývojářů nemá potřebu hledat řešení jakým je například právě objektová databáze.

Závěrem

První díl se zaobíral pouze teoretickou částí databázové problematiky. V dalším díle si představíme databázový systém Microsoft SQL Server, se kterým budeme celý tento seriál pracovat.

 

hodnocení článku

4 bodů / 4 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Všechny díly tohoto seriálu

7. Datové typy 29.12.2009
6. Tabulky 27.12.2009
5. Fyzické soubory databáze – datové soubory a transakční log 23.12.2009
4. První kroky s databází 22.12.2009
3. Správa služeb a komponent Microsoft SQL Serveru 16.12.2009
2. Seznámení a instalace Microsoft SQL Serveru 14.12.2009
1. Lehký úvod – teorie databází 12.12.2009

 

Mohlo by vás také zajímat

Začínáme s ASP.NET - díl 4.: Jednoduchá práce s daty v ASP.NET 2.0

V tomto díle se podíváme na propojení ASP.NET stránky s databází a na vytvoření jednoduché tabulky, která zobrazuje data. Ukážeme si také základy úprav vzhledu komponent pomocí kaskádových stylů.

Windows Azure - díl 4.: SQL Database – Nasazení databáze, dostupnost a škálovatelnost

Tento díl seriálu je věnován migraci databáze do Windows Azure a také dostupnosti a škálovatelnosti této služby.

Automatické generování change scriptů

 

 

Nový příspěvek

 

Mr.

1'

csharp|

xml|

css|


'

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

začátečník

Dobrý den,

jsem úplný začátečník. Chtěl bych se začít věnovat databázím. Článek je z roku 2009, tak jen prosím o info, zda je to jedno a vše je stále víceméně aktuální. Předem vám děkuji.

Dan

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Diskuse: Úvod do databází

Zdravím Tomáše Jecha.

Jsem tak smělý a dovoluji si ventilovat tady jeden návrh. Není to nic převratného, ale já osobně nejvíc pochopím nové věci tohoto druhu na praktických příkladech. Zdůrazňuji praktických a ne na nějakých fiktivních z jiného světa. Jde mi o to, že kdyby jste od začátku začal rozpracovávat nějaký jednoduchý příklad od návrhu tabulek po konečný design obrazovky, bylo by to asi nejpřínosnější a myslím, že nejenom pro mne. Já vím, že to hraničí, řekl bych, s "darováním" svého "Know-How" širší veřejnosti a že by jsme si měli na konkrétní řešení přijít sami, leč přesto si myslím, že tahle cesta je velice dobrá. Možná to tak máte v plánu a pak není co řešit.

K napsání toho příspěvku mě vede moje osobní zkušenost, že co se týče základů, tak to bych mohl vyučovat sám, ale pak mi vždycky na tom praktickém příkladu dojde dech a neumím ty základy rozvinout do nějakého smysluplného výsledku(aplikace). Vždycky to nějak nakonec "zbastlím", ale cítím, že to není ono.

Omlouvám se za svůj výlev, nechtěl jsem to tak rozvádět...

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Zdravím,

zcela chápu jak to myslíte. Tím směrem se chci vydat. Vím, že to tak zatím asi nevypadá, ale nemůžu vysvětlovat složitější věci, dokud nenastíním alespoň základ. Výsledná databáze bude návrh jednoduchého internetového obchodu. Hodlám ale pokrýt všechny běžné funkce. Tím myslím, že se nebudu vyhýbat zámkům, izolaci, triggerům atp. To jsou často věci, do kterých si autoři moc nepouští, ale každá normální databáze se bez toho neobejde.

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Nebudu už dále omrzovat, jen děkuji za reakci. Nezbývá než popřát hodně vůle Vám, aby jste do dalších dílů dal co nejvíce své invence a umu a nám ostatním vůli vytrvat a něco se naučit.

p.s. Píle byla vždycky moje slabá stránka, nemáte trochu ? ;-).

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Asi Vás sklamu, teď jí budu potřebovat hodně, omylem jsem si totiž smazal skoro dokončený článek, když jsem přecházel s jedním PC na Visty :(.

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

http://www.chariscreationsgf.com/auto-in... auto insurance quotes >:-O http://www.chariscreationsgf.com/cheap-a... cheap auto insurance 61494 http://www.chariscreationsgf.com/cheap-c... insurance auto auctions %P

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

<a href=http://www.acworth.org/google/buysomaonl...>buy soma online no prescription</a> is soma 350 mg a narcotic - j.e.m.s conference

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Právě něco takové jsem hledal naprostý úvod do problematiky DB. Jen Tak Dál

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Diskuse: Úvod do databází

Nechci být zbytečně servilní, ale dobré činy je třeba také chválit, nejen pranýřovat ty špatné a tak tedy chválím i já. Nezbývá než Tomáše povzbudit do dalších dílů, aby jsme z toho my, vzdělání chtiví lidé, měli co nejvíce "sobeckého" užitku ;-).

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Děkuji Vám oběma. Na dalším článku už pracuji.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Také chválím a už vidím, že je už hotovo dalších 5 dílů. Těším se až to začnu studovatst :-)

Jen tak dál.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Chtěl bych se zeptat, jakou technologii chcete používat k přístupu k datům? Pokud by to byl Linq tak by jste mi udělal velkou radost.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tento seriál se bude věnovat pouze databázím, nikoliv objektovým mapperům.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Každopádně by možná nebylo na škodu napsat článek o tom, jak LINQ2SQL a podobné vylomeniny uvnitř fungují. Je to celkem zajímavá teorie. A nejen teorie. Pro většinu lidí je to jen černá skříňka.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Jednoduche ukazkove priklady ve Vasich clancich a debaty v diskusnich forech me v pochopeni tematu vzdy posunou kupredu mnohem rychleji, nez lusteni slozitych obecnych definic v priruckach. Timto Vam dekuji za vasi praci. Nedockave ocekavam dalsi pokracovani. Bude (funkce, procedury,...)?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Už se k tomu dokopávám delší dobu a teď se do seriálu opět pouštím. Trochu ho předělávám a pracuji na dalších dílech. Funkce a procedury rozhodně budou.

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Diskuse: Úvod do databází

Rad bych se zeptal na jednu vec. Mam nainstalované VS 2005 a VS 2010 betu. Ve start menu mam slozku MS SQL Server 2005, nicmene nemam pristup ke zminovane aplikaci pro pristup k databazi (SQL Server Management Studio Express) a ani jsem nenasel zadny ekvivalent pro plnou verzi SQL Serveru. Ve VS 2010 je vse integrovano primo do prostredi takze muzu databazi editovat v Server explorer (asi to jde i ve starsich verzich podobne), ale jak muzu databazi upravovat bez VS? To by prece melo jit taky. Diky za reakci.

Swap

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Dobrý den,

SQL Server Management Studio je volitelnou komponentou. Pokud není nainstalována, lze jej stáhnout a doinstalovat.

Zadejte do googlu:sql server management studio

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Dekuji. Tohle me nenapadlo:-)

Budou jeste dalsi clanky v serii?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Už o tom delší dobu přemýšlím, rád bych sérii dokončil...

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Diskuse: Úvod do databází

server name : .\SQLEXPRESS

Vypise tuto spravu a nepripoji sa.

Táto verzia systému Microsoft SQL Server Management Studio Express je možné používať iba pre pripojenie k serveru SQL Server 2000 a SQL Serveru 2005 serverov. (Microsoft.SqlServer.Express.ConnectionDlg)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

klikni na tu sipku vedle jmena serveru a pak klikni na <browse for more...>. Mely by se ti tam objevit dalsi servery.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Na tenhle web jsem narazil náhodně, když jsem si potřeboval oprášit nabyté znalosti o asp.net a databázích. Chvály je tu hodně, ale opravdu zaslouženě. Tome, fakt supr ... na tomhle webu člověk najde v podstatě všechno co může potřebovat nejen do začátků.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Zdravím, nic originálního na úvod neřeknu, ale váš článek je opravdu super. Právě dělám diplomku a informace se mi velice hodí, bohužel by jich mohlo být více a v CSharp (myslím jiné témata):). Ted k dotazu, potřebuju vytvořit spojovací tabulku pomocí dvou x_ID a y_ID. Jakým způsobem mám provést spojení těchto dvou sloupců se sloupci v jednotlivých tabulkách? V knížkách je vytvořte kopii prim. klíče - blá blá. Je to pomocí foreign key a jak se na to jde ve MSSQL 2005 (přes relationship)?? Moc díky za informace.

Pavel

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Takový članek se nečte, ale přímo HLTÁ:)

Přátelé a co takhle zapracovat ne nějaké publikaci. Materiálu na webu máte dost a dost!!!

Voráč

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Těším se na další článek.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Se SQL Serverem zacinam a nasel jsem zde presne to co jsem hledal.

Mam ale jeden dotaz. Lze nejak zadat kde se ma ulozit databaze kterou vytvorim. Standardne se vse uklada do adresare Data v adresarove strukture nainstalovaneho SQL Serveru. Ja bych vsak chtel svoji databazi kterou si vytvorim ulozit na uplne jine misto, napriklad na C:\Database

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Jde to. Při vytváření databáze jde zvolit, kam soubory umístit. Prohlídněte si ten dialog.

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Jo uz jsem si toho vsiml, prehlidl jsem to.

Diky moc.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Úvod do databází

Třetí pochvala, i když s SQL2005 pracuji celkem běžně, je článek zajímavý a začátečníka nasměruje na podstatné věci.

Na SQL2005 mě osobně trápí jedna odlišnost oproti SQL2000 a to při otevírání existujících sql souboru se tento soubor otevře do nového SQLquery a né do aktuálního okna

v sql2000 TO JE CTRL + Shift + P, ale v SQL2005 to nemá ekvivalent ?

Pokud např. upgraduji db 10skripty, tak se mi otevře 10 nových oken a stává se to nepřehledné.

Přeji hodně sil v další tvorbě "manuálu"

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Diskuse: Úvod do databází

Rád bych pochválil výborný článek. Je krásně srozumitelný a i já, jako naprostý laik, jsem se v něm orientoval.

Jen tak dál :)

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback