lab 8 - Instytut Sterowania i Systemów Informatycznych

Transkrypt

lab 8 - Instytut Sterowania i Systemów Informatycznych
Laboratorium 8: Programowanie baz danych typu klient/serwer
- InterBase (Cz˛eść pierwsza)
dr inż. Marcin Witczak
Instytut Sterowania i Systemów Informatycznych, Uniwersytet Zielonogórski
Przed przystapieniem
˛
do wykonywania ćwiczenia prosz˛e zapoznać si˛e z informacjami podanymi w pliku
Borland_InterBase.pdf.
1
Rejestracja, logowanie do serwera i tworzenie bazy danych
1. Uruchomić IBConsole (pasek Start, pozycja InterBase).
2. Wybrać z Server opcj˛e RegisterServer
• W polu Description wprowadzić opis serwera, np. LocalServer
• Wprowadzić nazw˛e użytkownika i hasło, tzn.UserName: SYSDBA Password: masterkey. Powyższa
nazwa i hasło sa˛ przewidziane dla administratora bazy, możliwe jest również dodawanie nowych
użytkowników.
Po zatwierdzeniu wprowadzonych zmian powinna si˛e pojawić ikonka LocalServer z zielona "fajka".
˛
3. Rozwinać
˛ opcje LocalServer (krzyżyk).
4. Stanać
˛ na opcji DataBase i prawym klawiszem myszy wybrać CreateDatabase (alternatywnie z menu
Database można wybrać opcj˛e CreateDatabase).
• W polu Alias wpisać, np. dane.
• W polu FileName wprowadzić nazw˛e lub nazw˛e razem ze ścieżka,˛ np. mojabaza.gdb lub
d:\baza\mojabaza.gdb.
Uwaga!!! Baza InterBase to jeden duży plik, który zawiera wszystkie obiekty bazy, takie jak: tabele,
indeksy, procedury zapami˛etane, wyzwalacze, domeny itd.
2 Tworzenie i usuwanie tabel
W celu utworzenia tabeli w bazie danych należy:
1. Wybrać z menu Tools opcj˛e InteractiveSQL.
2. Korzystajac
˛ z polecenia j˛ezyka SQL, CREATETABLE, utworzyć tabele.
CREATE TABLE OSOBY
(
NR_ID INTEGER NOT NULL,
IMIE VARCHAR(20) NOT NULL,
NAZWISKO VARCHAR(40) NOT NULL,
DATA_UR DATE NOT NULL,
ADRES VARCHAR(60) NOT NULL,
TELEFON VARCHAR(20),
PRIMARY KEY (NR_ID)
)
1
W celu wykonania polecenia należy wcisnać
˛ kombinacj˛e klawiszy CTRL+Enter (ewentualnie wybrać z
menu Query opcj˛e Execute). W celu sprawdzenia czy tabela została rzeczywiście stworzona można
przejść do IBConsole i sprawdzić czy opcja Tables zawiera tabel˛e OSOBY.
3. Usuni˛ecie tabeli można uzyskać poprzez wykonanie polecenia
DROP TABLE OSOBY
4. Ponowne utworzenie możliwe jest poprzez powrót do odpowiedniego polecenia (CTRL+P), a nast˛epnie jego
wykonanie.
5. Modyfikacja struktury tabeli możliwa jest za pomoca˛ polecenia ALTER, np. dodanie nowego pola (PENSJA)
do tabeli OSOBY można zrealizować nast˛epujaco:
˛
ALTER TABLE OSOBY ADD PENSJA DECIMAL(8,2)
3 Dodawanie i usuwanie rekordów
1. Wprowadzenie nowego rekordu realizuje si˛e nast˛epujaco:
˛
INSERT INTO OSOBY VALUES
(1,’Hans’,’Kloss’, ’06-01-1922’, ’ul. Brunera 13’, ’997’,’1000’)
Sprawdzenie czy rekord został rzeczywiście wprowadzony można wykonać za pomoca˛ polecenia
SELECT * FROM OSOBY
2. Aby wstawić dane do określonych pól trzeba je określić, np.
INSERT INTO OSOBY (NR_ID, IMIE, NAZWISKO, DATA_UR, ADRES) VALUES
(2,’Ferdynand’,’Kiepski’, ’13-12-1955’, ’ul. Ćwiartki 3/4’)
3. Usuni˛ecie rekordu z tabeli o określonej wartości pewnego pola realizuje si˛e nast˛epujaco
˛
DELETE FROM OSOBY WHERE IMIE = ’Hans’
4. Natomiast usuni˛ecie wszystkich rekordów
DELETE FROM OSOBY
4 Wyszukiwanie danych w tabeli
Wyszukiwanie danych w tabeli przeprowadza si˛e za pomoca˛ polecenia SELECT (zob. lista dotyczaca
˛ j˛ezyka SQL).
Przykładowo wybranie rekordów (wszystkich ich pól) dla których pole DATA_UR przyjmuje wartości mniejsze niż
01-01-1954 można zrealizować nast˛epujaco:
˛
SELECT * FROM OSOBY WHERE
DATA_UR < ’01-01-1954’
5
Ograniczenia i integralność referencyjna
1. Podczas definiowania tabeli można wprowadzić ograniczenia dla danych wprowadzanych do tabeli, np. faktury sa˛ numerowane w postaci numer/rok, wi˛ec w każdym rekordzie pola NUMER i ROK (widziane jako
całość) musza˛ być unikalne.
2
CREATE TABLE FAKTURY
(
NUMER SMALLINT NOT NULL UNIQUE,
ROK SMALLINT NOT NULL,
CONSTRAINT DOK_UNIQUE UNIQUE (NUMER, ROK)
)
2. Można również zdefiniować ograniczenie sprawdzajace
˛ poprawność wpisywanych do tabeli danych przez
zastosowanie warunku sprawdzajacego
˛
CHECK. Przykładowo, majac
˛ tabel˛e wyrobów możemy założyć, że
posiada ona pola DATA_PRODUKCJI i DATA_PRZYD (data przydatności). Oczywiście nie można dopuścić
do sytuacji wprowadzenia daty produkcji starszej niż data przydatności. Można to osiagn
˛ ać
˛ nast˛epujaco:
˛
CREATE TABLE WYROBY
(
NAZWA VARCHAR(20) NOT NULL,
PRODUCENT VARCHAR(20) NOT NULL,
DATA_PRODUKCJI DATE NOT NULL,
DATA_PRZYD DATE,
CHECK (DATA_PRODUKCJI < DATA_PRZYD)
)
Wprowadzenie rekordu
INSERT INTO WYROBY VALUES
(’Jaja Wsie’, ’TESCO’, ’10-10-2003’,’09-10-2003’)
Spowoduje wystapienie
˛
bł˛edu, ponieważ DATA_PRODUKCJI jest starsza niż DATA_PRZYD.
3. Przykład integralności. W poniższej definicji tabeli OSOBY niemożliwe jest usuni˛ecie rekordów osób dopóty,
dopóki nie b˛eda˛ usuni˛ete powiazane
˛
z nimi ulice. Określono również zwiazek
˛
wymagajacy,
˛ aby wszystkie
zmiany dokonywane w tabeli ULICE, w polu NR były odzwierciedlane w tabeli OSOBY.
CREATE TABLE ULICE
(
NR INTEGER NOT NULL,
NAZWA VARCHAR(60) NOT NULL,
PRIMARY KEY (NR)
)
CREATE TABLE OSOBY
(
NR_ABON INTEGER NOT NULL,
NAZWISKO VARCHAR(40) NOT NULL,
IMIE VARCHAR(40) NOT NULL,
DATA_UR DATE NOT NULL,
TELEFON VARCHAR(10) NOT NULL,
ULICA INTEGER NOT NULL,
NR_DOMU VARCHAR(5) NOT NULL,
NR_MIESZKANIA VARCHAR(5),
PRIMARY KEY (NR_ABON),
FOREIGN KEY (ULICA) REFERENCES ULICE (NR)
ON UPDATE CASCADE
ON DELETE NO ACTION
)
6
Domeny
1. Domeny służa˛ do opisywania typów danych. Przykładowo, domena KWOTA jest typu DECIMAL i może
zawierać w cz˛eści całkowitych do 8 cyfr i 2 po przecinku.
3
CREATE DOMAIN KWOTA
AS DECIMAL(8,2) CHECK (VALUE >= 0)
Przykładowa tabela wykorzystujaca
˛ powyższa˛ domen˛e może wygladać
˛
nast˛epujaco:
˛
CREATE TABLE WYROBY
(
NAZWA VARCHAR(20) NOT NULL,
PRODUCENT VARCHAR(20) NOT NULL,
DATA_PRODUKCJI DATE NOT NULL,
DATA_PRZYD DATE,
CENA KWOTA,
CHECK (DATA_PRODUKCJI < DATA_PRZYD)
)
2. Domen˛e można usunać
˛ za pomoca˛ polecenia
DROP DOMAIN KWOTA
3. Definicj˛e domeny można zmienić poleceniem
ALTER DOMAIN KWOTA
SET DEFAULT 100
W tym przypadku, pola tabeli typu KWOTA b˛eda˛ przyjmowały domyślnie wartość 100.
7
Widoki
Widoki sa˛ pewnego rodzaju tabelami, które posiadaja˛ pola oraz rekordy. Dane w widoku nie sa˛ jego fizycznymi
danymi, lecz pochodza˛ z tabeli badź
˛ kilku tabel. Widoki tworzy si˛e głównie w celu ograniczenia dost˛epu do tabel,
np.
CREATE VIEW TELEFONY (NAZWISKO, IMIE, TELEFON) AS
SELECT NAZWISKO, IMIE, TELEFON FROM OSOBY
powyższe polecenie „wybiera” z tabeli OSOBY pola NAZWISKO,IMIE,TELEFON i umieszcza je w widoku
TELEFONY.
4