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.
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.
§ Email – VARCHAR2 (40)
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ů. |
Ú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.
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_name
z Global Database Name, ale lze změnit.
Moje konkrétní hodnoty:
Global Database Name: DBATEST.DOMAIN
SID: DBATEST
Uživatel |
Heslo |
Popis |
SYSTEM |
manager |
DBA [1] |
SYS |
change_on_install |
Systémový DBA |
INTERNAL |
oracle |
Alias pro SYS |
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.
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.
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ě.
CREATE TABLESPACE "CVICENI"
LOGGING DATAFILE 'D:\ORACLE\ORADATA\DBATEST\CVICENI.ora'
SIZE 2M EXTENT
MANAGEMENT LOCAL;
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
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";
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. |
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.
6. Zvolíme Create a potvrdíme vytvoření OK
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";
Podobně jako u předchozí tabulky:
6. Zvolíme Create a potvrdíme vytvoření OK
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";
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.
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.
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í.
1 row created.
Takto můžeme přidat i ostatní řádky.
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 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.