3. Příprava dat

V této kapitole bude demonstrováno vytvoření nové databáze, uživatele, tabulkového prostoru apod. Poté budou vytvořeny jednoduché tabulky a naplněny daty. Na těchto datech budou v dalších kapitolách předvedeny možnosti prezentace a správy dat na internetu.

3.1 Návrh datové základny

Pro ilustraci byla zvolena fiktivní studijní skupina, u které budou evidovány zapsaní studenti (včetně doprovodných údajů) a jejich výsledky jednotlivých testů v daném předmětu.

Datovou základnu budou tvořit dvě tabulky (viz. Obr. 3.1):

Jako unikátní identifikační číslo může sloužit např. rodné číslo – zde pro tento účel poslouží jednoduché pořadové číslo. Toto identifikační číslo bude zvoleno jako primární klíč v tabulce Studenti a zároveň jako odkaz v tabulce Testy – tzv. cizí klíč.
Tabulka Testy obsahuje výsledky z jednoho konkrétního předmětu. Pro další předměty by existovaly totožné tabulky (s jiným jménem popřípadě jiným počtem testů – sloupců). Jiná, výhodnější, struktura datové základny pro konkrétní aplikaci bude popsána v kapitole 5.

Datové typy jednotlivých sloupců (viz. přehled níže):

§         Email – VARCHAR2 (40)

Nejpoužívanější datové typy Oracle8i [1]:

Datový typ

Parametry

Popis

CHAR(d)

d = 1 až 2000

Řetězec znaků s pevnou délkou. Implicitní délka je 1, maximální délka je d.

DATE

 

Datum v rozsahu 1.1. 4712 př. n. l. až 31.12. 4712 n. l. Je to sedmibajtové číslo, které obsahuje i čas v hodinách, minutách a sekundách.

FLOAT(p)

p = 1 až 126

Reálné číslo. Parametr p určuje přesnost.

LONG

 

Řetězec znaků s proměnnou délkou (max. 2 GB).

NCHAR(d)

d = 1 až 2000

Jako typ CHAR + podpora národních abeced.

NUMBER(p,d)

p = 1 až 38

d = -84 až 127

p je počet číslic

d je počet desetinných míst

VARCHAR2(d)

d = 1 až 4000

Řetězec znaků proměnné délky, kde d je maximální počet znaků.

3.2 Vytvoření databáze

Úvodní databázi může (volitelně) vytvořit již instalátor Oracle8i. Jsou v ní předvytvořeny všechny základní struktury jako uživatelé, role, „defaultní“ profil, tabulkové prostory s datovými soubory apod.
Pokud jsme databázi při instalaci nevytvořili nebo chceme vytvořit novou, použijeme Database Configuration Assistant. Tento asistent zároveň umožňuje existující databázi smazat či změnit její parametry.

Postup:

  1. Po spuštění asistenta vybereme Create a database a pokračujeme Þ Next
  2. Zvolíme Typical (vytvoří standardní databázi s minimální nutností zásahů ze strany uživatele – pouze identifikace databáze – viz. bod 4)           Þ Next
  3. Jako metodu zvolíme Copy existing database files from the CD (databáze s běžným nastavením – dostupné soubory jsou nakopírovány z CD – nejrychlejší metoda vytvoření). Pokud chceme parametry volit ručně nebo CD nemáme, zvolíme druhou možnost.  Þ Next
  4. Identifikace databáze:
    Global Database Name je plné jméno databáze, které ji identifikuje v rámci celé sítě. Zadává se ve tvaru:

database_name.domain    // jméno_databáze.jméno_domény

Jméno domény lze najít v menu Start Þ Settings Þ Control Panel Þ Network. Můj počítač není v síti a doména je pouze pojmenována DOMAIN.

SID (System Identifier Database) je jméno databáze unikátní v rámci počítače. Defaultně je to část database_nameGlobal Database Name, ale lze změnit.
Moje konkrétní hodnoty:
Global Database Name: DBATEST.DOMAIN
SID: DBATEST


  1. Potvrdíme hlášení o umístění souborů databáze. Implicitně je to oracle_base\oradata\database_name – zde konkrétně (viz. dodatek A): D:\Oracle\oradata\test2  
  2. Potvrdíme hlášení o jméně databáze a o systémových uživatelích s hesly.
    Hlavní předinstalovaní uživatelé nové databáze jsou:

Uživatel

Heslo

Popis

SYSTEM

manager

DBA [1]

SYS

change_on_install

Systémový DBA

INTERNAL

oracle

Alias pro SYS

  1. Po několika minutách proběhne vytvoření databáze. Potvrdíme informační hlášení o Global Database Name, SID a přístupových heslech (viz. bod 6).

3.3 Vytvoření objektů v databázi

Nyní budou v databázi vytvořeny potřebné objekty pomocí nástroje DBA Studio, které poskytuje požadované funkce v grafické podobě. Zároveň s tím bude uveden vygenerovaný SQL kód, který by vytvořil stejné objekty např. v prostředí SQL*Plus Worksheet.

