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