ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
Diplomov´a pr´ace
Klient pro spr´ avu datab´ az´ı MySQL Zbynˇek Munzar
Vedouc´ı pr´ace: Ing. Michal Valenta, Ph.D.
Studijn´ı program: Elektrotechnika a informatika strukturovan´ y magistersk´ y Obor: Informatika a v´ ypoˇcetn´ı technika leden 2008
ii
Podˇ ekov´ an´ı Dˇekuji sv´ ym rodiˇc˚ um, kteˇr´ı mi umoˇznili studia a sv´e ˇzenˇe, kter´a mi pomohla a pom´ah´a na cestˇe k dokonˇcen´ı studi´ı. D´ ale dˇekuji koˇciˇcce Micce za jm´eno pro aplikaci a sv´emu roˇcn´ımu synovi, ˇze sp´ı pˇres den alespoˇ n dvˇe hodiny, kdy se mohu vˇenovat ˇskoln´ı pr´aci. iii
iv
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´ avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona c. 121/2000 Sb., o pr´ avu autorsk´em, o pr´ avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akonu (autorsk´ y z´ akon).
V Praze dne 18.1.2008
.............................................................
v
vi
Abstrakt C´ılem diplomov´e pr´ ace je vyvinout rychl´ y a efektivn´ı n´astroj pro spr´avu MySQL datab´ aze. Hlavn´ım u ´ˇcelem aplikace je zaplnit trhlinu v dostupnosti kvalitn´ıho freewarov´eho datab´azov´eho klienta pro pr´ aci s daty. Pˇri vytv´ aˇren´ı programu je kladen d˚ uraz na intuitivn´ı a praktick´e uˇzivatelsk´e rozhran´ı, rychlost operac´ı a podporu r˚ uzn´ ych znakov´ ych sad. Dalˇs´ım d˚ uleˇzit´ ym krit´eriem je snadn´ a rozˇsiˇritelnost o nov´e funkce a moˇznosti souvisej´ıc´ı s neust´al´ ym v´ yvojem MySQL. Tato pr´ ace zachycuje koncepci programu a jeho okamˇzit´ y stav, kter´ y je vˇsak potˇreba nad´ ale a neust´ale vyv´ıjet.
Abstract The aim of the dissertation is to develop fast and effective tool for the MySQL database administration. The main object of the application is to fill a gap in the field of the availability of quality freeware client for processing the data. The program was created with the stress on intuitive and practical user interface, the rate of operations and the support of different character sets. Another important criterion is the possibility of easy enhancement by new functions and options connected with continuous development of MySQL. The work captures the philosophy of the program and its present state, but there is a necessity of its further and continuous development.
vii
viii
Obsah Seznam obr´ azku
xi
Seznam tabulek
xiii
´ 1 Uvod 1.1 C´ıle diplomov´e pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Struktura pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
2 MySQL 2.1 Specifikace . . . . . . . . . 2.2 Vlastnosti . . . . . . . . . 2.3 Architektura ukl´ ad´ an´ı dat 2.4 Z´ısk´ an´ı . . . . . . . . . . . 2.5 Instalace . . . . . . . . . . 2.6 Jin´e datab´ azov´e syst´emy .
. . . . . .
2 2 2 3 4 5 6
3 Spr´ ava datab´ aze 3.1 Administr´ ator . . . 3.2 Datov´ y specialista 3.3 V´ yvoj´ aˇr . . . . . . 3.4 N´ astroje . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
7 7 8 9 9
4 Pˇ rehled dostupn´ ych n´ astroj˚ u 4.1 Webov´e . . . . . . . . . . . . . . . . . . . 4.1.1 phpMyAdmin . . . . . . . . . . . . 4.1.2 phpMinAdmin . . . . . . . . . . . 4.2 Zdarma . . . . . . . . . . . . . . . . . . . 4.2.1 HeidiSQL . . . . . . . . . . . . . . 4.2.2 MySQL GUI Tools by MySQL AB 4.3 Komerˇcn´ı . . . . . . . . . . . . . . . . . . 4.3.1 SQL-Front . . . . . . . . . . . . . 4.3.2 EMS SQL Manager for MySQL . . 4.3.3 Navicat . . . . . . . . . . . . . . . 4.4 Micka . . . . . . . . . . . . . . . . . . . . 4.5 Shrnut´ı pouˇzitelnosti n´ astroj˚ u . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
10 10 10 11 11 12 12 13 13 14 15 15 17
5 Implementace 5.1 Motivace . . . . . . . . . . . . . . . . . . . 5.2 V´ yvojov´e prostˇred´ı a programovac´ı jazyk . 5.3 Popis implementace . . . . . . . . . . . . 5.3.1 Architektura . . . . . . . . . . . . 5.3.2 Uˇzivatelsk´e rozhran´ı . . . . . . . . 5.4 Omezen´ı . . . . . . . . . . . . . . . . . . . 5.5 Rozˇsiˇrov´ an´ı . . . . . . . . . . . . . . . . . 5.5.1 Dalˇs´ı datab´ azov´e syst´emy . . . . . 5.5.2 Nov´e funkce . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
19 19 19 20 20 21 22 22 22 24
6 Testov´ an´ı 6.1 Nasazen´ı v praxi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25 25
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
ix
. . . .
6.2
SourceForge.net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
7 Z´ avˇ er 7.1 Vyhodnocen´ı pouˇzitelnosti navrˇzen´e aplikace . . . . . . . . . . . . . . . . . . . 7.2 N´amˇety pro dalˇs´ı pr´ aci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Moˇznosti rozvoje prostˇred´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 27 27 27
8 Seznam literatury
29
A Instalaˇ cn´ı a uˇ zivatelsk´ a pˇ r´ıruˇ cka A.1 Vlastnosti Micky . . . . . . . . . . . . . . . . . . A.2 Distribuce . . . . . . . . . . . . . . . . . . . . . . A.3 Instalace . . . . . . . . . . . . . . . . . . . . . . . A.3.1 Syst´emov´e poˇzadavky . . . . . . . . . . . A.3.2 Postup instalace . . . . . . . . . . . . . . A.4 Pˇripojen´ı k MySQL serveru . . . . . . . . . . . . A.4.1 Pˇripojen´ı a odpojen´ı . . . . . . . . . . . . A.4.2 Nastaven´ı pˇripojen´ı . . . . . . . . . . . . A.4.3 Nastaven´ı znakov´e sady . . . . . . . . . . A.4.4 Zobrazen´ı objekt˚ u datab´ aze . . . . . . . . A.4.5 SQL log a stavov´ y ˇr´ adek . . . . . . . . . . A.4.6 Pamˇeˇt posledn´ı relace . . . . . . . . . . . A.5 Pr´ace s datab´ az´ı . . . . . . . . . . . . . . . . . . A.6 Pr´ace s tabulkou . . . . . . . . . . . . . . . . . . A.6.1 Struktura a vlastnosti tabulky . . . . . . A.6.1.1 Vytvoˇren´ı nov´e tabulky . . . . . ´ A.6.1.2 Uprava struktury tabulky . . . . ´ A.6.1.3 Uprava tabulky . . . . . . . . . A.6.2 Data . . . . . . . . . . . . . . . . . . . . . A.6.2.1 Editace hodnot . . . . . . . . . . A.6.2.2 Oznaˇcov´ an´ı a kop´ırov´an´ı hodnot A.6.2.3 Operace s ˇr´ adky . . . . . . . . . A.6.2.4 Zobrazen´ı . . . . . . . . . . . . . A.6.2.5 Navigace . . . . . . . . . . . . . A.7 Export a import . . . . . . . . . . . . . . . . . . A.7.0.6 Export . . . . . . . . . . . . . . A.7.0.7 Import . . . . . . . . . . . . . . A.8 SQL okno . . . . . . . . . . . . . . . . . . . . . . A.9 Okno proces˚ u . . . . . . . . . . . . . . . . . . . . A.10 Nastaven´ı . . . . . . . . . . . . . . . . . . . . . . A.11 Aktualizace . . . . . . . . . . . . . . . . . . . . . A.12 Seznam kl´ avesov´ ych zkratek . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31 31 31 31 31 32 32 32 32 33 33 34 34 35 35 35 36 36 38 38 38 38 39 39 40 40 40 42 42 43 43 43 43
B Deklarace objektu TSenMySQL
45
C Obsah pˇ riloˇ zen´ eho CD
47
x
Seznam obr´ azk˚ u 2.1
Architektura MySQL[11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3.1 3.2
Datov´ y model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datab´ aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 9
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8
phpMyAdmin n´ ahled . . . . . . phpMinAdmin n´ ahled . . . . . HeidiSQL n´ ahled . . . . . . . . MySQL GUI Tools n´ ahled . . . SQL-Front n´ ahled . . . . . . . EMS SQL Manager for MySQL Navicat n´ ahled . . . . . . . . . Micka n´ ahled . . . . . . . . . .
5.1 5.2 5.3 5.4 5.5
Delphi . . . . . . . . . . . Vrstvy komunikace . . . . GUI - Hlavn´ı okno . . . . GUI - SQL okno . . . . . Rozˇs´ıˇren´ı na dalˇs´ı syst´emy
6.1 6.2
. . . . . . . . . . . . . . . . . . . . n´ahled . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
11 12 13 14 15 16 16 17
. . . . . . . . . . . . . . . . . . . . . . . . . . . . komunikace
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
20 21 22 23 23
Webov´ y formul´ aˇr pro hl´ aˇsen´ı chyb . . . . . . . . . . . . . . . . . . . . . . . . . Micka na SourceForge.net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25 26
A.1 Obsah distribuce . . . . . . . . . . . . . . . A.2 Volba pˇripojen´ı . . . . . . . . . . . . . . . . A.3 Dialog pˇripojen´ı . . . . . . . . . . . . . . . A.4 Micka po pˇripojen´ı a oznaˇcen´ı datab´aze . . A.5 SQL log a stavov´ y ˇr´ adek . . . . . . . . . . . A.6 Dialog pro vytvoˇren´ı nebo u ´pravu datab´aze A.7 Kontextov´e menu stromu objekt˚ u. . . . . . A.8 Dialog pro vytvoˇren´ı nov´e tabulky . . . . . A.9 Struktura tabulky . . . . . . . . . . . . . . ´ A.10 Uprava tabulky . . . . . . . . . . . . . . . . A.11 Nastaven´ı limit˚ u a filtr . . . . . . . . . . . . A.12 Menu sloupeˇcku . . . . . . . . . . . . . . . . A.13 Dialog pro export . . . . . . . . . . . . . . . A.14 SQL okno . . . . . . . . . . . . . . . . . . . A.15 Okno proces˚ u . . . . . . . . . . . . . . . . .
xi
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
31 32 32 33 34 35 36 36 37 38 39 40 41 42 43
xii
Seznam tabulek 2.1
Standardnˇe podporovan´e operaˇcn´ı syst´emy a platformy pro MySQL 5.1[13] . .
5
4.1
Srovn´ an´ı n´ astroj˚ u, hodnocen´ı 1 aˇz 5 (1 - v´ ybornˇe, 5 - nedostateˇcnˇe) . . . . . .
17
xiii
xiv
´ KAPITOLA 1. UVOD
1
´ 1 Uvod Poˇc´ıtaˇce dnes slouˇz´ı k mnoha u ´ˇcel˚ um, ale jeden z nejd˚ uleˇzitˇejˇs´ıch a tak´e nejˇcastˇejˇs´ıch je uchov´av´an´ı a zpracov´ an´ı dat. D´ıky poˇc´ıtaˇcov´ ym s´ıt´ım a zejm´ena Internetu se mohou informace, tedy data, t´emˇeˇr okamˇzitˇe ˇs´ıˇrit po cel´em svˇetˇe. ˇ ım v´ıce dat, t´ım vˇetˇs´ı potˇreba m´ıt je nˇekde pˇrehlednˇe a bezpeˇcnˇe uloˇzen´a a kdykoli se k nim C´ moci dostat. Lid´e chtˇej´ı m´ıt pˇr´ıstup k dat˚ um odkudkoli na svˇetˇe, chtˇej´ı rychle vyhled´avat, chtˇej´ı m´ıt opravdu velk´e mnoˇzstv´ı dat a pˇritom se o nˇe nemuset pˇr´ıliˇs starat. Na z´akladˇe tˇechto poˇzadavk˚ u vznik´ a datab´ azov´ y syst´em. Tato pr´ ace se t´ yk´ a datab´ azov´eho syst´emu MySQL, ale nen´ı prim´arnˇe o MySQL. Pˇredmˇetem z´ajmu je klient, kter´ y se k datab´ azov´emu syst´emu pˇripojuje. Jeho prostˇrednictv´ım se d´a spravovat cel´a datab´ aze vˇcetnˇe dat.
1.1
C´ıle diplomov´ e pr´ ace
C´ılem t´eto diplomov´e pr´ ace je navrhnout a implementovat kvalitn´ıho a funkˇcn´ıho klienta pro spr´avu datab´ az´ı MySQL. Na trhu nen´ı ˇsirok´ y v´ ybˇer z takov´ ychto n´astroj˚ u, kter´e by byly dostupn´e zdarma. N´ astroj bude obsahovat vˇsechny bˇeˇzn´e funkce pro spr´avu relaˇcn´ı datab´ aze1 . Vznikne desktopov´ a aplikace jako forma tlust´eho klienta. Probˇehne tak´e diskuse nad v´ ybˇerem implementaˇcn´ı platformy. Aplikace se zamˇeˇr´ı pˇredevˇs´ım na uˇzivatelskou pˇr´ıvˇetivost a na efektivn´ı pr´aci s daty a na rychlou navigaci ve vˇetˇs´ıch datab´az´ıch i tabulk´ach. Samozˇrejmˇe s podporou dostupn´ ych znakov´ ych sad pro texty. Aplikaci autor pojmenuje Micka na poˇcest jeho koˇciˇcky.
1.2
Struktura pr´ ace
Datab´ azov´ y syst´ em Pr´ ace se bude vˇenovat nejdˇr´ıve struˇcn´emu popisu datab´azov´eho syst´emu MySQL z pohledu v´ yvoj´ aˇre datab´ azov´e aplikace, to znamen´a c´ılov´e skupiny Micky, kapitola 2. Spr´ ava datab´ aze D´ ale se pod´ıv´ame na spr´avu datab´aze, kdo a proˇc pracuje s datab´ az´ı, kapitola 3. N´ astroje N´ asleduje pˇrehled n´ astroj˚ u pro pr´aci s MySQL, jejich popis, shrnut´ı funkˇcnosti a srovn´an´ı. Na z´ avˇer kapitoly 4 je doporuˇcen´ı, kter´ y n´astroj je pro koho vhodn´ y. Implementace Tˇeˇziˇstˇem pr´ ace je implementace. Kapitola 5 popisuje pr´avˇe implementaci, d´ale v´ yvojov´e prostˇred´ı, architekturu a uˇzivatelsk´e rozhran´ı. Souˇc´ast´ı je u ´vaha nad omezen´ımi a dalˇs´ım smˇeˇrov´ an´ım. Testov´ an´ı Testov´ an´ı realizovan´e aplikace najdete v kapitole 6. Z´ avˇ er
Shrnut´ı v´ ysledk˚ u diplomov´e pr´ace je v z´avˇeru, kapitola 7.
Pˇ r´ılohy Na konci jsou pˇr´ılohy. Nejzaj´ımavˇejˇs´ı je pˇr´ıloha A, instalaˇcn´ı a uˇzivatelsk´a pˇr´ıruˇcka, kter´a poskytuje vyˇcerp´ avaj´ıc´ı popis cel´e Micky z pohledu uˇzivatele.
1
Term´ın datab´ aze je v tomto textu pouˇz´ıv´ an ve dvou smyslech. Za prv´e jako zkr´ acen´ y v´ yraz pro datab´ azov´ y syst´em a za druh´e pro oznaˇcen´ı konkr´etn´ı datab´ aze, jako objektu s tabulkami. Konkr´etn´ı v´ yznam je zˇrejm´ y z kontextu.
2
KAPITOLA 2. MYSQL
2 MySQL MySQL je datab´ azov´ y syst´em vyv´ıjen´ y ˇsv´edskou firmou MySQL AB. Zaˇcal vznikat v osmdes´at´ ych letech minul´eho stolet´ı a na jeho poˇc´atku st´ali tˇri tv˚ urci David Axmark, Allan Larsson a Michael ”Monty” Widenius. Tak jako u mnoha podobn´ ych projekt˚ u byla hlavn´ı motivac´ı vzniku potˇreba kvalitn´ıho a pouˇziteln´eho syst´emu, kter´ y nebyl k dispozici, nebo byl k dispozici jen jako komerˇcn´ı za nepˇrijatelnou cenu. MySQL je zdokonalen´ım p˚ uvodn´ıho syst´emu mSQL, za pouˇzit´ı p˚ uvodn´ıho API1 . Jm´eno MySQL je po dceˇri jednoho ze zakladatel˚ u, My. ˇ Zaj´ımav´ y je syst´em dvoj´ıho licencov´ an´ı. Je k dispozici bud zdarma vˇcetnˇe zdrojov´ ych k´od˚ u pod licenc´ı GPL[3] nebo pod komerˇcn´ı licenc´ı, kter´a m´a v cenˇe n´astroje pro monitorov´an´ı, optimalizaci a samozˇrejmˇe plnou technickou podporu vˇcetnˇe aktualizac´ı. MySQL je multiplatformn´ı datab´ aze, kterou lze nainstalovat na mnoha r˚ uzn´ ych operaˇcn´ıch syst´emech (Linux, MS Windows, BSD, ...). D´ıky tomu a tak´e d´ıky voln´emu ˇs´ıˇren´ı m´a dnes tento datab´azov´ y syst´em znaˇcn´ y pod´ıl na trhu. Kombinace MySQL, PHP2 a Apache3 je velmi obl´ıben´a pˇri nasazov´ an´ı na webov´e servery.
2.1
Specifikace
MySQL je zaloˇzeno na relaˇcn´ım modelu datab´aze. Data jsou uspoˇr´ad´ana do jednotliv´ ych tabulek (relac´ı) a nad nimi jsou definovan´e pˇr´ıpustn´e operace. Tabulky maj´ı jednotliv´e sloupeˇcky (pole, vlastnosti) a ˇr´ adky. Kaˇzd´ y ˇr´ adek pˇredstavuje jeden z´aznam, napˇr´ıklad v tabulce z´akazn´ık˚ u je jeden ˇr´ adek jeden z´ akazn´ık. Z´aznamy jsou identifikov´any zpravidla takzvan´ ym kl´ıˇcem. M˚ uˇze to b´ yt speci´ aln´ı sloupeˇcek id nebo jak´ ykoli jin´ y sloupeˇcek nebo kombinace nˇekolika sloupeˇck˚ u. Vˇetˇsinou je ˇz´ adouc´ı, aby kaˇzd´ y z´aznam byl jedineˇcnˇe identifikovateln´ y. Abychom mohli z´ aznamy pˇrid´ avat, upravovat, prohl´ıˇzet a mazat, pˇrid´avat tabulky a dˇelat vˇsechny ostatn´ı operace nad datab´ az´ı, potˇrebujeme komunikovat. MySQL pro komunikaci mezi klientem a datab´ azov´ ym serverem pouˇz´ıv´a, jak s´am n´azev napov´ıd´a, jazyk SQL (Structured Query Language). SQL je standardizovan´ y jazyk pro pˇr´ıstup do datab´aze a je definov´an ANSI/ISO SQL normou. SQL standard byl vyvinut v roce 1986 a od t´e doby vyˇslo nˇekolik verz´ı: SQL-92, SQL:1999 a aktu´ aln´ı verze SQL:2003. MySQL v dneˇsn´ı dobˇe pouˇz´ıv´a upravenou verzi SQL:2003.
2.2
Vlastnosti
Od zaˇc´atku je MySQL optimalizov´ ano pˇredevˇs´ım na rychlost. Um´ı rychle a spolehlivˇe pracovat i s rozs´ahl´ ymi objemy dat. Aˇz doned´ avna mu vˇsak chybˇely nˇekter´e pomˇernˇe podstatn´e vlastnosti, napˇr´ıklad vnoˇren´e dotazy, pohledy, triggery nebo uloˇzen´e procedury. Ty byly dodˇel´any aˇz v posledn´ıch letech pˇredevˇs´ım pod tlakem tv˚ urc˚ u webov´ ych aplikac´ı, kdy s nar˚ ustaj´ıc´ı sloˇzitost´ı a rozsahem nar˚ ustaj´ı i poˇzadavky na pouˇzit´e n´astroje. Jeˇstˇe dnes se d´a pomˇernˇe ˇcasto narazit na MySQL 3.2 nebo 4.0, kter´e um´ı v podstatˇe jen u ´plnˇe nejz´akladnˇejˇs´ı vˇeci typu select a create table a jeho z´asadn´ım nedostatkem je naprosto nevyˇreˇsen´a pr´ace s r˚ uzn´ ymi znakov´ ymi sadami. Migrace na verzi alespoˇ n 4.1, je tedy pomˇernˇe n´aroˇcn´a a pro textov´a data s h´aˇcky a ˇc´arkami i nebezpeˇcn´a. Nejd˚ uleˇzitˇejˇs´ı podporovan´e vlastnosti: 1
API (Application Programming Interface), rozhran´ı pro programov´ an´ı aplikac´ı. Je to sb´ırka funkc´ı nebo tˇr´ıd, kter´e m˚ uˇze pouˇz´ıvat program´ ator pˇri pouˇzit´ı dan´e knihovny. 2 Definice PHP k kapitole 4.1.1 na stranˇe 10 3 Apache HTTP Server je softwarov´ y webov´ y server s otevˇren´ ym k´ odem pro Linux, BSD, MS Windows a dalˇs´ı platformy. V souˇcasn´e dobˇe dod´ av´ a prohl´ıˇzeˇc˚ um na cel´em svˇetˇe vˇetˇsinu internetov´ ych str´ anek.[17]
KAPITOLA 2. MYSQL
3
• ciz´ı kl´ıˇce (od verze 3.23 podporov´any v tabulk´ach typu InnoDB (druh uloˇziˇstˇe, viz d´ ale)) • transakce (od verze 3.23 podporov´any v tabulk´ach typu InnoDB) • podpora r˚ uzn´ ych znakov´ ych sad a ˇcasov´ ych p´asem v datech (od verze 4.1) • vnoˇren´e dotazy (od verze 4.1) • uloˇzen´e procedury (od verze 5.0) • triggery (od verze 5.0) • pohledy (od verze 5.0)
2.3
Architektura ukl´ ad´ an´ı dat
MySQL nab´ız´ı nˇekolik zp˚ usob˚ u ukl´ ad´an´ı datab´azov´ ych tabulek (storage engine, uloˇziˇstˇe). Pˇri vytv´aˇren´ı tabulky se d´ a zp˚ usob volitelnˇe zadat. Pokud se nezad´a, pouˇzije se implicitnˇe uloˇziˇstˇe MyISAM. CREATE TABLE test(i INT, c CHAR(10)) ENGINE = BLACKHOLE; R˚ uzn´a uloˇziˇstˇe se liˇs´ı u ´ˇcelem pouˇzit´ı, t´ım co podporuj´ı a um´ı, a zp˚ usobem samotn´eho ukl´ad´ an´ı tabulek. Pˇrehled uloˇziˇsˇt: • MyISAM - nejpouˇz´ıvanˇejˇs´ı, implicitn´ı, bez podpory transakc´ı. Kaˇzd´a tabulka se ukl´ ad´ a na disk do tˇr´ı soubor˚ u (from´ at tabulky, samotn´a data, index). • InnoDB - podporuje transakce, vˇsechny tabulky se ukl´adaj´ı do jednoho souboru. Um´ı efektivnˇe pracovat s velk´ ymi objemy dat, ale z hlediska v´ ykonnosti se nedoporuˇcuje m´ıt na stejn´em disku jin´ y datab´ azov´ y stroj. • Falcon - podporuje transakce, navrˇzen speci´alnˇe pro 32 nebo 64 bitov´e syst´emy s velkou pamˇet´ı a pro v´ıcej´ adrov´e procesory nebo v´ıcevl´aknov´e prostˇred´ı. (od verze 6.0) • MERGE - jedn´ a se v podstatˇe o kolekce identick´ ych MyISAM tabulek. Identick´e znamen´ a, ˇze mus´ı m´ıt stejn´e sloupeˇcky a indexy. Slouˇcen´e tabulky nemus´ı b´ yt ve stejn´e datab´ azi. MERGE tabulky podporuj´ı operace SELECT, DELETE, UPDATE, a INSERT. Pro takovou tabulku se ukl´ad´a soubor s definic´ı a soubor se seznamem slouˇcen´ ych tabulek. • MEMORY (HEAP) - data se ukl´adaj´ı pouze do operaˇcn´ı pamˇeti, jen definice tabulek se ukl´ ad´ a na disk. Pˇri ukonˇcen´ı serveru se data ztrat´ı. Je vhodn´ y pro extr´emnˇe rychl´e doˇcasn´e tabulky tak´e d´ıky hashovan´ ym index˚ um. • FEDERATED - umoˇzn ˇuje lok´alnˇe zpˇr´ıstupnit data ze vzd´alen´e MySQL datab´aze bez replikace. Dotazy na lok´ aln´ım serveru budou automaticky spouˇstˇeny na vzd´alen´ ych tabˇ adn´ ulk´ ach. Z´ a data nejsou ukl´ad´ana lok´alnˇe. • ARCHIVE - komprimovan´e tabulky, bez podpory index˚ u • CSV - ukl´ ad´ an´ı dat v prost´ ych textov´ ych souborech • NBDCLUSTER - uloˇziˇstˇe pro clusterovan´e datab´aze. (od verze 5.0)
4
KAPITOLA 2. MYSQL
Obr´ azek 2.1: Architektura MySQL[11] • BLACKHOLE - uloˇziˇstˇe, kde se d´ a vytvoˇrit tabulka, d´a se do n´ı vkl´adat, ale nic se neuloˇz´ı. Dotaz vˇzdy vr´ at´ı pr´ azdn´ y v´ ysledek. Podrobn´e specifikace jsou uvedeny pˇr´ımo v manu´alu k MySQL[11]. Podrobn´ y seznam uloˇziˇsˇt vˇcetnˇe kr´atk´eho popisu a podpory v dan´e distribuci se z´ısk´a dotazem SHOW ENGINES;
2.4
Z´ısk´ an´ı
Kompletn´ı instalaci MySQL serveru lze st´ ahnout pˇr´ımo z webov´ ych str´anek vˇenovan´ ych MySQL na adrese
. Open source varianta pod licenc´ı GPL[3] se jmenuje MySQL Community Server. K dispozici je vˇzdy nˇekolik posledn´ıch verz´ı, v dobˇe psan´ı t´eto pr´ace jsou ke staˇzen´ı verze 4.1, 5.0, 5.1, 6.0. Pˇri volbˇe verze je tˇreba vˇzdy myslet na to, kter´ ym klientem a kterou aplikac´ı se budeme k serveru pˇripojovat. Pokud m´ame napˇr´ıklad webovou aplikaci a pouˇz´ıv´ ame v n´ı pohledy, potˇrebujeme verzi 5.0 a novˇejˇs´ı, protoˇze starˇs´ı verze je nepodporuj´ı. Vˇetˇsina syntaxe je zpˇetnˇe kompatibiln´ı, ale pˇresto se v nov´e verzi obˇcas nˇejak´ y dotaz pˇrestane pouˇz´ıvat a i na to je potˇreba pˇri instalaci nov´e verze myslet. Naˇstˇest´ı m´a MySQL velice preciznˇe napsanou dokumentaci ke kaˇzd´e nov´e verzi a vˇzdy je zde uveden seznam zmˇen a zpˇetnˇe nepodporovan´ ych konstrukc´ı vˇcetnˇe pˇr´ıpadn´ ych alternativ. Dokumentace je dostupn´a v nˇekolika form´ atech ke staˇzen´ı i online verze na
. U kaˇzd´e verze jsou dostupn´e varianty pro r˚ uzn´e operaˇcn´ı syst´emy a platformy. Tabulka 2.1 uk´azuje pˇrehled standardnˇe podporovan´ ych operaˇcn´ıch syst´em˚ u a platforem pro MySQL verzi 5.1, kter´a je dnes nejpouˇzitelnˇejˇs´ı pro novˇe instalovan´ y server. Dostupn´ y je tak´e samotn´ y zdrojov´ y k´ od. MySQL je naps´ano v jazyce C a C++, takˇze jej lze teoreticky zkompilovat i pro jakoukoli jinou platformu, kter´a m´a vhodn´ y pˇrekladaˇc. Pˇr´ıpadnˇe si i kaˇzd´ y m˚ uˇze upravit k´ od podle vlastn´ıch potˇreb a zkompilovat pr´avˇe pro sebe. Napˇr´ıklad firma Google pouˇz´ıv´ a pro sv´e aplikace upravenou MySQL datab´azi.
KAPITOLA 2. MYSQL
5
Windows Windows x64 Linux (non RPM packages) Linux (non RPM, Intel C/C++ compiled, glibc-2.3) Red Hat Enterprise Linux 3 RPM (x86) Red Hat Enterprise Linux 3 RPM (Intel IA64) Red Hat Enterprise Linux 4 RPM (x86) Red Hat Enterprise Linux 4 RPM (AMD64 / Intel EM64T) Red Hat Enterprise Linux 4 RPM (Intel IA64) Red Hat Enterprise Linux 5 RPM (x86) Red Hat Enterprise Linux 5 RPM (AMD64 / Intel EM64T) SuSE Linux Enterprise Server 9 RPM (AMD64 / Intel EM64T) SuSE Linux Enterprise Server 9 RPM (Intel IA64) SuSE Linux Enterprise Server 10 RPM (x86) SuSE Linux Enterprise Server 10 RPM (AMD64 / Intel EM64T) Linux x86 generic RPM (dynamically linked) Linux AMD64 / Intel EM64T generic RPM Linux Intel IA64 generic RPM Solaris (pkgadd packages) Solaris (TAR packages) FreeBSD (TAR packages) Mac OS X (TAR packages) HP-UX (depot packages) HP-UX (TAR packages) IBM AIX Novell NetWare Tabulka 2.1: Standardnˇe podporovan´e operaˇcn´ı syst´emy a platformy pro MySQL 5.1[13]
2.5
Instalace
Protoˇze se cel´ a tato pr´ ace zab´ yv´ a implementac´ı datab´azov´eho klienta v syst´emu MS Windows, bude zde jen struˇcnˇe pops´ ana instalace pr´avˇe v tomto operaˇcn´ım syst´emu. Zvl´aˇstˇe pro v´ yukov´e u ´ˇcely a pro testov´ an´ı. Na re´ aln´em serveru bˇeˇz´ıc´ım na jak´emkoli operaˇcn´ım syst´emu by se instalaci mˇel vˇenovat zkuˇsen´ y administr´ator. Popis instalace [6] St´ahnˇete si patˇriˇcnou verzi instal´atoru (viz diskuse v´ yˇse) a spusˇtte ji. Zvolte uˇzivatelskou instalaci. Po instalaci se spust´ı MySQL konfigur´ator. Zvolte si zde konfiguraci pro v´ yvoj´aˇrskou stanici, v´ ychoz´ı znakovou sadu UTF8 a nastavte nˇejak´e heslo pro uˇzivatele root. Pokud v´ am konfigur´ ator MySQL instance nahl´as´ı chybu v pr´avech, ukonˇcete jej a spusˇtte ruˇcnˇe znovu MySQLInstanceConfig.exe. Napodruh´e to vˇzdy funguje, napoprv´e to nˇekdy hl´ as´ı chyby. Pokud jiˇz m´ ate starˇs´ı MySQL server nainstalovan´ y, nejprve jej zastavte, odinstalujte starou verzi, n´aslednˇe smaˇzte soubory z mysql\data\ (jen soubory v tomto adres´aˇri, ne podadres´ aˇre, ˇ to jsou vlastn´ı datab´ aze) a provedte instalaci dle popisu v´ yˇse. Potˇrebujete-li MySQL datab´ azi pro provozov´an´ı vlastn´ıho lok´aln´ıho webov´eho serveru pro v´ yvoj webov´ ych str´ anek v PHP, coˇz je nejˇcastˇejˇs´ı d˚ uvod instalace na vlastn´ı osobn´ı poˇc´ıtaˇc, lze si uˇsetˇrit spoustu pr´ ace s instalac´ı a konfigurac´ı cel´e kombinace Apache, PHP
6
KAPITOLA 2. MYSQL
a MySQL pouˇzit´ım kompletn´ıho instalaˇcn´ıho bal´ıˇcku. Existuje napˇr´ıklad projekt VertrigoServ
, kter´ y obsahuje kompletn´ı instalaci Apache, PHP, MySQL, SQLite, PhpMyAdmin, ZendOptimizer a SQLiteManager.
2.6
Jin´ e datab´ azov´ e syst´ emy
Existuje i mnoho jin´ ych datab´ azov´ ych syst´em˚ u neˇz MySQL. Jak komerˇcn´ıch tak dostupn´ ych zdarma. Z komerˇcn´ıch jsou nejzn´ amˇejˇs´ı Oracle Database
a MS SQL od Microsoftu. Obˇe velk´e spoleˇcnosti nab´ızej´ı volnˇe ke staˇzen´ı takzvanou express verzi, kterou je moˇzno nainstalovat a provozovat zcela zdarma, ovˇsem ne ke komerˇcn´ım u ´ˇcel˚ um. Je to takov´a ochutn´avka toho nejlepˇs´ıho, co ve svˇetˇe datab´az´ı existuje. Z open source datab´ azov´ ych syst´em˚ u je nejzn´amˇejˇs´ı a nejpouˇz´ıvanˇejˇs´ı pr´avˇe MySQL. Dalˇs´ı, podle mnoha n´ azor˚ u vyspˇelejˇs´ı, je PostgreSQL , kter´ y se pomalu ale jistˇe v obl´ıbenosti dotahuje na MySQL. Velice zaj´ımav´ y je open source datab´ azov´ y syst´em SQLite[17] , Na rozd´ıl od datab´ az´ı zaloˇzen´ ych na principu klient-server (vˇsechny ostatn´ı zde zm´ınˇen´e), kde je datab´azov´ y server spuˇstˇen jako samostatn´ y proces, je SQLite pouze mal´a knihovna, kter´a se pˇrilinkuje k aplikaci a pomoc´ı jednoduch´eho rozhran´ı ji lze vyuˇz´ıvat. Podrobnˇejˇs´ı popis nebo rozs´ ahlejˇs´ı pˇrehled by byl jistˇe zaj´ımav´ y, ale pˇresahuje r´amec tohoto dokumentu. Pro z´ısk´ an´ı v´ıce informac´ı je moˇzn´e navˇst´ıvit uveden´e internetov´e str´anky projekt˚ u nebo ˇcl´anky zab´ yvaj´ıc´ı se datab´ azemi na Wikipedii .
´ ´ KAPITOLA 3. SPRAVA DATABAZE
7
3 Spr´ ava datab´ aze Tato kapitola pojedn´ av´ a, kdo a proˇc potˇrebuje spravovat datab´azi. Je pojat´a z pohledu uˇzivatele a i kdyˇz pro pˇrehlednost zjednoduˇsen´a, mˇela by pravdivˇe odr´aˇzet situaci, kter´a dnes panuje zejm´ena ve firemn´ı sf´eˇre.
3.1
Administr´ ator
Administr´ ator pˇristupuje k datab´ azi, respektive datab´azov´emu syst´emu na t´e nejniˇzˇs´ı u ´rovni. Zab´ yv´a se pˇredevˇs´ım p´eˇc´ı o programov´e vybaven´ı, o samotn´ y MySQL server. Star´a se o pˇr´ıstup k serveru ze strany jeho uˇzivatel˚ u. Z´akladn´ı povinnosti administr´ atora by ˇsly shrnout do nˇekolika bod˚ u[1]: Spouˇ stˇ et, vyp´ınat a restartovat server Administr´ator mus´ı m´ıt pˇr´ıstup k souborov´emu syst´emu, mus´ı vˇedˇet jak server spustit, jak zaˇr´ıdit aby startoval spolu s operaˇcn´ım syst´emem. Kdyˇz server nenabˇehne nebo hl´ as´ı chyby, jak odhalit z´avadu, opravit j´ı a dokonˇcit spuˇstˇen´ı. Spr´ ava uˇ zivatelsk´ ych u ´ˇ ct˚ u Jak u ´ˇcty upravovat a pˇrid´avat. Administr´ator by mˇel m´ıt pˇrehled a starat se, kdo, do kter´e datab´aze a odkud se pˇripojuje. Hl´ıdat bezpeˇcnost datab´ aze, aby kaˇzd´ y vidˇel jen tam, kam vidˇet m´a. Mˇel by tak´e umˇet poradit nov´ ym uˇzivatel˚ um, jak spr´avnˇe nastavit klienta pro bezchybn´e pˇripojen´ı do spr´avn´e datab´aze. Mus´ı umˇet obnovit zapomenut´e heslo. Odstraˇ novat takzvan´e mrtv´e u ´ˇcty, kter´e uˇz nikdo nepouˇz´ıv´a. ´ zba protokol˚ Udrˇ u (log˚ u) Je dobr´e vˇedˇet, kter´e informace jsou uˇziteˇcn´e a kter´e jen zab´ıraj´ı m´ısto. Jak dlouho je udrˇzovat, jak´ y m´ıt cyklus rotace log˚ u. Z´ alohov´ an´ı a kop´ırov´ an´ı datab´ az´ı Z´alohov´an´ı je ˇzivotnˇe d˚ uleˇzit´a operace. V pˇr´ıpadˇe hav´arie serveru nebo chybn´e manipulace s daty ze strany uˇzivatele, je tˇreba m´ıt moˇznost obnovit data s co moˇzn´ a nejmenˇs´ımi ztr´ atami. Zpravidla se dˇelaj´ı denn´ı z´alohy a pak speci´aln´ı z´alohy pˇred potenci´ alnˇe nebezpeˇcn´ ymi operacemi na serveru, jako je napˇr´ıklad pˇreinstalace komponent nebo cel´eho serveru. Ze z´ alohy by mˇel b´ yt administr´ator schopen obnovit jak celou datab´ azi tak i jen ˇc´ ast jedn´e tabulky. Podobn´ a operace je kop´ırov´ an´ı datab´aze. Tu by mˇel administr´ator zvl´adnout napˇr´ıklad pˇri spouˇstˇen´ı nov´eho v´ ykonnˇejˇs´ıho serveru. Datab´ azov´ e repliky Z´ aloha nebo kopie datab´aze je jej´ı obraz v dan´ y okamˇzik. Dalˇs´ı moˇznost´ı jsou repliky. Znamen´ a to pˇripravit dva servery, kter´e spolupracuj´ı tak, ˇze zmˇeny v datab´az´ıch, kter´e spravuje jeden server, se kontinu´alnˇe prom´ıtaj´ı do odpov´ıdaj´ıc´ıch datab´ az´ı, kter´e spravuje druh´ y server. Konfigurace a ladˇ en´ı serveru Uˇzivatele maj´ı urˇcit´e poˇzadavky, jak by se mˇel server chovat. Nemus´ı to b´ yt jen v´ ykon, ale tˇreba podporovan´e znakov´e sady nebo nastaven´ı nˇekter´ ych promˇenn´ ych prostˇred´ı. Administr´ ator mus´ı umˇet konfigurovat jak´ekoli nastaven´ı a vyladit potˇreby uˇzivatel˚ u, v´ ykon a bezpeˇcnost. Pr´ ace s nˇ ekolika servery M˚ uˇze nastat potˇreba provozovat nˇekolik server˚ u souˇcasnˇe s r˚ uznou verz´ı MySQL nebo r˚ uzn´ ym nastaven´ım zabezpeˇcen´ı, i to by mˇel administr´ator zvl´adnout.
´ ´ KAPITOLA 3. SPRAVA DATABAZE
8
Obr´ azek 3.1: Datov´ y model Aktualizace softwaru MySQL Nov´ a vyd´an´ı MySQL vych´azej´ı pomˇernˇe ˇcasto a administr´ator mus´ı umˇet zv´ aˇzit, kdy je vhodn´e aktualizovat a tˇeˇzit z opraven´ ych chyb a nov´ ych moˇznost´ı a kdy je lepˇs´ı ponechat p˚ uvodn´ı stabiln´ı a vyzkouˇsenou verzi.
3.2
Datov´ y specialista
Datov´ y specialista je ˇclovˇek, kter´ y sed´ı v datov´em oddˇelen´ı. O data se star´a, v´ı, kter´a jsou zbyteˇcn´a a jen zab´ıraj´ı m´ısto, ty um´ı zahodit. Kter´a data jsou urˇcena k archivaci a um´ı je vyp´alit na CD. Pˇredevˇs´ım vˇsak mus´ı umˇet poskytnout data, zpravidla velice konkr´etn´ı v´ ybˇer dat, marketingov´emu oddˇelen´ı nebo ˇrediteli. Struktura tabulek Pro datov´eho specialistu je d˚ uleˇzit´a struktura tabulek, jak´e m´a tabulka sloupeˇcky, jak a pˇres kter´ y kl´ıˇc souvis´ı s jinou tabulkou. Jak´ y m´a kter´ y sloupeˇcek v´ yznam a kter´ y je to datov´ y typ. Jen tak se m˚ uˇze efektivnˇe orientovat i v rozs´ahl´ ych datab´az´ıch. Mus´ı se vyznat v takov´ ych sch´ematech, jako je napˇr´ıklad vidˇet na obr´azku 3.1. ˇ Anal´ yza Casto je potˇreba urˇcit´ y soubor dat analyzovat, zjistit kolik procent tohoto a kolik onoho. Kolik lid´ı odpovˇedˇelo v anketˇe. Poˇslete mi pr˚ umˇer klik˚ u na reklamu za posledn´ı t´ yden. Zkr´atka dataˇr mus´ı umˇet sestavit takov´ y dotaz datab´azi, kter´ y rychle a jednoduˇse zjist´ı, co potˇrebuje. V´ ybˇ er dat Datov´ y specialista mus´ı m´ıt mocn´ y n´astroj na zobrazen´ı tabulek a jeˇstˇe mocnˇejˇs´ı schopnosti, aby mohl vybrat z tabulek to, co je zaj´ımav´e. Mus´ı dokonale ovl´adat SQL jazyk pˇri sestavov´an´ı join˚ u1 a MySQL funkce pro porovn´av´an´ı. Form´ at v´ ystupu Po v´ ybˇeru spr´ avn´eho souboru informac´ı, se tak´e mus´ı pˇredat v poˇzadovan´em form´atu. Mˇel by zvl´ adnout exportovat data do vˇsech moˇzn´ ych form´at˚ u. Nˇekdo po nˇem bude cht´ıt Excel, nˇekdo XML a kdosi dokonce PDF form´at. 1
Join, SQL v´ yraz pro spojov´ an´ı v´ıce tabulek, m´ a mnoho variant a d´ a se r˚ uznˇe pouˇz´ıvat a kombinovat[11].
´ ´ KAPITOLA 3. SPRAVA DATABAZE
9
Obr´azek 3.2: Datab´aze Mus´ı umˇet data i pˇrij´ımat v r˚ uzn´ ych form´ach.
3.3
V´ yvoj´ aˇ r
V´ yvoj´aˇrem je zde myˇslen program´ator, kter´ y pˇri v´ yvoji produkt˚ u pˇrijde na r˚ uzn´e u ´rovni do styku s datab´ az´ı. M˚ uˇze to b´ yt tv˚ urce nebo spr´avce internetov´ ych str´anek, kter´ y se dnes jiˇz bez znalosti datab´ az´ı neobejde. Nebo v´ yvoj´aˇr firemn´ı aplikace, kter´a na intranetu komunikuje pˇres datab´ azi. V dneˇsn´ı dobˇe maj´ı datab´aze a data kl´ıˇcov´ y v´ yznam nejen ve svˇetˇe poˇc´ıtaˇc˚ u. V´ yvoj´aˇr je vˇetˇsinou tak trochu administr´ator i tak trochu dataˇr a jeˇstˇe nˇeco nav´ıc. Je to univerz´aln´ı uˇzivatel datab´ aze. Mˇel by si umˇet nainstalovat a alespoˇ n na z´akladn´ı u ´rovni spravovat MySQL server u sebe na stanici, aby mohl testovat, na ˇcem pr´avˇe pracuje. Mus´ı si prohl´ıˇzet nebo pˇr´ımo vytv´aˇret strukturu tabulek a datab´aze. Mus´ı umˇet pracovat s daty v tabulk´ ach. Prohl´ıˇzet, vkl´ adat, exportovat, vyb´ırat, importovat, z´alohovat. Nav´ıc ˇcasto pracuje se samotn´ ym API MySQL. Pouˇz´ıv´a r˚ uzn´a rozhran´ı r˚ uzn´ ych jazyk˚ u pro komunikaci se serverem. Obˇcas je nucen si s´am napsat tˇr´ıdu pro zpracov´an´ı v´ ystupu nebo vstupu z MySQL. Zkr´ atka potˇrebuje komplexn´ı pohled i znalosti datab´azov´ ych syst´em˚ u. Bohuˇzel dost ˇcasto, obzvl´ aˇsˇt ve webov´ ych aplikac´ıch, vznikaj´ı d´ıla, kter´a sp´ıˇs zatˇeˇzuj´ı server, s´ıˇt a zkuˇsenˇejˇs´ıho kolegu, neˇz ˇze by nˇeco efektivn´ıho prov´adˇela. A je to zpravidla d˚ usledkem neznalosti z´ akladn´ıch princip˚ u datab´azov´ ych syst´em˚ u a absence komplexn´ıho pohledu na vˇec.
3.4
N´ astroje
´ Nab´ıdka dostupn´ ych n´ astroj˚ u na spr´avu datab´aze je uvedena v n´asleduj´ıc´ı kapitole 4. Uvaha nad vhodnost´ı jednotliv´ ych n´ astroj˚ u a doporuˇcen´ı pouˇzitelnosti pro uveden´e skupiny uˇzivatel˚ u je v kapitole 4.5 na stranˇe 17.
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
10
4 Pˇ rehled dostupn´ ych n´ astroj˚ u Standardn´ı instalace MySQL serveru obsahuje textovou konzoli, kam lze zad´avat dotazy a do konzole se textovˇe vyp´ıˇse v´ ysledek dotazu. Nejvˇetˇs´ı v´ yhodou tohoto n´astroje je jeho pˇr´ım´a dostupnost v kaˇzd´e instalaci serveru. Nen´ı tˇreba jej sh´anˇet, stahovat a samostatnˇe instalovat. Ale moˇznosti konzole jako spr´ avce datab´ aze jsou velmi omezen´e. Pro zad´av´an´ı jednoduch´ ych dotaz˚ u, pokud uˇzivatel dobˇre zn´ a syntaxi jazyka, nebo pro pˇr´ıpad nejvˇetˇs´ı nouze je pouˇziteln´a. Ovˇsem pro spr´ avu vˇetˇs´ıho mnoˇzstv´ı tabulek, sloˇzitˇejˇs´ı struktury nebo prohl´ıˇzen´ı a editaci dat je naprosto nevhodn´ a. Pro tyto u ´ˇcely existuje mnoho vhodnˇejˇs´ıch produkt˚ u. Tato pr´ace se zab´ yv´ a implementac´ı desktopov´e aplikace v prostˇred´ı 32 bitov´eho Microsoft Windows, takˇze srovn´ an´ı dostupn´ ych konkurent˚ u se aˇz na nˇekolik v´ yjimek zamˇeˇr´ı takt´eˇz na desktopov´e ˇreˇsen´ı. MS Windows je drtivˇe nejpouˇz´ıvanˇejˇs´ı operaˇcn´ı syst´em a tomu odpov´ıd´a i dostupnost n´ astroj˚ u, kter´ a je nepomˇernˇe lepˇs´ı nˇeˇz napˇr´ıklad pro Linux. V dneˇsn´ı dobˇe se rozv´ıj´ı trend multiplatformnosti, nicm´enˇe jedin´ y z´astupce napsan´ y v Javˇe, kter´ y by mˇel b´ yt teoreticky spustiteln´ y na libovoln´e platformˇe s nainstalovan´ ym JRE1 , se nepodaˇrilo zprovoznit ´ ani na nˇekolika r˚ uzn´ ych poˇc´ıtaˇc´ıch. Uplnˇ e jinou skupinu tvoˇr´ı webov´e aplikace, kter´e jsou nez´avisl´e na klientsk´em operaˇcn´ım syst´emu. Zd´anlivˇe do t´eto diplomov´e pr´ace nepatˇr´ı, ale jejich vyuˇzitelnost je natolik vysok´ a, ˇze dva nejzaj´ımavˇejˇs´ı z´astupci zde budou zm´ınˇeni.
4.1
Webov´ e
Prvn´ı zaj´ımav´a skupina jsou webov´e aplikace. Bˇeˇz´ı na serveru, ˇcasto na stejn´em jako samotn´a datab´aze, a ovl´ adaj´ı se odkudkoli ze svˇeta pomoc´ı okna webov´eho prohl´ıˇzeˇce. Tento pˇr´ıstup m´a sv´e velk´e v´ yhody, ale tak´e nˇekter´e nev´ yhody. Zm´ınˇeny zde budou dva rozd´ıln´e, velmi zaj´ımav´e projekty, oba dostupn´e zdarma. 4.1.1
phpMyAdmin
phpMyAdmin ( , verze 2.10.1) je robustn´ı webov´a aplikace napsan´a v jazyce PHP2 a vyuˇz´ıv´ a vˇsech modern´ıch dostupn´ ych technologi´ı. Jak typ napov´ıd´a, ovl´ad´a se pomoc´ı okna internetov´eho prohl´ıˇzeˇce. Na v´ yvoji tohoto n´astroje se pod´ıl´ı pomˇernˇe velk´a skupina lid´ı z cel´eho svˇeta a pouˇz´ıv´a ji vˇetˇsina uˇzivatel˚ u MySQL. A pr´avˇe proto pruˇznˇe zachycuje nov´e vlastnosti kaˇzd´e vydan´e verze MySQL a pˇrizp˚ usobuje se poˇzadavk˚ um uˇzivatel˚ u. D´a se dokonce ˇr´ıci, ˇze je to takov´ y etalon funkˇcnosti MySQL klienta. V´ ybornˇe se hod´ı ke spr´avˇe struktury datab´ aze. T´emˇeˇr kaˇzd´ y webhosting nab´ızej´ıc´ı MySQL datab´azi jej d´av´a k dispozici ke vzd´alen´e spr´ avˇe. Jedin´e z´ asadn´ı nev´ yhody pramen´ı z jeho povahy webov´e aplikace. Pro pr´aci s obsahy tabulek, vyhled´ av´ an´ı, filtrov´ an´ı, sestavov´an´ı sloˇzitˇejˇs´ıch dotaz˚ u je z principu v´ yraznˇe m´enˇe efektivn´ı a pohodln´ y neˇz desktopov´a aplikace. Na druhou stranu tˇeˇz´ı nˇekter´e dobr´e vlastnosti z toho, ˇze zpravidla bˇeˇz´ı na stejn´em stroji nebo alespoˇ n na stejn´e lok´aln´ı s´ıti jako samotn´ y datab´ azov´ y stroj. D´ıky tomu nem´a konkurenci napˇr´ıklad v rychlosti importu dat, kdy konkurenty zdrˇzuje pos´ıl´ an´ı mnoha dotaz˚ u za sebou ke vzd´alen´emu poˇc´ıtaˇci. • + Kvalitn´ı n´ astroj zadarmo • + Pravideln´ y v´ yvoj 1 Java Runtime Environment, tak´e JRE, nebo J2RE je software vytvoˇren´ y firmou Sun Microsystems, kter´ y umoˇzn´ı operaˇcn´ımu syst´emu spouˇstˇet Java aplikace, v´ıce viz [16]. 2 PHP (rekurzivn´ı zkratka PHP: Hypertext Preprocessor, p˚ uvodnˇe Personal Home Page) je skriptovac´ı programovac´ı jazyk, urˇcen´ y pˇredevˇs´ım pro programov´ an´ı dynamick´ ych internetov´ ych str´ anek. Nejˇcastˇeji se zaˇcleˇ nuje pˇr´ımo do struktury jazyka HTML, XHTML ˇci WML, coˇz je velmi v´ yhodn´e pro tvorbu webov´ ych aplikac´ı. PHP lze ovˇsem tak´e pouˇz´ıt i k tvorbˇe konzolov´ ych a desktopov´ ych aplikac´ı.[17]
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
11
Obr´ azek 4.1: phpMyAdmin n´ahled 4.1.2
phpMinAdmin
phpMinAdmin ( , verze 1.4.0) je minimalistick´a webov´a aplikace ˇcesk´ ych autor˚ u tvoˇren´a pr´avˇe jedn´ım php skriptem. Nen´ı tak propracovan´a jako phpMyAdmin, ale jej´ı kouzlo spoˇc´ıv´a v tom, ˇze pokud m´ame FTP3 pˇr´ıstup na vzd´alen´ y server, vzd´alenou datab´ azi, kter´ a m´ a zak´ azan´ y pˇr´ıstup z venku a chceme s n´ı cokoli udˇelat, staˇc´ı nakop´ırovat jedin´ y soubor a m˚ uˇzeme svou datab´azi spravovat. Je to extr´emnˇe jednoduch´e a elegantn´ı ˇreˇsen´ı v situaci, do kter´e se kaˇzd´ y webmaster4 ˇcas od ˇcasu dostane. Zaj´ımav´ y je zp˚ usob exportu, kdy ukl´ ad´ a nˇekolik ˇr´adk˚ u do jednoho dotazu insert, t´ım se minimalizuje jednak velikost exportovan´eho textov´eho souboru, ale pˇredevˇs´ım poˇcet dotaz˚ u pˇri n´asleduj´ıc´ım importu. Tato aplikace trochu pˇrekvapivˇe um´ı velmi pˇr´ıjemnˇe pracovat i s uloˇzen´ ymi procedurami, triggery a pohledy. Pˇres svou nen´ apadnost je velice pouˇziteln´a. Slabou str´ankou je u ´prava a prohl´ıˇzen´ı dat, ale to logicky vypl´ yv´a z podstaty webov´e aplikace. • + Cel´ a aplikace v jednom souboru • – M´enˇe funkc´ı
4.2
Zdarma
Dalˇs´ı skupinou jsou desktopov´e n´ astroje pro spr´avu datab´aze MySQL. V t´eto kapitole budou zm´ınˇeny ty, kter´e jsou dostupn´e zdarma. Kaˇzd´ y si je m˚ uˇze st´ahnout z Internetu a bez jak´ehokoli ˇ omezen´ı pouˇz´ıvat. Casto jsou k nim dostupn´e i zdrojov´e k´ody. Grafick´e rozvrˇzen´ı je u vˇsech n´ asleduj´ıc´ıch program˚ u, vˇcetnˇe komerˇcn´ıch, podobn´e. Po lev´e stranˇe je strom, kde uzly tvoˇr´ı datab´aze a jejich potomky objekty datab´az´ı, pˇredevˇs´ım tabulky, u vyspˇelejˇs´ıch n´ astroj˚ u tak´e pohledy, triggery nebo uloˇzen´e procedury. V hlavn´ım 3
FTP (File Transfer Protocol) je protokol urˇcen´ y pro pˇrenos soubor˚ u mezi poˇc´ıtaˇci na TCP/IP s´ıti, na kter´ ych mohou bˇeˇzet libovoln´e rozd´ıln´e operaˇcn´ı syst´emy. 4 V t´eto pr´ aci rozum´ıme webmasterem spr´ avce internetov´ ych str´ anek (webu), zpravidla program´ ator ovl´ adaj´ıc´ı nˇejak´ y skriptovac´ı jazyk, znaˇckovac´ı jazyk form´ atov´ an´ı webov´ ych str´ anek a alespoˇ n povrchnˇe datab´ aze. Dnes pomˇernˇe ˇcast´ a a ˇza ´dan´ a profese.
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
12
Obr´ azek 4.2: phpMinAdmin n´ahled prav´em oknˇe se pak zobrazuj´ı podrobn´ a data souvisej´ıc´ı s objektem ve stromˇe. V pˇr´ıpadˇe tabulky napˇr´ıklad jej´ı struktura a v dalˇs´ı z´aloˇzce data. Kaˇzd´ y klient d´ale obsahuje textov´e okno, kam lze zkop´ırovat nebo pˇr´ımo napsat libovoln´ y SQL dotaz a rovnou vid´ıme v´ ysledek. Mezi standardn´ı funkce patˇr´ı editace struktury datab´aze a tabulky, pr´ace s daty a export a import dat. R˚ uzn´e n´ astroje pak maj´ı dalˇs´ı mnoˇzstv´ı funkc´ı viz d´ale. V´ yhodou je SQL log, kam se vypisuj´ı vˇsechny dotazy, jimiˇz aplikace komunikuje s datab´azov´ ym strojem. 4.2.1
HeidiSQL
HeidiSQL ( , verze 3.2) je desktopov´ y klient. Jedn´a se o projekt, kter´ y vyv´ıj´ı nˇekolik nadˇsenc˚ u a d´ av´ a jej volnˇe k dispozici vˇcetnˇe zdrojov´ ych k´od˚ u. Obsahuje vˇsechny zm´ınˇen´e standardn´ı funkce. Za zm´ınku urˇcitˇe stoj´ı funkce synchronizace tabulek mezi datab´azemi. Nab´ız´ı mnoho moˇznost´ı, pokud potˇrebujeme nˇejak´ y exotiˇctˇejˇs´ı export do SQL. Lze volit verzi v´ ystupn´ıho jazyka a podrobnˇe formu exportu dat, jako insert, update nebo replace. Na druhou stranu je v´ ysledn´ y export zbyteˇcnˇe robustn´ı a nepodporuje v´ıce ˇr´adk˚ u tabulky do jednoho dotazu. Pˇrestoˇze se jedn´a jiˇz o tˇret´ı stabiln´ı verzi, nˇekter´e funkce nejsou u ´plnˇe dotaˇzen´e tak, aby ˇslo program kaˇzdodennˇe pohodlnˇe pouˇz´ıvat k pr´aci, zejm´ena pokud jde o prohl´ıˇzen´ı a editaci dat v tabulk´ ach. Pro obˇcasnou u ´pravu v datab´azi nebo pravideln´e z´alohov´an´ı dat se vzhledem ke sv´e jednoduchosti a dostupnosti hod´ı v´ ybornˇe. • + Jednoduch´ y, ale pouˇziteln´ y program zdarma • – Nˇekter´e nedotaˇzen´e detaily 4.2.2
MySQL GUI Tools by MySQL AB
Sada n´astroj˚ u MySQL GUI Tools ( ) pro MySQL 5.0 vydan´a pˇr´ımo tv˚ urcem datab´ aze MySQL AB. Slouˇz´ı prim´arnˇe ke spr´avˇe, z´alohov´an´ı a monitorov´an´ı uˇzivatel˚ u, datab´ az´ı, tabulek, pohled˚ u nebo uloˇzen´ ych procedur, nikoli vˇsak k pr´aci se samotn´ ymi daty. Je to precizn´ı n´ astroj nezbytn´ y pro syst´emov´eho spr´avce, ovˇsem nepouˇziteln´ y ˇ napˇr´ıklad pro datov´e oddˇelen´ı. Je dod´ avan´ y vˇzdy k dan´e verzi MySQL, to znamen´a bud pod GPL[3] nebo komerˇcn´ı licenc´ı. • + Profesion´ aln´ı program pro syst´emovou spr´avu cel´e datab´aze
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
13
Obr´azek 4.3: HeidiSQL n´ahled • – Nevhodn´ y pro pr´ aci s daty Existuje samozˇrejmˇe mnoho dalˇs´ıch n´astroj˚ u dostupn´ ych zdarma, ale ty jsou zpravidla prakticky nepouˇziteln´e. Nereflektuj´ı v´ yvoj MySQL, nelze je nainstalovat nebo obsahuj´ı pˇr´ıliˇs mnoho chyb.
4.3
Komerˇ cn´ı
Nab´ıdek komerˇcn´ıch aplikac´ı pro pr´aci s MySQL datab´azemi pro syst´em Windows je mnoho. Zde jsou vybran´e tˇri, kter´e jsou velmi pouˇz´ıvan´e, kvalitn´ı a jsou dostupn´e k vyzkouˇsen´ı ve sv´e pln´e funkˇcnosti. 4.3.1
SQL-Front
SQL-Front ( , verze 4.0) lze povaˇzovat do znaˇcn´e m´ıry za vzor freewarov´ ych koleg˚ u. Aplikace je pomˇernˇe jednoduch´a s velice intuitivn´ım ovl´ad´an´ım, obsahuje vˇsechny potˇrebn´e funkce pro kvalitn´ı spr´avu struktury i dat. Nem´a ˇz´adn´e zvl´aˇstn´ı funkce nav´ıc, ale ty pro bˇeˇznou pr´ aci ani nejsou tˇreba. Cena je pˇr´ızniv´ ych 35 e, to znamen´a asi 1000 Kˇc za jednu licenci vˇcetnˇe vˇsech budouc´ıch aktualizac´ı. Pro v´ıce licenc´ı se cena sniˇzuje. Ide´ aln´ı volba pro firmu, kter´ a potˇrebuje pracovat s datab´azemi na stˇredn´ı u ´rovni. Velice ned´ avno vyˇsla ˇctvrt´ a verze, kter´ a pˇrej´ım´ a vˇsechny pˇr´ıjemn´e vlastnosti pˇredchoz´ı vyladˇen´e verze a nav´ıc um´ı pracovat s triggery, uloˇzen´ ymi procedurami a pohledy, i kdyˇz zat´ım ne pˇr´ıliˇs pohodlnˇe. Jako nev´ yhoda se m˚ uˇze v urˇcit´ ych situac´ıch jevit naˇc´ıt´an´ı cel´e struktury datab´aze a tabulek pˇri pˇripojov´ an´ı k serveru. Pokud m´ame vzd´alen´e pˇripojen´ı s mnoha datab´azemi a s mnoha tabulkami, doba ˇcek´ an´ı je nepˇr´ıjemnˇe dlouh´a. Ve vˇetˇsinˇe pˇr´ıpad˚ u to vˇsak nen´ı probl´em. Velice efektivn´ı vlastnost je moˇznost pˇr´ımo z kontextov´eho menu datab´aze nebo tabulky otevˇr´ıt nov´e okno nebo z´ aloˇzku. Zvl´ aˇsˇt syst´em z´ aloˇzek, na kter´ y jsou uˇzivatel´e zvykl´ı napˇr´ıklad z modern´ıch webov´ ych prohl´ıˇzeˇc˚ u, zlepˇsuje pr´ aci s v´ıce tabulkami najednou. Obvykle je to ˇreˇseno m´enˇe pˇrehledn´ ymi dalˇs´ımi okny nebo podokny. Za zm´ınku jeˇstˇe stoj´ı SQL log, kam se vypisuj´ı
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
14
Obr´ azek 4.4: MySQL GUI Tools n´ahled vˇsechny dotazy, kter´ ymi aplikace komunikuje. Uˇzivatel tak m´a pˇrehled, co se pˇresnˇe dˇeje. Jen pro zaj´ımavost je tak´e v ˇceˇstinˇe. • + Jednoduch´e a intuitivn´ı ovl´ ad´ an´ı • + N´ızk´a cena ˇ adn´e speci´ • – Z´ aln´ı funkce, pro bˇeˇznou pr´aci ale naprosto dostaˇcuj´ıc´ı
4.3.2
EMS SQL Manager for MySQL
EMS SQL Manager for MySQL ( , verze 2007) je opravdu ˇspiˇckov´ y n´ astroj pro pr´aci s MySQL datab´azemi, um´ı toho jednoznaˇcnˇe nejv´ıce ze vˇsech zmiˇ novan´ ych n´ astroj˚ u. Reflektuje vˇsechny nov´e moˇznosti kaˇzd´e nov´e verze MySQL, takˇze m´ a propracovanou podporu uloˇzen´ ych procedur, trigger˚ u, pohled˚ u. Nab´ız´ı nepˇrebern´e moˇznosti zobrazen´ı a editace struktury i dat, exporty, pr˚ uvodce pro filtrov´an´ı, synchronizaci, vyspˇel´ y SQL editor a mnoho dalˇs´ıho, podrobn´a specifikace je na webu produktu. Nem´a SQL log, coˇz je urˇcitˇe ˇskoda. Um´ı toho tolik, ˇze se st´av´a pro neˇskolen´eho uˇzivatele velice nepˇrehledn´ ym. Kdo ho chce pouˇz´ıvat, mus´ı urˇcitˇe vˇenovat mnoho ˇcasu zauˇcen´ı a experimentov´an´ı. Nicm´enˇe kdo to mysl´ı opravdu v´ aˇznˇe s MySQL datab´az´ı, je to ide´aln´ı n´astroj. Bohuˇzel rozsahu odpov´ıd´ a i cena. Jedna licence s podporou na rok za nejlevnˇejˇs´ı a nejjednoduˇsˇs´ı business variantu stoj´ı 175 $, to je pˇres 3000 Kˇc a kompletn´ı studio s podporou na 3 roky uˇz stoj´ı 655 $. Zvl´aˇstn´ı funkce, kter´ a je pomˇernˇe jedineˇcn´a a stoj´ı za podrobnˇejˇs´ı zm´ınku, je takzvan´ y tunneling. Vˇsechny uveden´e deskotopov´e aplikace pˇristupuj´ı k serveru pˇr´ımo. Nˇekter´e servery vˇsak maj´ı pˇr´ıstup z venku kv˚ uli bezpeˇcnosti zak´azan´ y, a tedy i tyto n´astroje jsou pro vzd´alenou administraci nepouˇziteln´e. EMS SQL Manager obsahuje variantu pˇripojen´ı tunnelingem, kdy nepouˇz´ıv´a pˇr´ım´e pˇripojen´ı, ale administr´ ator nakop´ıruje speci´aln´ı php nebo asp skript na server, a program pak komunikuje pˇres port 80 a http protokol, kter´e jsou t´emˇeˇr vˇzdy povolen´e.
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
15
Obr´ azek 4.5: SQL-Front n´ahled Samozˇrejmˇe je tento zp˚ usob v´ yraznˇe pomalejˇs´ı a pro nˇekter´e operace se nehod´ı, ale v nouzi je dobˇre pouˇziteln´ y. • + Velk´e mnoˇzstv´ı funkc´ı • + Tunneling • – Nepˇrehlednost
4.3.3
Navicat
Navicat ( , verze 8.0.22) je dalˇs´ı v´ yborn´ y klient s mnoha funkcemi. Um´ı v podstatˇe tot´eˇz co EMS SQL Manager vˇcetnˇe tunnelingu. Liˇs´ı se pˇredevˇs´ım v zobrazov´an´ı. V prav´e ˇc´ asti m´ a strom objekt˚ u a v lev´e pouze aktu´aln´ı podrobnosti. Pro editaci dat nebo struktury si vyl´ıhne nov´e okno se z´aloˇzkami a specifick´ ymi menu. Tento zp˚ usob se zd´a pˇrehlednˇejˇs´ı neˇz u EMS, ale vˇse je ot´azkou zvyku uˇzivatele. Tak´e neobsahuje SQL log. Tento n´astroj je v z´ asadˇe srovnateln´ y s EMS, ˇcemuˇz odpov´ıd´a i cena komerˇcn´ı licence 170 $. Dostupn´ y je nejen pro MS Windows, ale i pro Linux, Solaris a Mac OS X. • + Velk´e mnoˇzstv´ı funkc´ı, tunneling • + Pˇrehledn´e ovl´ ad´ an´ı
4.4
Micka
Samotn´a Micka je zde zm´ınˇen´ a pouze pro pˇr´ım´e srovn´an´ı. Oproti v´ yˇse zm´ınˇen´ ym lepˇs´ım komerˇcn´ım produkt˚ um je funkˇcnˇe podstatnˇe chudˇs´ı, ale pro bˇeˇznou pr´aci zejm´ena s daty je naprosto rovnocenn´ a, stejnˇe jako v doladˇen´ı detail˚ u a propracovanosti ovl´ad´an´ı. Pˇri pˇripojen´ı a navigaci je d´ıky u ´sporn´e komunikaci rychlejˇs´ı. Podrobn´ y popis bude uveden v n´asleduj´ıc´ıch kapitol´ach.
16
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
Obr´ azek 4.6: EMS SQL Manager for MySQL n´ahled
Obr´ azek 4.7: Navicat n´ahled
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
17
Obr´azek 4.8: Micka n´ahled • + Rychlost • + Propracovan´e ovl´ ad´ an´ı • – Absence vyspˇelejˇs´ıch funkc´ı
4.5
Shrnut´ı pouˇ zitelnosti n´ astroj˚ u
N´asleduj´ıc´ı tabulka subjektivnˇe hodnot´ı jednotliv´e n´astroje podle r˚ uzn´ ych krit´eri´ı. Kaˇzd´e krit´erium je hodnoceno zn´ amkou 1 aˇz 5 jako ve ˇskole, to znamen´a, 1 je nejlepˇs´ı, 5 nejhorˇs´ı. Dostupnost vyjadˇruje v z´ asadˇe cenu produktu. Vˇsechny produkty se daj´ı v urˇcit´e verzi st´ahnout z Internetu, nˇekter´e zcela zdarma (zn´amka 1), nˇekter´e chtˇej´ı po 30 dnech nemal´ y obnos penˇez (zn´amka 3). Platformy vystihuj´ı, pro jak´e r˚ uzn´e operaˇcn´ı syst´emy je dan´ y n´astroj dostupn´ y. Jedniˇcku dostaly jen webov´e aplikace, kter´e mohou bˇeˇzet vˇsude tam, kde je webov´ y prohl´ıˇzeˇc, dvojka je za nˇekolik urˇcit´ ych operaˇcn´ıch syst´em˚ u a trojka za jedin´ y podporovan´ y OS. N´ astroj phpMyAdmin phpMinAdmin HeidiSQL GUI Tools SQL-Front EMS Navicat Micka
Dostupnost 1 1 1 1 2 3 3 1
Funkˇ cnost 2 3 3 2 2 1 1 3
Pˇ rehlednost 1 1 1 1 1 3 1 1
Platformy 1 1 3 1 3 3 2 3
Tlust´ y klient NE NE ANO ANO ANO ANO ANO ANO
Tabulka 4.1: Srovn´ an´ı n´ astroj˚ u, hodnocen´ı 1 aˇz 5 (1 - v´ ybornˇe, 5 - nedostateˇcnˇe) Pˇri v´ ybˇeru aplikace, kterou bude pouˇz´ıvat moˇzn´a nˇekolik n´asleduj´ıc´ıch let, by si mˇel potenci´aln´ı uˇzivatel pˇredevˇs´ım uvˇedomit, k ˇcemu ji bude potˇrebovat a kolik penˇez je za ni ochoten
ˇ ´ ´ ˚ KAPITOLA 4. PREHLED DOSTUPNYCH NASTROJ U
18
utratit nebo kolik penˇez je ochotna d´ at jeho firma za kolik licenc´ı. ˇ se na nˇe pod´ıvejme V kapitole 3 na stranˇe 7 jsou definov´ any tˇri z´akladn´ı typy uˇzivatel˚ u. Ted z pohledu n´astroj˚ u, kter´e by nejl´epe vyuˇzili. Administr´ ator potˇrebuje pˇr´ım´ y a neomezen´ y pˇr´ıstup k datab´azov´emu serveru, potˇrebuje spravovat uˇzivatele a jejich pr´ ava, potˇrebuje z´alohovat, pˇr´ıpadnˇe obnovovat ze z´alohy. Mus´ı m´ıt pˇr´ıstup k logu, ke konfiguraci MySQL k proces˚ um, kter´e se syst´emem komunikuj´ı. Mus´ı m´ıt pr´ava k restartov´ an´ı serveru. Obˇcas m˚ uˇze potˇrebovat vytvoˇrit, nebo naopak odstranit jednotlivou datab´ azi. Zpravidla nepotˇrebuje pracovat se samotn´ ymi daty nebo strukturou tabulek. Maxim´ alnˇe si nˇejakou tabulku prohl´ednout. K takov´ ym u ´ˇcel˚ um se asi nejl´epe hod´ı pˇr´ımo program MySQL GUI Tools od tv˚ urce datab´azov´eho syst´emu firmy MySQL AB. Vˇsechny v´ yˇse zm´ınˇen´e operace zvl´ adne bezpeˇcnˇe a pˇrehlednˇe. Dokonce lze ˇr´ıci, ˇze je pˇr´ımo pro administr´atory vyvinut. V placen´e verzi um´ı i vyspˇel´e monitorov´an´ı a optimalizaci datab´aze. Dalˇs´ı n´astroje, kter´e by mohl administr´ ator pouˇz´ıt, jsou EMS a Navicat. Ty toho sice um´ı zbyteˇcnˇe moc, coˇz m˚ uˇze b´ yt i potenci´ alnˇe nebezpeˇcn´e, ale splˇ nuj´ı vˇsechny poˇzadavky. Zde je vˇsak velice aktu´ aln´ı hledisko financov´ an´ı. Dataˇ r tak´e uv´ıt´ a sp´ıˇse desktopovou aplikaci neˇz webovou. Moc ho nezaj´ım´a datab´azov´ y server jako takov´ y, ale pˇredevˇs´ım struktura datab´az´ı, tabulek a samotn´a data. Potˇrebuje dˇelat n´aroˇcn´e a sloˇzit´e operace nad daty. V´ ybˇery z v´ıce tabulek, filtrov´an´ı, exporty, importy. ˇ Casto ruˇcnˇe p´ıˇse sekvence dlouh´ ych dotaz˚ u. Potˇrebuje pˇrehledn´ y, efektivn´ı n´astroj, kter´ y um´ı perfektnˇe pracovat s daty a m´ a vyspˇelou textovou konzoli5 . Pro tyto u ´ˇcely se jistˇe hod´ı EMS a Navicat, uˇz nen´ı tˇreba se rozepisovat o tom, ˇze jsou v´ yborn´e, ale drah´e. Pouˇziteln´ y je jistˇe SQL-Front a Micka, kter´ a je i zadarmo. HeidiSQL nem´a pˇr´ıliˇs vyladˇenou konzoli, ani pr´aci s daty, takˇze sp´ıˇs s pˇrimhouˇren´ım oka. V´ yvoj´ aˇ r je nejuniverz´ alnˇejˇs´ı uˇzivatel, ten potˇrebuje obˇcas vˇsechno. Ten nejv´ıce ocen´ı a nejv´ıce se mu vyplat´ı investovat do takov´ ych program˚ u, jako je EMS nebo Navicat. Pro urˇcit´ y styl pr´ace zajist´e ocen´ı i vymoˇzenosti pˇri pr´aci s Mickou. Pokud nen´ı moc n´aroˇcn´ y a s datab´az´ı nepracuje dennˇe, rozhodnˇe staˇc´ı i HeidiSQL. V´ yvoj´aˇr ˇcasto r´ad vyuˇzije i moˇznost´ı webov´ ych aplikac´ı, kter´e jsou v nˇekter´ ych pˇr´ıpadech pˇr´ımo nenahraditeln´e. Shrnout by to ˇslo tak, ˇze pro v´ yvoj´ aˇre jsou vhodn´e vˇsechny v´ yˇse zm´ınˇen´e n´astroje, snad kromˇe MySQL GUI Tools, kter´ y je pˇr´ıliˇs zamˇeˇren na administraci samotn´eho syst´emu. Jeˇstˇe mal´ y pohled z hlediska investic a bezpeˇcnosti. Pro vyspˇelou a bezpeˇcnou administraci datab´aze na u ´rovni datab´ azov´eho specialisty se vyplat´ı koupit kvalitn´ı a preciznˇe otestovan´ y n´astroj. Nicm´enˇe uˇzivatel, kter´ y pouˇz´ıv´ a datab´azi jako jeden z mnoha n´astroj˚ u v projektech, coˇz je dnes napˇr´ıklad kaˇzd´ y webmaster, se pohodlnˇe spokoj´ı i s kvalitn´ı aplikac´ı zdarma.
5
M´ ame na mysli textov´e okno pro pˇr´ım´e zad´ av´ an´ı dotaz˚ u a se zpracov´ an´ım v´ ysledk˚ u
KAPITOLA 5. IMPLEMENTACE
19
5 Implementace Program Micka zaˇcal vznikat na zaˇc´atku roku 2003, kdy byla z´asadn´ı absence kvalitn´ı datab´azov´e desktopov´e aplikace dostupn´e zdarma, kterou by ˇslo pˇredevˇs´ım rychle a efektivnˇe prohl´ıˇzet, upravovat a pˇrid´ avat data. Existoval phpMyAdmin, kter´ y je zmiˇ nov´an v pˇredchoz´ı kapitole, ide´ aln´ı n´ astroj pro vytvoˇren´ı tabulek, spr´avu struktury cel´e datab´aze. V t´e dobˇe jeˇstˇe MySQL neumˇelo triggery nebo uloˇzen´e procedury, a staˇcilo tedy ˇreˇsit pouze sloupeˇcky v tabulk´ach a kl´ıˇce. Jakmile chtˇel ale uˇzivatel zaˇc´ıt napˇr´ıklad zad´avat data stylem jako do Excelu nebo vyb´ırat podle r˚ uzn´ ych krit´eri´ı z vˇetˇs´ı tabulky, narazil na z´asadn´ı omezen´ı webov´e aplikace, zvl´aˇstˇe kdyˇz nebylo bˇeˇzn´e rychlejˇs´ı pˇripojen´ı k Internetu. Byl zapotˇreb´ı nˇejak´ y n´astroj, kter´ y dok´aˇze s minim´ aln´ı reˇzi´ı pˇrehlednˇe a rychle zobrazovat libovoln´a data a umoˇzn´ı je i bezpeˇcnˇe upravovat a pˇrid´ avat. Nezb´ yvalo, neˇz si takov´ y n´astroj naprogramovat.
5.1
Motivace
Hlavn´ım poˇzadavkem na program Micka byla maxim´aln´ı uˇzivatelsk´a pˇr´ıvˇetivost a co nejpˇr´ıjemnˇejˇs´ı a nejefektivnˇejˇs´ı pr´ ace se samotn´ ymi textov´ ymi daty. Prvn´ı verze neumˇely pracovat se strukturou tabulek, neumˇely vytv´ aˇret nebo ruˇsit cel´e datab´aze, ale pˇresto byly velice pouˇziteln´e. Na samotnou spr´ avu datab´ aze existuje mnoho jin´ ych n´astroj˚ u a je zbyteˇcn´e duplikovat vˇsechny funkce. Od poˇc´ atku byla Micka zamˇeˇren´a na pr´aci s daty. Po pˇripojen´ı k serveru si program zjist´ı jen minimum nezbytn´ ych informac´ı, jako je znakov´a sada pˇripojen´ı a seznam datab´az´ı. Nˇekter´e ˇ jin´e aplikace zjiˇstuj´ı seznamy a strukturu vˇsech tabulek, hodnoty vˇsech moˇzn´ ych promˇenn´ ych, coˇz samotn´e pˇripojen´ı nesm´ırnˇe zpomaluje. Je moˇznˇe nam´ıtnout, ˇze v dneˇsn´ı dobˇe vysokorychlostn´ıho internetu na tom pˇr´ıliˇs nez´aleˇz´ı. Na druhou stranu je ˇc´ım d´al bˇeˇznˇejˇs´ı pracovat nikoli z firemn´ı kancel´ aˇre na p´ ateˇrn´ı s´ıti, ale tˇreba z vlaku jedouc´ıho do Ostravy, horsk´e chalupy v Luˇzick´ ych hor´ ach nebo apartm´ anu v Chorvatsku. Zkr´atka vˇsude tam, kde jeˇstˇe nen´ı pokryt´ı mobiln´ımi s´ıtˇemi tˇret´ı generace, a pˇresto se potˇrebujeme pod´ıvat, co se dˇeje v naˇsem internetov´em obchodˇe nebo vyˇreˇsit probl´em chybn´eho zobrazen´ı n´azvu produktu v´aˇzen´eho klienta. Micka se snaˇz´ı co nejv´ıce uˇzivateli zpˇr´ıjemnit pr´aci, snaˇz´ı se vychytat des´ıtky detail˚ u, kter´e ˇcasto pr´avˇe freewarov´e projekty zanedb´avaj´ı. Pamatuje si cesty ke vˇsem soubor˚ um, kter´e se ukl´adaj´ı nebo naˇc´ıtaj´ı, rozvrˇzen´ı, pozice a stav dialogov´ ych oken, abychom napˇr´ıklad pˇri kaˇzd´em exportu nemuseli dokola zaklik´ avat nebo odklik´avat pˇet r˚ uzn´ ych pol´ıˇcek. Je zde moˇznost zkop´ırovat jek´ ykoli n´ azev tabulky, sloupeˇcku, typu porovn´an´ı nebo obsahu buˇ nky do schr´anky a n´aslednˇe vloˇzit do skriptu, dokumentu nebo kamkoli bez nepˇr´ıjemn´eho pˇrepisov´an´ı. Jako jedin´ y ze vˇsech podobn´ ych program˚ u, kter´e byly testov´any, um´ı exportovat cokoli pouze do schr´anky. Chcete-li zkop´ırovat strukturu tabulky nebo obsah menˇs´ı tabulky do jin´e datab´aze nebo na jin´ y server, netˇreba vyplˇ novat n´ azev textov´eho souboru pro export, pak soubor naj´ıt, otevˇr´ıt v textov´em editoru, zkop´ırovat jeho ˇc´ast a opˇet vloˇzit do jin´eho SQL editoru. Staˇc´ı zaˇskrtnout patˇriˇcnou volbu v dialogu. M´ ate tak plnou kontrolu nad operacemi v datab´azi. D´ıky zpˇetn´e vazbˇe od mnoha kaˇzdodenn´ıch uˇzivatel˚ u se tak Micka chov´a opravdu pˇr´ıvˇetivˇe.
5.2
V´ yvojov´ e prostˇ red´ı a programovac´ı jazyk
Na poˇc´atku v´ yvoje jak´ehokoli software stoj´ı vˇzdy popt´avka. Jiˇz od poˇc´atku Micka nevznikala jen pro potˇrebu samotn´eho tv˚ urce, ale pˇredevˇs´ım jako pˇr´ıvˇetiv´ y n´astroj pro nˇekolik firemn´ıch klient˚ u a spolupracovn´ık˚ u na mnoha projektech, pˇredevˇs´ım webov´ ych str´ank´ach, elektronick´ ych obchodech a datab´ azov´ ych syst´emech. Drtiv´a vˇetˇsina jednotlivc˚ u i firem pouˇz´ıv´a operaˇcn´ı syst´em (d´ ale jen OS) MS Windows. Stejnˇe jako vˇsichni, pro kter´e p˚ uvodnˇe projekt vznikl. Vzhledem k poˇzadavku rychlosti a efektivitˇe bylo ide´aln´ı zaˇc´ıt s nˇejak´ ym v´ yvojov´ ym
20
KAPITOLA 5. IMPLEMENTACE
Obr´ azek 5.1: Delphi prostˇred´ım, kter´e je nativn´ı pro tento OS a existuje pro nˇej rozhran´ı pro pˇr´ımou komunikaci s datab´az´ı bez dalˇs´ıch knihoven a rozhran´ı tˇret´ıch stran. Takov´e poˇzadavky v´ ybornˇe splˇ nuje v´ yvojov´e prostˇred´ı Borland Delphi s jazykem Object Pascal v kombinaci s komponentou Direct SQL[14] pro pˇr´ım´ y pˇr´ıstup k datab´ azov´emu serveru. Nav´ıc s n´ım m´a autor nejv´ıce zkuˇsenost´ı. Delphi je kvalitn´ı a modern´ı prostˇred´ı, v nˇemˇz mohou vznikat ˇspiˇckov´e aplikace. Projekt Micka tedy zaˇcal vznikat v jazyce Object Pascal v prostˇred´ı Borland Delphi 6[8].
5.3 5.3.1
Popis implementace Architektura
Implementace je postaven´ a na jednotliv´ ych od sebe oddˇelen´ ych vrstv´ach. Tato architektura umoˇzn ˇuje pˇredevˇs´ım snadnou rozˇsiˇritelnost, i kdyˇz m´a i mnoho jin´ ych dobr´ ych vlastnost´ı. Flexibilitu pˇri aktualizaci nebo zmˇeny komponenty pro samotn´e pˇripojen´ı a komunikaci se serverem. Glob´ aln´ı oˇsetˇren´ı v´ yj´ımek a chyb. Moˇznost pouˇz´ıt celou vrstvu v jin´e speci´aln´ı aplikaci. Nejn´ıˇze je komponenta Direct SQL[14] publikovan´a pod GPL[3] licenc´ı na , kter´a komunikuje pˇr´ımo se samotn´ ym MySQL serverem. Komponenta obsahuje nˇekolik tˇr´ıd a objekt˚ u. Nejd˚ uleˇzitˇejˇs´ı je tˇr´ıda TMysqlClient, jej´ıˇz metody se staraj´ı o samotnou komunikaci. Metody jako connect() nebo query() nepotˇrebuj´ı vysvˇetlovat. Dalˇs´ı d˚ uleˇzitou tˇr´ıdou je TMysqlResult, kterou vrac´ı metoda query() i nˇekter´e dalˇs´ı a jej´ıˇz pomoc´ı se pracuje s v´ ysledkem dotazu. V´ ysledek obsahuje, kromˇe vlastnost´ı sloupeˇck˚ u a r˚ uzn´ ych pomocn´ ych hodnot, ukazatel na aktu´aln´ı ˇr´adek v´ ybˇeru a pomoc´ı metod prev a next jej posunujeme. Cel´a komponenta je napsan´a elegantnˇe a pracuje s cel´ ym pˇripojen´ım rychle a efektivnˇe. Jen je tˇreba peˇclivˇe uvolˇ novat pamˇeˇt po kaˇzd´em dotazu, 1 protoˇze Delphi neobsahuje garbage collector a po delˇs´ım bˇehu programu by nastaly probl´emy 1
Garbage collector je obvykle ˇc´ ast bˇehov´eho prostˇred´ı (programovac´ıho) jazyka nebo pˇr´ıdavn´ a knihovna, podporovan´ a kompil´ atorem, hardware, operaˇcn´ım syst´emem nebo jakoukoli kombinac´ı tˇechto tˇr´ı. M´ a za u ´kol automaticky urˇcit, kter´ a ˇca ´st pamˇeti programu je uˇz nepouˇz´ıvan´ a, a pˇripravit ji pro dalˇs´ı znovupouˇzit´ı.[17]
KAPITOLA 5. IMPLEMENTACE
21
Obr´ azek 5.2: Vrstvy komunikace s ne´ umˇern´ ym n´ ar˚ ustem obsazen´e pamˇeti. Tuto komponentu ”vid´ı” v cel´e aplikaci pouze jedin´ y objekt TSenMySQL se kter´ ym pak pracuje zbytek programu. TSenMySQL odst´ın´ı samotn´ y pˇr´ıstup k MySQL, takˇze pokud by se napˇr´ıklad zastavil v´ yvoj komponenty Direct SQL, jin´a komponenta se uk´azala v´ yhodnˇejˇs´ı, nebo by bylo potˇreba cel´e prostˇred´ı pˇrizp˚ usobit pro komunikaci s tˇreba PostgreSQL, staˇc´ı v z´asadˇe pˇrepsat nˇekolik metod v TSenMySQL a zbytek bude fungovat korektnˇe. Deklarace objektu je v dodatku B na stranˇe 45. Posledn´ı, vlastnˇe uˇzivatelskou vrstvou, jsou samotn´e formul´aˇre. Micka je klasick´a formul´aˇrov´a aplikace ˇr´ızen´ a ud´ alostmi. Napˇr´ıklad uˇzivatel klikne na tlaˇc´ıtko Pˇripojit, ud´ alost zavol´a proceduru, kter´ a podle zaˇskrtl´e poloˇzky v menu zjist´ı parametry pˇripojen´ı a zavol´ a ´ metodu connect() objektu TSenMySQL a ukonˇc´ı se. Uspˇeˇsn´e pˇripojen´ı vyvol´a dalˇs´ı ud´alost, kter´a zavol´ a jinou proceduru obsahuj´ıc´ı k´od pro oˇsetˇren´ı menu a inicializuje v´ ypis datab´ az´ı. A tak d´ale. 5.3.2
Uˇ zivatelsk´ e rozhran´ı
Uˇzivatelsk´e rozhran´ı jinak tak´e GUI2 je standardn´ı SDI3 aplikaˇcn´ı okno syst´emu Windows. V z´ahlav´ı se zobrazuje aktu´ aln´ı datab´aze a tabulka. Obsah okna je rozvrˇzen podobnˇe jako u ostatn´ıch aplikac´ı pro spr´ avu datab´ aze, vˇcetnˇe webov´ ych. Toto rozvrˇzen´ı je pˇrehledn´e a uˇzivatel´e jsou na nˇej zvykl´ı. Uˇzivatelsk´e rozhran´ı je vidˇet na obr´azku 5.3. Nahoˇre standardn´ı rozbalovac´ı menu (1). D´ale tlaˇc´ıtkov´ a liˇsta (2), kter´ a pˇrehlednˇe zobrazuje seznam pˇripojen´ı a tlaˇc´ıtka pro nejˇcastˇejˇs´ı operace. Po najet´ı kurzorem myˇsi se jako kontextov´a n´apovˇeda (hint) zobraz´ı kl´avesov´a zkratka. Dalˇs´ı liˇsta slouˇz´ı pro nastaven´ı zobrazen´ı v´ ysledku a filtraci (3). N´asleduje samotn´a pracovn´ı plocha. Po lev´e stranˇe strom objekt˚ u (4) (nikoli objekty ve smyslu objektov´eho modelu, ale jednotliv´e entity datab´ aze). Vpravo jsou z´aloˇzky (5) pro seznam tabulek, data a podobnˇe. Pod t´ım vˇs´ım je aktivn´ı SQL log (6), kam se vypisuje veˇsker´a komunikace. Na konci, u ´plnˇe dole, je stavov´ y ˇr´ adek (7) se stavov´ ymi hodnotami. Podrobnosti o zobrazen´ı jsou v uˇzivatelsk´e pˇr´ıruˇcce v dodatku A na stranˇe 31. Dalˇs´ı d˚ uleˇzitou souˇc´ ast´ı je takzvan´e SQL okno. Je to textov´e pole, kam lze zapsat libovoln´ y dotaz nebo s´erii dotaz˚ u a ty pak poslat serveru. V doln´ı ˇc´asti okna se zobraz´ı v´ ysledek posledn´ıho dotazu. Do textov´eho pole se d´a naˇc´ıst textov´ y soubor, uloˇzit jednotliv´e dotazy do obl´ıben´ ych nebo uloˇzit obsah pole do textov´eho souboru. Samotn´ y editor um´ı highlighting4 , 2
GUI (Graphical User Interface), grafick´e uˇzivatelsk´e rozhran´ı SDI (Single Document Interface), organizace GUI, kde v uvnitˇr hlavn´ıho okna je otevˇren vˇzdy pouze jeden dokument. Druh´ a varianta je MDI (Multiple Document Interface), kdy hlavn´ı okno je rodiˇc a m˚ uˇze m´ıt otevˇreno v´ıce dokument˚ u jako potomky. 4 Zv´ yraznˇen´ı syntaxe 3
22
KAPITOLA 5. IMPLEMENTACE
Obr´ azek 5.3: GUI - Hlavn´ı okno doplˇ nov´an´ı a zv´ yraznˇen´ı n´ azv˚ u tabulek a sloupeˇck˚ u, zalamov´an´ı ˇr´adk˚ u a ostatn´ı funkce bˇeˇzn´e pro textov´e pole ve Windows, jako je kop´ırov´an´ı, vkl´ad´an´ı atd.. Pro tento u ´ˇcel je pouˇzita komponenta SynEdit[5] dostupn´ a na .
5.4
Omezen´ı
Nejz´asadnˇejˇs´ı omezen´ı pramen´ı ze zvolen´eho v´ yvojov´eho prostˇred´ı Borland Delphi. Aplikaci Micku nelze portovat na jin´ y operaˇcn´ı syst´em neˇz, je 32 bitov´a Microsoft Windows. Zd˚ uvodnˇen´ı volby takov´eho v´ yvojov´eho prostˇred´ı je uvedeno v kapitole 5.2 na stranˇe 19. Pokud Borland (CodeGear), jako tv˚ urce Delphi, uvoln´ı verzi pˇrekladaˇce pro 64 bitov´e Windows nebo pro Linux, nebude probl´em Micku portovat. Komponenta pro pˇripojen´ı k MySQL je napsan´a tak, aby se umˇela pˇripojit odkudkoli i z Linuxu. Dokonce byla testov´ ana na Kylixu 3 od Borlandu, coˇz je obdoba Delphi 6 pro Linux, dnes jiˇz bohuˇzel ponˇekud zastaral´ a. To je jedin´a potenci´aln´ı pˇrek´aˇzka pˇri portov´an´ı cel´eho projektu. Zbytek je d˚ uslednˇe naps´ an jen se standardn´ımi komponentami. Dalˇs´ı omezen´ı vypl´ yv´ a z v´ yvojov´eho t´ ymu, kter´ y tvoˇr´ı pr´avˇe jeden program´ator pracuj´ıc´ı v podstatˇe zadarmo. Dalˇs´ı v´ yvoj je sice v´ yraznˇe motivov´an mnoha r˚ uzn´ ymi potˇrebami, ale jeden ˇclovˇek je vˇzdy zdrojem potenci´ aln´ı nestability. Pokud by se naˇsel vˇetˇs´ı t´ ym program´ator˚ u, dalˇs´ı v´ yvoj by byl jistˇe a spolehlivˇe zajiˇstˇen. Urˇcitou pˇrek´ aˇzkou rozˇsiˇrov´ an´ı v´ yvojov´eho t´ ymu m˚ uˇze b´ yt komerˇcn´ı povaha v´ yvojov´eho n´astroje. To pˇredpokl´ ad´ a, aby se potenci´aln´ı spolupracovn´ık s´am v´ yznamnˇe zab´ yval prac´ı s Delphi a mˇel tedy licenci. I kdyˇz cena licence, zejm´ena pod tlakem konkurenˇcn´ıch prostˇred´ı a jazyk˚ u, ˇcasto nab´ızen´ ych i zdarma, se postupnˇe sniˇzuje.
5.5 5.5.1
Rozˇ siˇ rov´ an´ı Dalˇ s´ı datab´ azov´ e syst´ emy
Cel´a aplikace je navrˇzena tak, aby bylo uˇzivatelsk´e rozhran´ı oddˇeleno od samotn´e komunikace s dan´ ym datab´ azov´ ym strojem. Pˇreveden´ı cel´eho programu pro jinou datab´azi neˇz MySQL nebo moˇznost pouˇz´ıt GUI pro v´ıce rozd´ıln´ ych datab´az´ı spoˇc´ıv´a v z´asadˇe v naps´an´ı jednoho nov´eho objektu pro pˇr´ıstup k dan´e datab´ azi a rozvˇetven´ı na uˇzivatelsk´e u ´rovni.
KAPITOLA 5. IMPLEMENTACE
Obr´azek 5.4: GUI - SQL okno
Obr´ azek 5.5: Rozˇs´ıˇren´ı na dalˇs´ı syst´emy komunikace
23
24
KAPITOLA 5. IMPLEMENTACE
5.5.2
Nov´ e funkce
Je tˇreba tak´e myslet na pomˇernˇe rychl´ y v´ yvoj MySQL. Klient by mˇel reflektovat vˇsechny nov´e vlastnosti a moˇznosti datab´ azov´eho stroje. Pouˇzitelnost se do znaˇcn´e m´ıry odv´ıj´ı pr´avˇe od neust´al´eho v´ yvoje a vyd´ av´ an´ı nov´ ych verz´ı. Tato pr´ace zachycuje koncepci programu a jeho okamˇzit´ y stav, kter´ y je vˇsak potˇreba nad´ ale a neust´ale vyv´ıjet. Dalˇs´ı funkce a schopnosti programu Micka se do znaˇcn´e m´ıry odv´ıjej´ı od ˇcasu, kter´ y bude v´ yvoj´aˇr ochoten obˇetovat nad r´ amec sv´ ych pracovn´ıch i jin´ ych povinnost´ı. V´ yvojov´e prostˇred´ı Delphi je dostateˇcnˇe siln´e na zaimplementov´an´ı t´emˇeˇr jak´ ychkoli funkc´ı. Pˇ renos dat Urˇcitˇe by byl velice uˇziteˇcn´ y siln´ y n´astroj pro pˇrenos dat mezi datab´azemi. T´ım by se jedn´ım pr˚ uvodcem, jedn´ım oknem nav´ıc, vyˇreˇsilo hned nˇekolik funkc´ı. Jako pˇresun nebo kop´ırov´an´ı tabulek a cel´ ych datab´ az´ı. Nav´ıc i mezi r˚ uzn´ ymi MySQL servery. Zat´ım to Micce chyb´ı. Tisk Obˇcas se hod´ı vytisknout obsah tabulky nebo i strukturu. Vˇsechny tabulkov´e v´ ypisy, vˇcetnˇe seznamu tabulek nebo seznamu sloupeˇck˚ u, jsou realizov´any komponentu TStringGrid. Staˇcilo by napsat proceduru nebo moˇzn´ a sp´ıˇs tˇr´ıdu i formul´aˇrem pro nastaven´ı tisku, kter´e by se jako parametr pˇredal ukazatel na jak´ ykoli StringGrid a jednoduˇse tak m´ame prostˇredek, jak tisknout t´emˇeˇr cokoli z cel´e aplikace. Hybridn´ı MDI rozhran´ı K efektivnˇejˇs´ımu proch´azen´ı v´ıce tabulek z´aroveˇ n by pomohlo pˇrid´an´ı hybridn´ıho MDI rozhran´ı se z´ aloˇzkami, jak´e zn´ame napˇr´ıklad z modern´ıch internetov´ ych prohl´ıˇzeˇc˚ u. Pohledy, triggery, uloˇ zen´ e procedury V Programu prozat´ım chyb´ı podpora pro pohledy, triggery a uloˇzen´e procedury, kter´e MySQL podporuje od verze 5. To bude n´aroˇcn´a u ´prava, kter´a vyˇzaduje nˇekolik zmˇen v cel´em programu. Kromˇe pˇrid´an´ı z´aloˇzek pro jejich zobrazen´ı, jak je zm´ınˇeno v pˇredchoz´ım odstavci, je tˇreba pˇrebudovat strom objekt˚ u, kam pˇribude hned nˇekolik nov´ ych druh˚ u. A v neposledn´ı ˇradˇe bude nutn´e pˇrepsat parser5 SQL dotaz˚ u, kter´ y um´ı rozpoznat jednotliv´e jednoduch´e dotazy, ale neum´ı poznat sloˇzitˇejˇs´ı konstrukce napˇr´ıklad pro deklaraci procedur nebo trigger˚ u. Jak je vidˇet, pr´ ace je spousta. Ale je poloˇzen kvalitn´ı z´aklad s dobr´ ym uˇzivatelsk´ ym rozhran´ım, na kter´em je moˇzno a tak´e nutno do budoucna stavˇet. Podobn´ ych projekt˚ u nen´ı mnoho a bylo by ˇskoda zahodit potenci´ al a spoustu pr´ace, kter´a je jiˇz vykon´ana. Tak´e by asi st´ alo za to, nepublikovat spustitelnou verzi jen jako zip archiv, ale i ve formˇe instal´atoru. Nˇekter´e uˇzivatele to m˚ uˇze odradit, na druhou stranu m´a jistotu, ˇze se mu neˇz´adouc´ım zp˚ usobem nezap´ıˇse do syst´emu, jak to s oblibou dˇelaj´ı nˇekter´e programy. Nˇekter´e knihovny do syst´emov´eho adres´ aˇre, nˇekter´e do uˇzivatelsk´eho adres´aˇre a spousta z´aznam˚ u do registr˚ u syst´emu Windows. A pˇri odinstalaci tam toho p˚ ulka zbude. To u Micky rozhodnˇe nehroz´ı.
5
Parser je algoritmus, kter´ y analyzuje pˇredloˇzen´ a data (obvykle textov´ y soubor) a vyhled´ av´ a v nˇem prvky odpov´ıdaj´ıc´ı definici urˇcit´eho jazyka. Obvykle prov´ ad´ı syntaktick´ y rozbor zdrojov´ ych k´ od˚ u napsan´ ych v dan´em programovac´ım jazyce[17].
´ ´I KAPITOLA 6. TESTOVAN
25
6 Testov´ an´ı Aplikace Micka je testov´ ana v prvn´ı ˇradˇe v pr˚ ubˇehu v´ yvoje. Kaˇzd´a novˇe naprogramovan´a ˇc´ ast se d˚ ukladnˇe testuje na funkˇcnost. Pokud m´a napojen´ı na jin´e ˇc´asti, mus´ı se testovat i ty, zda nedoˇslo k negativn´ımu ovlivnˇen´ı. A pak je samozˇrejmˇe jeˇstˇe tˇreba zkouˇset, jak pracuj celek. Toto testov´ an´ı pˇri v´ yvoji, nav´ıc stejn´ ymi lidmi, kteˇr´ı aplikaci tvoˇr´ı, nestaˇc´ı. Odhal´ı z´asadn´ı chyby, ale tˇeˇzko m˚ uˇze dokonale odhalit napˇr´ıklad z´aludnosti uˇzivatelsk´eho rozhran´ı, kter´e nakonec vˇzdy zjist´ı aˇz nez´ avisl´ y uˇzivatel. Nebo chov´an´ı programu v nestandardn´ıch podm´ınk´ ach, se vstupy, kter´e by v´ yvoj´aˇre nikdy nenapadly. V pˇr´ıpadˇe Micky i pˇripojen´ı na nˇejak´ y exotick´ y MySQL server ve smyslu verze a konfigurace. Protoˇze Micka je urˇcena v prvn´ı ˇradˇe do praxe, nejv´ıce pˇr´ınosn´e je pr´avˇe praktick´e testov´ an´ı.
6.1
Nasazen´ı v praxi
Testov´an´ı pouˇzitelnosti uˇzivatelsk´eho rozhran´ı i funkˇcnosti prob´ıh´a jiˇz bezm´ala dva roky t´emˇeˇr dennˇe v re´ aln´em pracovn´ım prostˇred´ı. N´astroj je nejv´ıce pouˇz´ıvan´ y v Direct marketingov´e agentuˇre Wunderman v interaktivn´ım oddˇelen´ı, kter´e se zab´ yv´a v´ yvojem software, zejm´ena webov´ ych aplikac´ı. Odtud pramen´ı nejv´ıce podnˇet˚ u a upozornˇen´ı na chyby. D´ale se program pouˇz´ıv´a pro spr´ avu dat administr´ atorem nˇekolika elektronick´ ych obchod˚ u[9] a v neposledn´ı ˇradˇe pro spr´ avu datab´ aze dalˇs´ıch dvou firem, odkud je tak´e v´ yrazn´a zpˇetn´a vazba. D´ıky dlouhodob´emu nasazen´ı v pracovn´ım prostˇred´ı je program Micka pomˇernˇe dobˇre odladˇen´ y a vyladˇen´ y pro uˇzivatelskou pˇr´ıvˇetivost. Na samotn´em webu produktu je formul´aˇr pro hl´aˇsen´ı chyb. Na formul´ aˇr vede pˇr´ım´ y odkaz z aplikace Help - Micka bugs report, kter´ y otevˇre okno prohl´ıˇzeˇce s poˇzadovanou str´ ankou.
Obr´ azek 6.1: Webov´ y formul´aˇr pro hl´aˇsen´ı chyb Ve formul´ aˇri lze vybrat, zda je to chyba nebo podnˇet. Pˇr´ıspˇevky se ukl´adaj´ı do speci´aln´ıho syst´emu pro spr´ avu ToDo seznamu1 . Po pˇr´ıchodu se zpr´ava zaˇrad´ı do skupiny a urˇc´ı se j´ı priorita. Postupnˇe se pak zapracov´ avaj´ı a oznaˇcuj´ı za hotov´e, pˇr´ıpadnˇe komentuj´ı. 1 ToDo - z anglick´eho to do, k udˇel´ an´ı. Je to zpravidla seznam poloˇzek, vˇetˇsinou organizovan´ ych do skupin, kter´e ˇcekaj´ı na vyˇr´ızen´ı nebo implementov´ an´ı. Do seznamu se daj´ı obvykle zad´ avat koment´ aˇre a priorita poloˇzky.
´ ´I KAPITOLA 6. TESTOVAN
26
Obr´ azek 6.2: Micka na SourceForge.net
6.2
SourceForge.net
Od 15.12.2006 je Micka publikov´ ana na port´alu SourceForge.net , kter´ y sdruˇzuje open source projekty, obsahuje syst´em pro hl´aˇsen´ı chyb, f´ora a mnoho dalˇs´ıch n´ astroj˚ u pro usnadnˇen´ı v´ yvoje. Odtud byla Micka staˇzena v dobˇe psan´ı t´eto pr´ace asi tˇristakr´ at. Poprv´e verze 0.0.10, kter´a jiˇz mˇela plnou funkcionalitu pro pr´aci s daty, ale to bylo tak´e vˇsechno co umˇela. Z tohoto zdroje nepˇriˇslo ˇz´adn´e upozornˇen´ı na chyby ani nov´e podnˇety. Pravdˇepodobnˇe proto, ˇze kdo je spokojen´ y nep´ıˇse a kdo nen´ı, program smaˇze a nainstaluje jin´ y. To by musel b´ yt vyslovenˇe nadˇsenec, kter´ y by se chtˇel aktivnˇe pod´ılet na dalˇs´ım v´ yvoji.
´ ER ˇ KAPITOLA 7. ZAV
27
7 Z´ avˇ er 7.1
Vyhodnocen´ı pouˇ zitelnosti navrˇ zen´ e aplikace
Podaˇrilo se vyvinout aplikaci, datab´azov´eho klienta pro MySQL, kter´ y nejen, ˇze by mˇel b´ yt teoreticky v praxi velice dobˇre pouˇziteln´ y, ale je i skuteˇcnˇe vyuˇz´ıvan´ y pro kaˇzdodenn´ı pr´ aci s datab´azemi. V mnoha parametrech pˇredˇc´ı komerˇcn´ı produkty nebo se jim pˇrinejmenˇs´ım vyrovn´a. Jeho v´ yhodou je zejm´ena rychlost pˇripojen´ı a efektivn´ı navigace v datab´azov´ ych objektech. Snaˇz´ı se minimalizovat komunikaci se serverem. Proto je i ˇr´adovˇe rychlejˇs´ı pˇri pomal´em pˇripojen´ı a dlouh´ ych odezv´ ach s´ıtˇe, napˇr´ıklad pˇres GPRS1 . Vynik´ a pˇrehledn´ ym GUI a pohodln´ ym ovl´ad´an´ım pln´em drobnost´ı, kter´e pˇri mnoha bˇeˇzn´ ych operac´ıch zpˇr´ıjemˇ nuj´ı a zefektivˇ nuj´ı pr´aci. Zejm´ena se to t´ yk´a navigace ve velk´ ych datab´az´ıch s mnoha tabulkami a v rozs´ ahl´ ych tabulk´ach, jak ˇr´adkovˇe, tak sloupcovˇe. Program je zamˇeˇren na pr´ aci s daty. Chyb´ı mu sice vyspˇel´e n´astroje na administraci serveru nebo propracovan´ı pr˚ uvodci synchronizac´ı, zato se ale v´ ybornˇe hod´ı na prohl´ıˇzen´ı, vyhled´av´ an´ı, filtrov´an´ı a u ´pravy dat. Zvl´ adne vˇsechny serverem podporovan´e znakov´e sady, dlouh´e texty v buˇ nk´ach i vˇetˇs´ı tabulky. Podporuje export i import dat. Um´ı vˇsechny z´akladn´ı operace s datab´az´ı, kter´e m˚ uˇze v´ yvoj´ aˇr potˇrebovat. Pˇrehled vˇsech aktu´aln´ıch funkc´ı a popis pr´ ace s nimi je v instalaˇcn´ı a uˇzivatelsk´e pˇr´ıruˇcce na stranˇe 31.
7.2
N´ amˇ ety pro dalˇ s´ı pr´ aci
Datab´azov´ y syst´em MySQL se st´ ale pomˇernˇe rychle vyv´ıj´ı. Tato pr´ace zachycuje stav programu Micka a jeho vlastnosti ve vztahu k MySQL pr´avˇe v tuto chv´ıli. Aby byl program pouˇziteln´ y i v budoucnu, mus´ı se st´ ale vyv´ıjet spolu s datab´azov´ ym syst´emem. Mˇel by reflektovat nov´e funkce, nov´e moˇznosti a pˇr´ıpadn´e z´ asadn´ı zmˇeny a mˇel by pˇritom z˚ ustat pokud moˇzno zpˇetnˇe kompatibiln´ı. Tato diplomov´ a pr´ ace je zaˇc´ atkem dlouh´e cesty tohoto klienta se serverem ruku v ruce.
7.3
Moˇ znosti rozvoje prostˇ red´ı
Hlavn´ım pˇr´ınosem je samotn´ a koncepce tohoto n´astroje a jeho propracovan´e GUI. Pod souhrnem formul´ aˇr˚ u, tabulek a kl´ avesov´ ych zkratek bˇeˇz´ı pomˇernˇe jednoduch´a a pˇr´ım´a tˇr´ıda, kter´a komunikuje pr´ avˇe s MySQL serverem. Pokud bychom chtˇeli toto prostˇred´ı pouˇz´ıt pro jin´ y datab´azov´ y syst´em, bylo by to moˇzn´e relativnˇe s minimem pr´ace. Architektura je podrobnˇeji pops´ana v kapitole 5.3.1 na stranˇe 20. C´ıle diplomov´e pr´ ace tedy byly splnˇeny. Pˇresto bude v´ yvoj datab´azov´eho klienta d´ ale pokraˇcovat a bude se st´ ale d´ al snaˇzit zefektivnit a zpˇr´ıjemnit co nejv´ıce uˇzivatel˚ um pr´aci. Aktu´aln´ı informace o v´ yvoji Micky jsou dostupn´e na internetov´e adrese a na .
1 General Packet Radio Service (GPRS) je mobiln´ı datov´ a sluˇzba pˇr´ıstupn´ a pro uˇzivatele GSM mobiln´ıch telefon˚ u[17].
28
´ ER ˇ KAPITOLA 7. ZAV
KAPITOLA 8. SEZNAM LITERATURY
29
8 Seznam literatury [1] DUBOIS, P.: MySQL profesion´ alnˇe. Mobil Media, a.s., 2003, ISBN 80-86593-41-X. ˇ [2] FISCHER, O.: Syntax´ı ˇr´ızen´y editor jako webov´ a aplikace. Diplomov´a pr´ace, FEL CVUT, 2007. [3] GNU: GNU General Public License, version 2. Online, 2007. URL [4] HANDZLIK, D.: VertrigoServ. Online, 2007. URL [5] HARMON, D.; kolektiv: Delphi komponenta SynEdit. Online, 2007. URL ´ R.: Instalace Apache, MySQL a PHP na Windows. Online, 2008. [6] HULAN, URL ˇ y styl pro BibTeX. Online, 2007. [7] MART´INEK, D.: Cesk´ URL [8] MILLER, T.; POWELL, D.; kolektiv: Mistrovstv´ı v Delphi 3. Computer Press, 1998, ISBN 80-7226-110-X. [9] MUNZAR, Z.: Projekt internetov´eho obchodu Koza. online, 2007. URL [10] MySQL AB: MySQL 3.23, 4.0, 4.1 Reference Manual. 2006. [11] MySQL AB: MySQL 5.1 Reference Manual. 7918 vyd´an´ı, 2007. [12] MySQL AB: MySQL 6.0 Reference Manual. 9490 vyd´an´ı, 2008. [13] MySQL AB: Ofici´ aln´ı port´ al MySQL. online, 2008. URL [14] NICOLA, C.; kolektiv: Delphi komponenta Direct SQL. Online, 2007. URL ´ J.; HALASKA, ˇ ˇ [15] POKORNY, I.: Datab´azov´e syst´emy. Skriptum FEL CVUT, 2003. [16] WIKIPEDIA: Java Runtime Environment. Online, 2007. URL [17] WIKIPEDIA: Wikipedia ˇcesky. Online, 2008. URL
30
KAPITOLA 8. SEZNAM LITERATURY
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
31
A Instalaˇ cn´ı a uˇ zivatelsk´ a pˇ r´ıruˇ cka A.1
Vlastnosti Micky
• Kl´ıˇcov´e vlastnosti – – – – – – – – – –
Pln´ a podpora MySQL od verze 4.1 a ˇc´asteˇcn´a podpora od verze 3.23 Extr´emnˇe rychl´ a komunikace s MySQL serverem Podpora vˇsech znakov´ ych sad Profily pˇripojen´ı Spr´ ava datab´ az´ı Operace s tabulkami, spr´ava struktury tabulek V´ yborn´ a pr´ ace s daty Propracovan´ y SQL editor Export do SQL a CSV Monitorov´ an´ı proces˚ u
• V´ yhody – – – – –
A.2
Pamˇeˇt posledn´ı relace Filtrov´ an´ı dat, fulltextov´e vyhled´av´an´ı Rychl´ a navigace v rozs´ ahl´ ych datab´az´ıch a velk´ ych tabulk´ach SQL log Mnoho drobn´ ych detail˚ u, kter´e usnadˇ nuj´ı pr´aci
Distribuce
Program Micka je distribuov´ an jako komprimovan´ y zip archiv micka 1.0.0.zip. St´ahnout jej ˇ pˇr´ımo z internetov´ m˚ uˇzete bud ych str´anek projektu Micka , nebo z port´ alu SourceForge .
Obr´ azek A.1: Obsah distribuce
A.3 A.3.1
Instalace Syst´ emov´ e poˇ zadavky
• Poˇc´ıtaˇc typu PC s operaˇcn´ım syst´emem Microsoft Windows 98/XP/Vista • Funkˇcn´ı pˇripojen´ı k datab´ azov´emu serveru MySQL (localhost, LAN, Internet, ...)
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
32 A.3.2
Postup instalace
1. Rozbalte komprimovan´ y zip archiv do adres´aˇre, ze kter´eho budete cht´ıt program pouˇz´ıvat, napˇr´ıklad c:\Program Files\. Archiv pˇr´ımo obsahuje adres´aˇr Micka a v nˇem vˇsechny potˇrebn´e soubory, jak je vidˇet na obr´azku A.1. Nov´e verze Windows um´ı nativnˇe pracovat s form´ atem zip. Nebo k rozbalen´ı m˚ uˇzete pouˇz´ıt nˇejak´ y dalˇs´ı n´astroj, napˇr´ıklad ExtractNow ( ). 2. Samotn´ y program Micka se spouˇst´ı souborem Micka.exe, ostatn´ı jsou pomocn´e. Vhodn´e je vytvoˇrit z´ astupce na ploˇse nebo v panelu snadn´e spuˇstˇen´ı pr´avˇe pro tento exe soubor. 3. Instalace je hotova a m˚ uˇzete spustit Micka.exe nebo jeho z´astupce.
A.4 A.4.1
Pˇ ripojen´ı k MySQL serveru Pˇ ripojen´ı a odpojen´ı
Jedna spuˇstˇen´ a instance Micky se um´ı pˇripojit pr´avˇe k jednomu MySQL serveru. Umoˇzn ˇuje vˇsak uloˇzit aˇz 16 r˚ uzn´ ych profil˚ u pˇripojen´ı, z nichˇz si uˇzivatel vybere vˇzdy jeden a pouˇzije jej. Profil vyberete z roletov´e nab´ıdky v n´astrojov´e liˇstˇe a pˇripoj´ıte se stisknut´ım tlaˇc´ıtka Connect vedle vlevo, nebo v´ ybˇerem z hlavn´ıho menu File - Connect, kl´avesov´ a zkratka je . Odpojuje se stejn´ ym tlaˇc´ıtkem. A.4.2
Obr´azek A.2: Volba pˇripojen´ı
Nastaven´ı pˇ ripojen´ı
Pokud neexistuje ˇz´ adn´ y profil pˇripojen´ı, po stisknut´ı tlaˇc´ıtka Connect se objev´ı dialog Connection setting. Ten lze vyvolat i z hlavn´ıho menu Tools - Connection setting nebo tlaˇc´ıtkem na n´astrojov´e liˇstˇe vlevo od v´ ybˇeru profilu <Shift+Ctrl+F12>. V dialogov´em oknˇe je seznam pˇripojen´ı a vpravo tlaˇc´ıtka pro operace: Add - pˇrid´an´ı nov´eho pˇripojen´ı Edit - u ´prava pˇripojen´ı Duplicate - zkop´ırov´ an´ı pˇripojen´ı Remove - odstranˇen´ı pˇripojen´ı Po kliknut´ı na Add, Edit nebo Duplicate se otevˇre formul´aˇr pro konkr´etn´ı pˇripojen´ı. Vyplnˇen´ı pol´ı v pˇr´ıpadˇe zkop´ırov´ an´ı pˇripojen´ı se stejn´e jako editace, jen nen´ı vyplnˇen n´azev pˇripojen´ı. Textov´e pole Name je pro zad´an´ı n´azv˚ u pˇripojen´ı, je to povinn´ y parametr a m˚ uˇzete tam zadat v podstatˇe jak´ekoli jm´eno. N´azev mus´ı b´ yt jedineˇcn´ y. Nepovinn´ y parametr Database ˇr´ık´a, kter´ a jedna datab´ aze se m´a zobrazit, pokud m´ a uˇzivatel1 pˇr´ıstupov´ a pr´ava 1
Uˇzivatel ve smyslu pˇrihl´ aˇsen´ı k datab´ azov´emu serveru.
Obr´azek A.3: Dialog pˇripojen´ı
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
33
k v´ıce datab´ az´ım. Kdyˇz pole z˚ ustane pr´azdn´e, zobraz´ı se kompletn´ı seznam. Timeout je ˇcas v sekund´ ach, kter´ y klient ˇcek´ a na odezvu serveru. V´ yznam ostatn´ıch pol´ıˇcek je zˇrejm´ y. Po potˇrebn´ ych u ´prav´ ach v seznamu pˇripojen´ı m˚ uˇzete dialog zavˇr´ıt a pˇripojit se dle postupu uveden´em v A.4.1 nebo se rovnou pˇripojit k oznaˇcen´emu pˇripojen´ı tlaˇc´ıtkem Connect. A.4.3
Nastaven´ı znakov´ e sady
Znakov´a sada, kterou bude server pouˇz´ıvat pro komunikaci s klientem, se nastavuje pˇri otevˇren´ı datab´aze. Micka pro zobrazov´ an´ı v´ ysledk˚ u dotaz˚ u pouˇz´ıv´a standardn´ı komponenty Windows, proto je pro korektn´ı zobrazen´ı diakritiky potˇreba pouˇz´ıvat tak´e standardn´ı k´odov´an´ı dan´e verze Windows. Pro stˇredn´ı Evropu je to cp1250. V´ ystupn´ı znakovou sadu serveru m˚ uˇzete zmˇenit v dialogu nastaven´ı, Tools - Setting - MySQL. V´ıce o nastaven´ı v kapitole A.10 na stranˇe 43. A.4.4
Zobrazen´ı objekt˚ u datab´ aze
Po u ´spˇeˇsn´em pˇripojen´ı k serveru v lev´e ˇc´asti okna s ˇcern´ ym pozad´ım zobraz´ı strom objekt˚ u k dan´emu datab´ azov´emu syst´emu. Koˇrenem stromu je n´azev pˇripojen´ı. Potomci jsou datab´ aze, ke kter´ ym m´ a pˇrihl´ aˇsen´ y uˇzivatel pr´avo. Jin´ ymi slovy, na druh´e u ´rovni stromu je seznam dostupn´ ych datab´ az´ı. Pokud poklepete na n´azev datab´aze, rozbal´ı se dalˇs´ı vˇetev stromu, seznam tabulek zvolen´e datab´ aze. T´ımto zp˚ usobem m˚ uˇzete rozkliknout nˇekolik datab´az´ı. Ze serveru se vˇzdy naˇc´ıtaj´ı jen nezbytnˇe nutn´e informace o datab´azi, se kterou pr´avˇe pracujete. Po rozvinut´ı dan´e datab´ aze se seznam tabulek i s podrobnostmi zobraz´ı tak´e v hlavn´ım oknˇe aplikace. N´ azvy tabulek jsou podsv´ıceny modˇre. V tomto seznamu lze rychle vyhled´ avat a filtrovat pomoc´ı editaˇcn´ıho ok´enka. Kdyˇz m´ate kurzor v modr´em seznamu tabulek a zaˇcnete ps´at p´ısmena nebo ˇc´ısla, objev´ı se editaˇcn´ı ok´enko a kurzor se pˇresouv´a jen po tˇech tabulk´ ach, kter´e odpov´ıdaj´ı napsan´emu vzoru. Po stisku <Enter> nebo poklepnut´ı na jm´eno tabulky se v hlavn´ım oknˇe zobraz´ı z´ aloˇzka data, ve kter´e je v´ ypis zvolen´e tabulky. V´ ypis se ˇr´ıd´ı druhou n´astrojovou liˇstou, kam se daj´ı zadat limity a filtr. Filtr si aplikace pamatuje pro kaˇzdou tabulku zvl´aˇsˇt, stejnˇe jako seˇrazen´ı, ale o tom v´ıce v kapitole o pr´aci s tabulkou A.6 na stranˇe 35.
Obr´ azek A.4: Micka po pˇripojen´ı a oznaˇcen´ı datab´aze Cel´ y strom objekt˚ u lze aktualizovat ze serveru. M˚ uˇzete zvolit z hlavn´ıho menu Edit - Refresh
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
34
nebo stisknout kl´ avesu v oknˇe stromu, nebo zvolen´ım poloˇzky Refresh v kontextov´em menu2 stromu. Ze stromu objekt˚ u m˚ uˇzete jak´ ykoli n´azev zkop´ırovat do schr´anky pro pouˇzit´ı napˇr´ıklad v PHP skriptu nebo v dokumentech. Pˇr´ıkaz Copy name zvolte z kontextov´eho menu stromu, jak ukazuje obr´ azek A.7 na stranˇe 36. Za zm´ınku jeˇstˇe stoj´ı poloˇzka kontextov´eho menu stromu Properties. Tato poloˇzka zobraz´ı okno vlastnost´ı toho objektu, na nˇemˇz m´ate pr´avˇe kurzor. Vlastnosti pˇripojen´ı k serveru znamenaj´ı v´ ypis Promˇenn´ ych MySQL a aktu´aln´ıho statusu serveru. Vlastnosti datab´aze zobraz´ı seznam tabulek s podrobnostmi a opˇet status serveru. Vlastnosti tabulky otevˇrou dialog pro spr´avu sloupeˇck˚ u a kl´ıˇc˚ u tabulky, podrobnosti opˇet v kapitole A.6. A.4.5
SQL log a stavov´ yˇ r´ adek
Dalˇs´ı uˇziteˇcnou souˇc´ ast´ı je SQL log v doln´ı ˇc´asti okna. Sem se vypisuj´ı veˇsker´e dotazy, kter´ ymi Micka komunikuje s MySQL serverem. Dotazy maj´ı zv´ yraznˇenou syntaxi a zv´ yraznˇen´e n´azvy tabulek. SQL log m´ a sv´e kontextov´e menu, kde jsou nav´ıc dvˇe netradiˇcn´ı poloˇzky. Copy row zkop´ır˚ uje pˇr´ımo cel´ y ˇr´ adek, na nˇemˇz je kurzor do schr´anky, uˇsetˇr´ı n´am tak oznaˇcov´an´ı textu. Poloˇzka Use in SQL Window vezme aktu´aln´ı ˇr´adek a vloˇz´ı jej do SQL okna, kter´e se zobraz´ı a dostane focus3 . Tak m˚ uˇzete snadno a rychle pouˇz´ıt generovan´e dotazy k pˇr´ıpravˇe sv´ ych vlastn´ıch.
Obr´ azek A.5: SQL log a stavov´ y ˇr´adek Jeˇstˇe pod SQL logem je stavov´ y ˇr´ adek. Ten obsahuje nˇekolik pol´ıˇcek. V tuto chv´ıli jsou pro n´as zaj´ımav´e prvn´ı tˇri. V prvn´ım pol´ıˇcku se zobrazuje poˇcet ovlivnˇen´ ych ˇr´adk˚ u posledn´ım dotazem, kter´ y vid´ıte v logu. V z´ avorce hned za n´ım je v procentech poˇcet ovlivnˇen´ ych ˇr´adk˚ u, vztaˇzen´ ych relativnˇe k poˇctu ˇr´ adk˚ u aktu´ alnˇe otevˇren´e tabulky. Hodnota, kter´a je ˇcistˇe informativn´ı, ale v mnoha pˇr´ıpadech zaj´ımav´ a. Napˇr´ıklad, filtrujete-li v tabulce objedn´avek jeˇstˇe nezaplacen´e, zde se okamˇzitˇe dozv´ıte, jak´ y je jejich pod´ıl, a nemus´ıte nic pˇrepoˇc´ıt´avat. Posledn´ı hodnota v tomto pol´ıˇcku je orientaˇcn´ı doba, kterou trvalo vykon´an´ı posledn´ıho dotazu. Do t´eto doby je zapoˇc´ıtan´ a i reˇzie na komunikaci, takˇze u rychl´ ych dotaz˚ u je nepˇresn´a. U n´aroˇcn´ ych dotaz˚ u je vˇsak doba samotn´e komunikace zanedbateln´a. V dalˇs´ım pol´ıˇcku se zobrazje stav a jm´eno aktu´aln´ıho pˇripojen´ı. Ve tˇret´ım pol´ıˇcku je n´azev pr´avˇe otevˇren´e tabulky vˇcetnˇe datab´aze a v z´ avorce poˇcet z´ aznam˚ u v tabulce. Stavov´ y ˇr´adek m´a jeˇstˇe jedno pol´ıˇcko, kam se vypisuje pozice kurzoru v tabulce, to bude zm´ınˇeno v kapitole A.6. A.4.6
Pamˇ eˇ t posledn´ı relace
Kdyˇz pracujete Mickou na nˇejak´e datab´ azi, je pomˇernˇe pravdˇepodobn´e, ˇze pˇri dalˇs´ım spuˇstˇen´ı budete cht´ıt pracovat na t´e sam´e. Proto si Program um´ı zapamatovat, kam jste byli pˇri vypnut´ı programu pˇripojeni, a tuto relaci po dalˇs´ım spuˇstˇen´ı obnov´ı. Pamatuje si server a konkr´etn´ı 2
Kontextov´e menu kaˇzd´eho objektu ve Windows se vyvol´ a kliknut´ım prav´eho tlaˇc´ıtka na dan´ y objekt. Komponenta (vizu´ aln´ı prvek Windows, tlaˇc´ıtko, seznam, strom, editaˇcn´ı okno, ...) m´ a focus, pokud je oznaˇcena, napˇr´ıklad tlaˇc´ıtko, nebo v pˇr´ıpadˇe textov´eho pole v n´ı blik´ a kurzor. Okno s focusem je zpravidla vepˇredu a m´ a barevnˇe odliˇsen pruh z´ ahlav´ı. Focus m˚ uˇze m´ıt vˇzdy jen jedno okno a na nˇem jedna komponenta. 3
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
35
datab´azi. Tato funkce jde vypnout v nastaven´ı programu, Tools - Setting - Environment. V´ıce o nastaven´ı v kapitole A.10 na stranˇe 43.
A.5
Pr´ ace s datab´ az´ı
Aplikace um´ı kompletnˇe pracovat s jednotliv´ ymi datab´azemi na MySQL serveru. S datab´azemi se pracuje, stejnˇe jako s ostatn´ımi objekty v cel´em programu, prim´arnˇe pomoc´ı kontextov´eho menu. Kdyˇz kliknut´ım prav´eho tlaˇc´ıtka myˇsi na objekt ve stromˇe vyvol´ate kontextov´e menu, m˚ uˇzete si povˇsimnout, ˇze ke kaˇzd´e u ´rovni objekt˚ u pˇr´ısluˇs´ı jin´e poloˇzky v tomto menu. Jednotliv´e varianty vid´ıte na obr´ azku A.7 na stranˇe 36.
Obr´ azek A.6: Dialog pro vytvoˇren´ı nebo u ´pravu datab´aze Datab´ azi m˚ uˇzete vytvoˇrit, upravit, odstranit a exportovat. Exportu se podrobnˇe vˇenuje kapitola A.7 na stranˇe 40. K odstranˇen´ı datab´aze nen´ı co dod´avat. Snad jen upozornˇen´ı, ˇze Micka, stejnˇe jako jin´e aplikace pro spr´avu datab´az´ı, nem´a ˇz´adn´e undo4 . To znamen´ a, ˇze ukvapen´e odstranˇen´ı datab´ aze nelze vr´atit. Jedinˇe obnovit ze z´alohy. Pˇred odstranˇen´ım se samozˇrejmˇe zobraz´ı potvrzuj´ıc´ı dotaz ”Opravdu chcete ... ?”. Vytv´ aˇ ren´ı i u ´ prava datab´ aze se prov´ad´ı pomoc´ı dialogu, jeˇz vid´ıte na obr´azku A.6. D´ a se zde zvolit v´ ychoz´ı znakov´ a sada a porovn´an´ı pro celou datab´azi. Novˇe vytvoˇren´a tabulka pak bude implicitnˇe pouˇz´ıvat toto nastaven´ı. Micka zat´ım neum´ı datab´ azi pˇrejmenovat, respektive jednoduch´ y SQL dotaz pro pˇrejmenov´ an´ı se pl´anuje aˇz do dalˇs´ıch verz´ı MySQL. To znamen´a, ˇze pˇrejmenov´an´ı by ˇslo realizovat vytvoˇren´ım nov´e datab´ aze se stejn´ ymi vlastnostmi, ale nov´ ym jm´enem, zkop´ırov´an´ım vˇsech tabulek a zruˇsen´ım p˚ uvodn´ı datab´ aze. Toho se chce tento program vyvarovat.
A.6
Pr´ ace s tabulkou
Cel´a Micka je prim´ arnˇe navrˇzena pro pr´aci s tabulkami. Proto zde nab´ız´ı nejv´ıce moˇznost´ı a funkce zobrazov´ an´ı, u ´prav i navigace jsou nejv´ıce propracovan´e. A.6.1
Struktura a vlastnosti tabulky
Pˇr´ıstup k funkc´ım pro pr´ aci se strukturou a vlastnostmi tabulky je opˇet z kontextov´eho menu stromu objekt˚ u. To vid´ıte na obr´ azku A.7 na stranˇe 36 v ˇc´asti Tabulka. Tabulku m˚ uˇzete vytvoˇrit, upravit, vypr´ azdnit, odstranit, upravit strukturu a exportovat. Export je pops´ an v kapitole A.7 na stranˇe 40. 4
Undo = zpˇet, funkce, kter´ a vr´ at´ı aplikaci, dokument nebo jin´ y objekt do stavu pˇred posledn´ı operac´ı.
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
36
(a) Server
(b) Datab´ aze
(c) Tabulka
Obr´ azek A.7: Kontextov´e menu stromu objekt˚ u A.6.1.1
Vytvoˇ ren´ı nov´ e tabulky
Tabulku m˚ uˇzete vytvoˇ rit zvolen´ım poloˇzky Create table. Objev´ı se dva dialogy, ty vid´ıte na obr´azku A.8. Na vrchu je dialog vlastnost´ı tabulky. Zde vypln´ıte n´ azev tabulky, koment´ aˇr. V´ ybˇer uloˇziˇstˇe (Engine) m˚ uˇze b´ yt pro nezkuˇsen´eho uˇzivatele nejist´ y. Zde doporuˇcujeme nahl´ednout do manu´ alu MySQL k pˇr´ısluˇsn´e verzi serveru, ten je dostupn´ y na . Pro vˇetˇsinu bˇeˇzn´ ych pˇr´ıpad˚ u je vhodn´e zvolit v´ ychoz´ı MyISAM. Zb´ yv´ a jen nastavit znakovou sadu a porovn´ an´ı pro tabulku. Ty budou implicitnˇe pouˇz´ıvat jej´ı textov´e sloupeˇcky, i kdyˇz i u nich se d´ a explicitnˇe nastavit nˇeco jin´eho. Po odsouhlasen´ı tohoto dialogu se dostanete do dalˇs´ıho dialogu pro vytvoˇren´ı struktury, to znamen´a sloupeˇck˚ u a kl´ıˇc˚ u. Dialog vlastnost´ı m˚ uˇzete opˇetovnˇe vyvolat stisknut´ım tlaˇc´ıtka Table vlevo dole. Podrobn´ y popis pr´ ace se strukturou je v n´ asleduj´ıc´ı kapitole A.6.1.2. Obr´azek A.8: Dialog pro vytvoˇren´ı nov´e tabulky A.6.1.2
´ Uprava struktury tabulky
´ Upravou struktury tabulky m´ ame na mysli spr´ avu sloupeˇ ck˚ u a kl´ıˇ c˚ u (index˚ u). Sem se dostanete zvolen´ım poloˇzky Properties z kontextov´eho menu tabulky. Zde doch´ az´ı k mal´e kolizi ˇcesk´e a anglick´e terminologie. V samotn´em
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
37
programu m´ a poloˇzka Properties v´ yznam pr´avˇe struktury tabulky, zat´ımco u ´prava vlastnost´ı tabulky je pod heslem Alter table. Zobraz´ı se dialog Table properties jm´eno tabulky. Ten m´a dvˇe z´aloˇzky, sloupeˇcky a kl´ıˇce.
(a) Sloupeˇcky
(b) Sloupeˇcek
(c) Kl´ıˇc
Obr´ azek A.9: Struktura tabulky
Sloupeˇ cky V oknˇe je seznam vˇsech sloupeˇck˚ u se zobrazen´ ymi d˚ uleˇzit´ ymi vlastnostmi(A.9(a)). Jednotliv´e operace prov´ ad´ı pomoc´ı kontextov´eho menu ke kaˇzd´e poloˇzce. Operace obnovit (Refresh) znovu naˇcte cel´ y seznam z datab´aze. Copy field m´a stejn´ y v´ yznam jako Add field, jen do formul´ aˇre pro sloupeˇcek (A.9(c)) pˇredvypln´ı hodnoty podle zvolen´e poloˇzky. Tento formul´ aˇr se mˇen´ı podle zvolen´eho datov´eho typu. Nab´ıdka datov´ ych typ˚ u a jejich moˇznosti jsou vzaty z verze MySQL 5.1, proto se m˚ uˇze st´at, ˇze u editace niˇzˇs´ı verze server zahl´as´ı chybu. Aplikace je postaven´ a tak, aby takov´ a chyba nevedla ke ztr´atˇe informac´ı.
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
38 Kl´ıˇ ce A.6.1.3
Pro spr´ avu kl´ıˇc˚ u plat´ı stejn´ a pravidla jako pro sloupeˇcky. ´ Uprava tabulky
´ Upravou tabulky m´ ame na mysli zmˇeny vlastnost´ı tabulky jako objektu. V menu je to poloˇzka Alter table. Zobraz´ı se n´am podobn´ y dialog jako u vytv´aˇren´ı nov´e tabulky. M˚ uˇzete zde mˇenit jm´eno tabulky, koment´aˇr, uloˇziˇstˇe a znakovou sadu s porovn´ an´ım. Odsouhlasen´ı dialogu m˚ uˇze v´est aˇz ke tˇrem r˚ uzn´ ym dotaz˚ um serveru podle toho, co jste pˇresnˇe upravili. Tento formul´aˇr, podobnˇe jako formul´aˇr pro u ´pravu datab´ aze, se mˇen´ı podle verze MySQL. Zde uveden´e uk´ azky odpov´ıdaj´ı verzi 4.1 a vyˇsˇs´ı. A.6.2
Data
Spr´ava dat a navigace je navrˇzena tak, aby byla pokud ´ Obr´azek A.10: Uprava tabulky moˇzno co nejpohodlnˇejˇs´ı a z´ aroveˇ n efektivn´ı. Po poklep´an´ı na jm´eno tabulky ve stromˇe objekt˚ u nebo v seznamu tabulek se obsah tabulky zobraz´ı v hlavn´ı ˇc´asti okna. Samotn´a tabulka dat spojuje pohodl´ı pˇr´ım´e editace hodnot a s´ılu tabulkov´eho v´ ybˇeru. A.6.2.1
Editace hodnot
Kaˇzd´a buˇ nka tabulky je editovateln´ a. Dovnitˇr se dostanete poklep´an´ım myˇsi, nebo s kurzorem na dan´e buˇ nce a stiskem kl´ avesy <Enter> nebo . Kaˇzd´a z tˇechto metod vkroˇc´ı do buˇ nky trochu jin´ ym zp˚ usobem. Pokud buˇ nka obsahuje delˇs´ı text, m˚ uˇzete jej editovat ve zvl´aˇstn´ım textov´em oknˇe. Stiskem nebo zvolen´ım Edit cell z kontextov´eho menu zobraz´ıte velk´e textov´e okno. Textov´e pole um´ı pro vˇetˇs´ı pˇrehlednost zalamovat ˇr´adky textu. Bez komunikace se serverem m˚ uˇzete vˇzdy editovat jeden cel´ y ˇr´adek a zmˇeny se poˇslou datab´azi automaticky opuˇstˇen´ım dan´eho ˇr´adku, tedy napˇr´ıklad pˇresunem kurzoru na jin´ y ˇr´adek nebo pˇrepnut´ım do jin´eho okna. Ruˇcnˇe m˚ uˇzete potvrdit zmˇeny stiskem nebo zvolen´ım Operations - Use changes z hlavn´ıho menu, pˇr´ıpadnˇe tlaˇc´ıtkem na n´astrojov´e liˇstˇe. Zmˇeny m˚ uˇzete i zruˇsit, ale jen dokud se neposlaly serveru. Zruˇs´ı se stiskem nebo opˇet z menu nebo n´ astrojov´e liˇsty. Zde plat´ı tak´e pravidlo, ˇze neexistuje ˇz´adn´a funkce zpˇet. Jakmile se zmˇena dat odeˇsle datab´ azi, jedin´a cesta zpˇet je ze z´alohy. Obˇcas potˇrebujete vloˇzit NULL hodnotu. To provedete stiskem <Shift+Space> na zvolen´e buˇ nce nebo v´ ybˇerem Insert null z kontextov´eho menu, hlavn´ıho menu Edit nebo z tlaˇc´ıtkov´e liˇsty. Obnova vˇsech dat je nebo volba z menu. Micka nem´a vestavˇenou kontrolu datov´ ych typ˚ u ani ˇz´adnou jinou kontrolu vstupu. Kv˚ uli rychlosti se ani po kaˇzd´e u ´pravˇe hodnot znovu nenaˇc´ıt´a skuteˇcn´ y ˇr´ adek. M˚ uˇze se tedy st´at, ˇze v programu uvid´ıte nˇeco jin´eho, neˇz leˇz´ı na serveru. Nest´av´ a se to ˇcasto, ale pro kontrolu je vhodn´e obnovit data. Pˇri obnovˇe dat si tabulka pamatuje stav zobrazen´ı a pozici kurzoru, proto nen´ı tˇreba m´ıt obavy ze ztr´aty peˇclivˇe nalezen´e polohy v tabulce. A.6.2.2
Oznaˇ cov´ an´ı a kop´ırov´ an´ı hodnot
Z tabulky se d´a kop´ırovat jedna nebo v´ıce oznaˇcen´ ych bunˇek do schr´anky . Pokud je to v´ ybˇer v´ıce buˇ nek, v textov´e schr´ ance jsou sloupce oddˇeleny znakem tabul´ator (#9, \t) a ˇr´adky znakem odˇr´ adkov´ an´ı (#13, \n).
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
39
Obd´eln´ıkov´ y v´ ybˇer se prov´ ad´ı taˇzen´ım myˇs´ı pˇres tabulku. Pokud chcete oznaˇcit cel´e ˇr´adky, ale museli byste skrolovat daleko doprava, staˇc´ı oznaˇcit jen jeden sloupec pˇres poˇzadovan´e ˇr´adky a z kontextov´eho menu zvolit Select rows <Shift+Ctrl+A>. Oznaˇcit cel´e ˇr´adky lze tak´e taˇzen´ım myˇs´ı v pr´ azdn´e oblasti u ´plnˇe vpravo mezi koncem tabulky a scrollbarem. A.6.2.3
Operace s ˇ r´ adky
ˇ adky, jin´ R´ ymi slovy z´ aznamy v tabulce m˚ uˇzete pˇrid´avat a odstraˇ novat . Tyto pˇr´ıkazy jsou dostupn´e tak´e z kontextov´eho menu, hlavn´ıho menu Edit nebo n´astrojov´e liˇsty. Opˇet plat´ı, ˇze operace s ˇr´ adky jsou nevratn´e. A.6.2.4
Zobrazen´ı
Zobrazen´ı dat v tabulce ovlivˇ nuje nˇekolik faktor˚ u.
Obr´ azek A.11: Nastaven´ı limit˚ u a filtr
Limity Limity jsou dva a t´ ykaj´ı se ˇr´adk˚ u tabulky. Limit Od ˇr´ık´a, od kolik´at´eho ˇr´adku ˇ adky se poˇc´ıtaj´ı vˇzdy od 0. Druh´ se budou data zobrazovat. R´ y limit ˇr´ık´a, kolik ˇr´adk˚ u se zobraz´ı. Zpravidla je zbyteˇcn´e zobrazovat celou tabulku, to b´ yv´a zdlouhav´e a n´aroˇcn´e na pamˇeˇt. Skuteˇcn´ y celkov´ y poˇcet ˇr´ adk˚ u se zobrazuje ve stavov´em ˇr´adku. Chceme-li tedy zobrazit prvn´ıch 100 ˇr´adk˚ u, limity budou 0, 100. Dalˇs´ıch 100 ˇr´adk˚ u budou limity 100, 100. Limity se zad´ avaj´ı ve druh´em ˇr´ adku n´ astrojov´e liˇsty. Po zmˇenˇe limitu se mus´ı obnovit zobrazeni Refresh . Filtr Filtr je mnoˇzina podm´ınek dotazu. Podm´ınky se daj´ı zad´avat ruˇcnˇe do textov´eho pole nad tabulkou. Cel´ y vepsan´ y ˇr´ adek se zaˇrad´ı do dotazu serveru, mus´ıte tedy sami kontrolovat spr´avnou syntaxi. V pˇr´ıpadˇe chyby program vyp´ıˇse chybovou hl´aˇsku zaslanou MySQL. Pro snaˇzˇs´ı zad´ av´ an´ı podm´ınek m´ a Micka speci´aln´ı podmenu v kontextov´em menu tabulky. Kdyˇz na nˇejak´e buˇ nce vyvol´ ate tuto nab´ıdku, automaticky se pˇredvypln´ı poloˇzky tak, ˇze je nab´ıdka filtru vztaˇzen´ a ke konkr´etn´ımu sloupeˇcku a buˇ nce. Staˇc´ı si pak vybrat jednu z moˇznost´ı a ta se pˇrip´ıˇse do pole filtru spolu s logickou spojkou and. Menu je vidˇet na obr´azku A.11. Druh´a poloˇzka je jm´eno sloupeˇcku vztaˇzen´e k obsahu schr´anky Windows. Vpravo od textov´eho pole je tlaˇc´ıtko, kter´e zruˇs´ı filtr a obnov´ı zobrazen´ı. Aplikace si pamatuje historii vˇsech filtr˚ u od spuˇstˇen´ı, jsou uvedeny v roletce. Tak´e si pamatuje aktivn´ı filtr pro kaˇzdou tabulku. Pokud tedy pˇrep´ın´ate mezi v´ıce tabulkami nebo datab´azemi, m˚ uˇzete se bez u ´hony vr´atit zpˇet k filtrovan´e tabulce.
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
40
Seˇ razen´ı Pˇri prvn´ım naˇcten´ı tabulky od spuˇstˇen´ı programu jsou data seˇrazena, tak jak je poslal server. Daj´ı se pak seˇradit vzestupnˇe nebo sestupnˇe podle kter´ehokoli sloupeˇcku a toto nastaven´ı si program v r´amci jednoho spuˇstˇen´ı pamatuje pro kaˇzdou tabulku. Neˇrad´ı se hned po jednom kliku na n´ azev sloupeˇcku, jak je to bˇeˇzn´e u jin´ ych aplikac´ı. Pokud totiˇz m´ ate velmi dlouhou tabulku a chcete ji seˇradit sestupnˇe, mus´ıte kliknout dvakr´at a tedy ˇradit Obr´azek A.12: Menu sloupeˇcku dvakr´at a to trv´ a dlouho, zvl´ aˇsˇt pokud na dan´em sloupeˇcku nen´ı index. Zde se po kliku lev´ ym talˇc´ıtkem myˇsi na n´azev zobraz´ı menu podle obr´azku A.12, ze kter´eho si vyberete, jak chcete tabulku seˇradit. Minimalizace sloupeˇ ck˚ u Pro vyˇsˇs´ı pˇrehlednost v tabulce s mnoha sloupeˇcky m˚ uˇzete nˇekter´e, kter´e v´ as nezaj´ımaj´ı, minimalizovat. Pˇr´ıkaz Minimize n´ azev sloupeˇcku najdete v menu sloupeˇcku, viz obr´ azek A.12. Po pˇrenaˇcten´ı tabulky Refresh se opˇet vˇsechny sloupeˇcky obnov´ı do automatick´e velikosti. A.6.2.5
Navigace
ˇ v aktu´aln´ım sloupci, Vyhled´ av´ an´ı V zobrazen´e tabulce lze vyhled´avat fulltextovˇe. Bud ˇr´adku, nebo v cel´e tabulce po ˇr´ adc´ıch. Vyhled´av´a se na ˇc´asteˇcnou shodu kdekoli v textu. Pˇr´ıkaz vyhledat najdete v hlavn´ım menu Search - Find nebo standardn´ı kl´avesov´a zkratka . Samozˇrejmˇe nechyb´ı funkce Naj´ıt dalˇs´ı Search - Find next . Ale pozor, vyhled´av´a se jen v aktu´ aln´ım zobrazen´ı bez komunikace se serverem. J´ıt na sloupeˇ cek Dalˇs´ı pom˚ ucka pro rychlou navigaci je funkce J´ıt na sloupeˇcek Search - Go to column . Tato funkce je dostupn´a i z tlaˇc´ıtkov´e liˇsty a menu sloupeˇcku z obr´azku A.12. V lev´e ˇc´asti tabulky se zobraz´ı seznam sloupeˇck˚ u, kde m˚ uˇzete vyhled´avat psan´ım prvn´ıch p´ısmen n´azvu.
A.7
Export a import
A.7.0.6
Export
Program Micka m´ a n´ astroj pro export do SQL (pro MySQL) a do CSV5 . Exportovat lze nˇekolik vybran´ ych tabulek nebo v´ ybˇer z jedn´e tabulky. Pˇr´ıkaz pro export je v kontextov´em menu datab´azov´ ych objekt˚ u a zobrazen´e tabulky. Exportovac´ı dialog je okno se z´aloˇzkami s nastaven´ımi pro kaˇzd´ y form´ at. V´ ystup lze nasmˇerovat do souboru nebo do schr´anky. Export do schr´anky je v´ yjimeˇcn´a funkce, kter´a se hod´ı napˇr´ıklad pˇri rychl´em pˇrenesen´ı v´ ybˇeru dat nebo jen struktury v´ıce tabulek z´aroveˇ n do jin´e datab´ aze nebo jin´e aplikace. Dalˇs´ı uplatnˇen´ı je pˇr´ı kop´ırov´an´ı cel´e tabulky do tabulkov´eho procesoru, napˇr´ıklad Excelu nebo Calcu. Nemus´ıte ukl´adat soubor a pak jej opˇet otev´ırat. Pˇri exportu do SQL si m˚ uˇzete zvolit, zda generovat pro kaˇzd´ y z´aznam v tabulce samostatn´ y insert6 nebo zaˇradit v´ıce z´ aznam˚ u do jednoho insertu. Druh´a varianta je u ´spornˇejˇs´ı pˇri ukl´ad´an´ı v´ ysledn´eho textov´eho souboru a hlavnˇe pˇri n´asleduj´ıc´ım importu minimalizuje poˇcet dotaz˚ ua t´ım jej v´ yraznˇe urychl´ı. Urˇcitou malou nev´ yhodou m˚ uˇze b´ yt sloˇzitˇejˇs´ı v´ ybˇer jen nˇekter´ ych ˇr´adk˚ u z exportu. 5 6
Form´ at prost´eho textu, kdy jsou data oddˇelena libovoln´ ym znakem. Dotaz insert... slouˇz´ı v SQL k pˇrid´ av´ an´ı do tabulky.
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
(a) SQL
(b) CSV
Obr´ azek A.13: Dialog pro export
41
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
42 A.7.0.7
Import
Micka nem´a speci´ aln´ı n´ astroj pro import dat. Soubor ve form´atu SQL lze jednoduˇse naˇc´ıst do SQL okna a spustit. V´ıce v n´ asleduj´ıc´ı kapitole A.8.
A.8
SQL okno
SQL window je samostatnˇe plovouc´ı okno, ˇc´asteˇcnˇe napojen´e na hlavn´ı okno. Nen´ı to samostatn´a aplikace, kter´ a by byla vidˇet na liˇstˇe syst´emu Windows, ale ani to nen´ı mod´aln´ı 7 okno . Je to zkr´ atka samostatn´e okno. Micka si stejnˇe jako u hlavn´ıho okna pamatuje jeho pozici a rozvrˇzen´ı. D´ a se vyvolat z menu Window - SQL window . Pˇrep´ınat mezi hlavn´ım a SQL oknem se d´ a kl´ avesou . Okno je rozdˇeleno na dvˇe z´ akladn´ı ˇca´sti. V horn´ı ˇc´asti je textov´e pole a v doln´ı prostor pro zobrazov´an´ı v´ ysledk˚ u. Do horn´ı ˇc´ asti lze zobrazit seznam tabulek z aktu´aln´ı datab´aze a seznam sloupeˇck˚ u z aktu´ aln´ı tabulky pro snadn´e vkl´ad´an´ı do textov´eho pole. Seznamy se zobraz´ı tlaˇc´ıtkem Show lists.
Obr´ azek A.14: SQL okno Do textov´e oblasti lze ps´ at ruˇcnˇe jeden nebo v´ıce dotaz˚ u. M˚ uˇzete sem naˇc´ıst textov´ y soubor. Celou oblast m˚ uˇzete uloˇzit do souboru. Jednotliv´e dotazy nebo s´erii dotaz˚ u lze uloˇzit do obl´ıben´ ych a odtud je kdykoli v budoucnu pouˇz´ıvat. Po kliknut´ı na tlaˇc´ıtko Run se spust´ı cel´a s´erie dotaz˚ u, kter´e jsou zde napsan´e. Dole se zobraz´ı vˇzdy v´ ysledek posledn´ıho dotazu. Vˇsechny vykon´avan´e dotazy se zapisuj´ı do SQL logu v hlavn´ım oknˇe a informace o dotazu se tak´e zobrazuje ve stavov´em ˇr´adku hlavn´ıho okna, viz A.4.5 na stranˇe 34. Editor zv´ yrazˇ nuje syntaxi SQL a n´ azvy tabulek z aktu´aln´ı datab´aze. M´a funkci dokonˇcov´an´ı, ˇ takˇze bud automaticky nebo po stisku v´am nab´ıdne seznam tabulek a sloupeˇck˚ u. 7 Kdyˇz aplikace zobraz´ı mod´ aln´ı okno, uˇzivatel m´ a pˇr´ıstup jen do tohoto okna a ne do cel´e aplikace. Jsou to vˇsechny dialogy i tˇreba chybov´ a hl´ aˇska, kterou dokud neodklepnete, vis´ı nad zastavenou aplikac´ı
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
A.9
43
Okno proces˚ u
Tento n´astroj zobrazuje jednoduch´ y seznam proces˚ u, kter´ y se v pravideln´ ych intervalech obnovuje. M˚ uˇzete tak sledovat provoz na serveru. Funkce Pause umoˇzn ˇuje zastavit monitorov´ an´ı ve chv´ıli, kter´ a je zaj´ımav´ a. Vyvol´ a se Window - Process list.
Obr´azek A.15: Okno proces˚ u
A.10
Nastaven´ı
Zvolen´ım poloˇzky Tools - Setting z hlavn´ıho menu zobraz´ıte dialog nastaven´ı. Ten m´a dvˇe z´aloˇzky, MySQL a Prostˇred´ı (Environment). Na z´aloˇzce MySQL se nastavuje, zda v dotazech pouˇz´ıvat zpˇetn´e apostrofy. MySQL umoˇzn ˇuje t´ımto znakem uvozovat n´azvy datab´az´ı, tabulek a sloupeˇck˚ u. Mus´ı se pouˇz´ıvat u n´azv˚ u, kter´e neodpov´ıdaj´ı SQL normˇe, napˇr´ıklad tabulka s n´azvem 2002. Obvykle nen´ı potˇreba. Dalˇs´ı nastaven´ı se t´ yk´ a v´ ystupn´ı znakov´e sady. Pˇred nastaven´ım t´eto poloˇzky je tˇreba se pˇripojit k MySQL serveru, aby program mohl zjistit seznam dostupn´ ych znakov´ ych sad. Z´aloˇzku Prostˇred´ı nen´ı potˇreba vysvˇetlovat.
A.11
Aktualizace
Standardn´ı distribuce Micky obsahuje i n´astroj pro automatickou aktualizaci. Zvol´ıte-li v menu Tools - Update Micka, aplikace Micka se konˇc´ı a spust´ı aktualizaˇcn´ı program. Pokud ten zjist´ı, ˇze je serveru dostupn´ a novˇejˇs´ı verze, st´ahne j´ı, nainstaluje a spust´ı.
A.12
Seznam kl´ avesov´ ych zkratek
Glob´ aln´ı Pˇripojit/Odpojit Hlavn´ı/SQL okno Zavˇr´ıt <Shift+Ctrl+F11> Nastaven´ı <Shift+Ctrl+F12> Nastaven´ı pˇripojen´ı Hlavn´ı okno Obnovit objekty datab´ aze/data SQL okno
44
ˇ ´ILOHA A. INSTALACN ˇ ´I A UZIVATELSK ˇ ´ PR ˇ ´IRUCKA ˇ PR A
Vlastnosti srveru/datab´ aze/tabulky <Shift+Ctrl+Del> Odstranit tabulku Kop´ırovat n´ azev objektu/v´ ybˇer tabulky Potvrdit zmˇeny Zruˇsit zmˇeny Naj´ıt Naj´ıt dalˇs´ı J´ıt na sloupeˇcek Vloˇzit ˇr´ adek Odstranit ˇr´ adek Upravit buˇ nku v textov´em oknˇe Zobrazit obsah buˇ nky <Shift+Space> Vloˇzit null hodnotu <Shift+Ctrl+A> Oznaˇcit ˇr´ adky SQL okno Spustit dotazy Uloˇzit do souboru Nab´ıdka automatick´eho dokonˇcen´ı (okno editoru) Ve vˇ sech textov´ ych oknech funguj´ı standardn´ı kl´ avesov´ e zkratky Windows , Kop´ırovat , <Shift+Ins> Vloˇzit Vyjmout Oznaˇcit vˇse
ˇ ´ILOHA B. DEKLARACE OBJEKTU TSENMYSQL PR
45
B Deklarace objektu TSenMySQL TSenMySQL= object private MySQLClient: TMysqlClient; public ActualDatabase: string; ActualTable: TTableInfo; // table, which is open ServerVersion: integer; // 40002 (4.0.2), 41, 50, 50102 (5.1.2), ...
procedure Create; // constructor function ShowError(Error: string; EnableCancelBtn: boolean): integer; function Connected: boolean; function Connect(Hostname: string; Username: string; Password: string; Database: string; Timeout, Port: integer): boolean; procedure Disconnect; function SendQuery(Query1: AnsiString; var sg: TStringGrid; EnableCancelBtn: boolean; GetData: boolean= TRUE; OnlyRows: TRowsSet= []): integer; // if data then 0, mrResult from error dialog function SendEasyQuery(Query1: AnsiString): TArrayS; // return first col function SendEasyQueryOne(Query1: AnsiString): string; // return first cell procedure LoadDatabaseTree(DatabaseName, Table: string; var Tree: TTreeView; NoExpand: boolean= FALSE); function LoadTableData(DatabaseName, Table: string; var sg: TStringGrid; OrderBy: string; Descending: integer; Filter: string; LimitFrom, LimitCount: integer): integer; // if data then 0, else 1 procedure UseDatabase(DatabaseName: string); function ConnectionProperties(var sg1, sg2: TStringGrid): integer; // like sendquery function DatabaseProperties(DatabaseName: string; var sg1, sg2: TStringGrid): integer; // like sendquery function TableProperties(DatabaseName: string; TableName: string; var sg1, sg2: TStringGrid): integer; // like sendquery procedure UpdateCommand(DatabaseName, TableName, SetS, WhereS: string; Limit: integer); procedure DeleteCommand(DatabaseName, TableName, WhereS: string; Limit: integer); procedure InsertCommand(DatabaseName, TableName, SetS: string); function ShowCreateTable(DatabeseName, TableName: string): string; function ShowCreateDatabase(DatabeseName: string): string; procedure DropTable(DatabaseName1, TableName1: string); procedure EmptyTable(DatabaseName1, TableName1: string); procedure RenameTable(DatabaseName1, TableName1, NewName1: string); procedure CloseActualTable; function GetCollationList: TStrings; function GetCharsetList: TStrings; function GetEngines: TStrings; procedure CreateDatabase(Name, Charset, Collation: string); procedure AlterDatabase(Name, NewName, Charset, Collation: string); procedure DropDatabase(DatabaseName1: string); function LastError: string; function ExportToMySQL(Query1: AnsiString; TableName: string;
46
ˇ ´ILOHA B. DEKLARACE OBJEKTU TSENMYSQL PR
OneRowOneQuery: boolean; var Progressbar: TProgressbar): TStrings; function ExportToCSV(Query1: AnsiString; TableName: string; var Progressbar: TProgressbar; Headline: boolean; Delimiter: char; NullString: string; QuoteType: integer; QuoteChar: string): TStrings; end;
ˇ ´ILOHA C. OBSAH PRILO ˇ ˇ EHO ´ PR ZEN CD
47
C Obsah pˇ riloˇ zen´ eho CD Souˇc´ast´ı diplomov´e pr´ ace je pˇriloˇzen´e CD se samotnou aplikac´ı, s jej´ımi zdrojov´ ymi k´ody a elektronickou verz´ı t´eto zpr´ avy. Obsah CD m´a n´asleduj´ıc´ı strukturu: Micka\ - Adres´ aˇr se spustitelnou verz´ı Micka src\ - Adres´ aˇr s kompletn´ımi zdrojov´ ymi k´ody, vˇcetnˇe pouˇzit´ ych komponent dp micka.pdf - Elektronick´ a verze tohoto dokumentu