3.3.1 Vstup do databáze

Po spuštění DBA Studia je nutné nově vytvořenou databázi „přidat do stromu“. To provedeme příkazem z menu File Þ Add Database To Tree… a v následném okně vyplníme hodnoty v poli Add a database manually:

-          Hostname: SERVER (= jméno počítače, viz. Start Þ Settings Þ Control Panel Þ Network)

-          Port Number: 1521 (ponecháme)

-          SID: DBATEST (= jméno databáze - viz. kapitola 3.2, bod 4)

-          Net Service Name: DBATEST_SERVER (generuje se automaticky)

Ve stromu v levé části okna se objeví nová databáze pod jménem DBATEST_SERVER (resp. jméno služby – Service Name). K databázi se připojíme příkazem z menu File Þ Connect… Přihlásíme se jako databázový administrátor (Username = SYS),  který má implicitní heslo (Password) change_on_install. Po přihlášení se v rámci databáze zobrazí jednotlivé správcovské nástroje, které budou použity v dalších kapitolách.

3.3.2 Tabulkový prostor a datový soubor

Tabulkový prostor (a zároveň i datový soubor) vytvoříme pomocí nástroje Storage Manager. Z menu zvolíme Object Þ Create... nebo použijeme ikonu v levé nástrojové liště.

  1. Z nabídky objektů vybereme Tablespace a pokračujeme Þ Create
  2. Vyplníme jméno – Name: CVICENI  (to bude zároveň implicitní jméno datového souboru v uvedeném adresáři – CVICENI.ora)   
    Velikost souboru (Size) postačí: 2 MB  (v případě naplnění této velikosti se bude datový soubor automaticky zvětšovat)
  3. Zvolíme Þ Create a potvrdíme informační hlášení OK
SQL kód:

CREATE TABLESPACE "CVICENI"
LOGGING DATAFILE 'D:\ORACLE\ORADATA\DBATEST\CVICENI.ora'
SIZE 2M EXTENT
MANAGEMENT LOCAL;

3.3.3 Nový uživatel resp. schéma

Nového uživatele (resp. schéma) vytvoříme s využitím nástroje Security Manager – s přihlášením k databázi stále jako uživatel SYS.

1.      Z nabídky Object Þ Create vybereme User a pokračujeme Þ Create

  1. Vyplníme jméno uživatele Name: HELMUT a 2x heslo – Enter resp. Confirm Password (také HELMUT)
  2. V poli Tablespaces vybereme jako Default v předchozí kapitole vytvořený tabulkový prostor CVICENI
  3. Na druhé záložce s názvem Role přiřadíme uživateli, kromě standardní role CONNECT, ještě DBA a RESOURCE – viz. popis níže. Výběr provedeme přesunem šipkou z horního seznamu do spodní části okna.
  4. Zvolíme Þ Create a potvrdíme informační hlášení OK
SQL kód:

CREATE USER "HELMUT"             //vytvoření uživatele
PROFILE "DEFAULT"
IDENTIFIED BY "helmut"
DEFAULT TABLESPACE "CVICENI" TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;
GRANT "CONNECT" TO "HELMUT";     //přiřazení rolí uživateli
GRANT "DBA" TO "HELMUT";
GRANT "RESOURCE" TO "HELMUT";

Hlavní předinstalované role

CONNECT

Umožňuje připojování k databázi.

RESOURCE

Umožňuje vytváření objektů – tabulky, pohledy atd.

DBA

Umožňuje administrátorské funkce jako např. vytváření uživatelů nebo změna struktury tabulek.

3.3.4 Vytvoření tabulek

Tabulky vytvoříme pomocí nástroje Schema Manager – nyní už pod novým uživatelským jménem a heslem (helmut / helmut). Od této chvíle budou vytvořené objekty zahrnuty (a identifikovány) ve schématu HELMUT.
Z menu opět zvolíme Object Þ Create a vybereme Table. Na spodní straně okna je možnost zaškrtnout Use Wizard, což proces vytvoření tabulky rozdělí do jednotlivých kroků – každý v samostatném okně. Bez použití této volby jsou všechny přístupny v jednom okně s více záložkami. Tento druhý způsob bude nyní popsán.

Tabulka STUDENTI

  1. Jméno tabulky – Name: STUDENTI
  2. Vybereme Schema: HELMUT
  3. Vybereme Tablespace: CVICENI
  4. V poli Define Columns nastavíme sloupce – viz. kapitola 3.1
    Jméno sloupce (Name), Datový typ (Datatype) + příslušné parametry
    U sloupce ID zaškrtneme v pole Nulls? – musí vždy obsahovat hodnotu
  5. V záložce Constraints nastavíme sloupec ID jako primární klíč (primary) – viz. kapitola 1.1

6.      Zvolíme Create a potvrdíme vytvoření OK

SQL kód

CREATE TABLE "HELMUT"."STUDENTI"(         //vytvoření tabulky
"JMENO" VARCHAR2(15),
"PRIJMENI" VARCHAR2(20),
"ID" NUMBER(2) NOT NULL,
"ROCNIK" NUMBER(1),
"KRUH" NUMBER(2),
"EMAIL" VARCHAR2(40),
PRIMARY KEY("ID"))
TABLESPACE "CVICENI";

Tabulka TESTY

Podobně jako u předchozí tabulky:

  1. Jméno tabulky – Name: TESTY
  2. Vybereme Schema: HELMUT
  3. Vybereme Tablespace: CVICENI
  4. V poli Define Columns nastavíme sloupce – viz. kapitola 3.1  
    Jméno sloupce (Name), Datový typ (Datatype) + příslušné parametry          
    U sloupce ID „zakážeme“ hodnoty Null a navíc u testů nastavíme implicitní hodnotu (Default Value) na „0“ – pro případné pozdější použití[2].
  5. V záložce Constraints nastavíme sloupec ID jako cizí klíč (foreign) – odkaz na sloupec ID v tabulce STUDENTI.
    Name: CIZI (libovolné)
    Type: FOREIGN
    Referenced Schema: HELMUT
    Referenced Table: STUDENTI
    Table Columns i Referenced Columns: ID

6.      Zvolíme Create a potvrdíme vytvoření OK

SQL kód

CREATE TABLE "HELMUT"."TESTY"(        //vytvoření tabulky
"ID" NUMBER(2) NOT NULL,
"TEST1" NUMBER(1) DEFAULT 0,
"TEST2" NUMBER(1) DEFAULT 0,
"TEST3" NUMBER(1) DEFAULT 0,
"TEST4" NUMBER(1) DEFAULT 0,
CONSTRAINT "CIZI" FOREIGN KEY("ID")
REFERENCES "HELMUT"."STUDENTI"("ID"))
TABLESPACE "CVICENI";

3.2 Vstup dat

Tabulka STUDENTI bude naplněna údaji několika (cca 10) studentů a tabulka TESTY smyšlenými hodnotami výsledků testů.
Nové hodnoty do tabulky je možno zadat buď SQL příkazy (INSERT) nebo pomocí utility Table Data Editor v rámci Schema Manageru.
Údaje budou zadávány bez diakritiky, neboť v tomto případě nebyla k dispozici podpora znaků české národní abecedy.

Vstup pomocí SQL příkazů

Pro práci s SQL příkazy je možno použít SQL Plus (serverová komponenta – viz. kapitola 2.2.1) nebo lépe SQL*Plus Worksheet, který poskytuje pohodlné uživatelské rozhraní (viz. kapitola 2.2.3).
Po spuštění SQL*Plus Worksheet se přihlásíme jménem a heslem (helmut/helmut) + zadáme Service Name (dbatest_server).
Všechny příkazy musí končit středníkem a „spouští“ se klávesou F5 nebo ikonou Execute.

Přidání záznamu:

INSERT INTO studenti VALUES ('Ales', 'Burghardt', '1', '5', '62', 'burgy@email.cz');

Jména jednotlivých sloupců není třeba zadávat, pokud přidáváme celý řádek a uvedené hodnoty jsou v příslušném pořadí.

Přidání potvrzeno:

1 row created.

Takto můžeme přidat i ostatní řádky.

Potvrzení změn v tabulce:

Všechny prováděné změny (dohromady jedna transakce) se ukládají do odkládacího prostoru (Rollback Segment). Aby se všechny změny uložily do databáze, musí se potvrdit příkazem COMMIT. Stornování změn se provede příkazem ROLLBACK.

Commit complete.

Table Data Editor

Table Data Editor je nástroj v rámci Schema Manageru, který umožňuje v grafické podobě editovat (přidávat, mazat, měnit) a třídit data v tabulce. Zároveň obsahuje i Graphical Select Mode, který dovoluje tabulku dotazovat (příkaz SELECT) v grafické i klasické podobě. Další funkcí tohoto nástroje je Save List, která umožňuje tabulku, nebo zvolené sloupce, uložit do souboru jako tabulku HTML[3], Text nebo hodnoty oddělené čárkou (pro tabulkové procesory jako MS Excel).

Přihlásíme se do DBA Studia – viz. kapitola 3.3.1 a při zaškrtnuté volbě v menu View Þ By Schema nalistujeme ve stromové struktuře požadovanou tabulku – Schema Þ HELMUT Þ Tables Þ STUDENTI. Na této tabulce klikneme pravým tlačítkem myši a zvolíme Table Data Editor.
Nyní lze hodnoty zadávat přímo do polí v podobě listu tabulkového procesoru a po provedení potvrdit transakci Þ Apply.

Stejným způsobem naplníme daty i tabulku TESTY.

 
 

[1] DBA (DataBase Administrator) – Databázový administrátor

[2] Hodnota NULL je neznámá hodnota (např. NULL + 5 = NULL). Bez nastavení implicitní hodnoty by se při výpočtech musela hodnota NULL převádět „na nulu“ pomocí speciální funkce NVL – např. NVL(TEST1, 0).

[3] HTML (HyperText Markup Language) je jazyk používaný pro vytvoření webových stránek.