Przedmiot: Technologie reprezentacji danych w e
Transkrypt
Przedmiot: Technologie reprezentacji danych w e
Przedmiot: Technologie reprezentacji danych w e-biznesie Zajęcia 3: Reprezentacja danych w modelu relacyjnym Cel zajęć: Na wcześniejszych zajęciach zajmowaliśmy się tworzeniem przestrzeni tabel oraz kont użytkowników. Celem aktualnych zajęć jest wskazanie składni języka SQL dla celu budowy schematu reprezentacji danych w systemie bazodanowym Oracle 11g. Poruszane zagadnienia odnoszą się do modelu relacyjnego danych. Poruszane zagadnienia: • • • • • • Składnia polecenia tworzącego tabele Typy danych w Oracle 11g Składania polecenia modyfikującego tabele Składnia polecenia usuwającego tabele Dodawanie danych do tabel Tworzenie ograniczeń w tabelach Na kolejnych zajęciach przejdziemy do problematyki reprezentacji danych w modelu obiektowym. Uwaga – aby wykonać poniższe polecenia zaloguj się do bazy jako użytkownik studentXXX, którego jesteś właścicielem. Przypominam, iż domyślne hasło to 123456. 1. TWORZENIE TABEL ORACLE Tabela jest podstawowym obiektem bazodanowym w którym są przechowywane dane. Tabela bazodanowa składa się z wierszy i kolumn, przy tworzeniu tabeli musimy zdefiniować nazwy i typy kolumn. W wierszach są przechowywane dane innymi słowy jeden wiersz w tabeli to informacje np. o jednym pracowniku w przypadku tabeli PRACOWNICY, w tym wierszu będą takie informacje jak Imie, Nazwisko, data urodzenia itp. Składnia polecenia tworzącego tabele: CREATE TABLE nazwa_tabeli ( nazwa_kolumny typ_danych ograniczenia, ...); lub jako kopia istniejącej tabeli: CREATE TABLE nazwa_tabeli AS SELECT ... FROM .... WHERE ....; Typ danych w Oracle: CHAR(N) - tekst o stałej długości, VARCHAR2(N) - tekst o zmiennej długości , NUMBER(N) – typ numeryczny o określonej maksymalnej ilości cyfr, INTEGER - liczba całkowita, FLOAT - typ zmiennopozycyjny, DATE - data, TIME – godzina. Definiowanie ograniczeń w typach pól: • PRIMARY KEY o klucz główny (PK), nie może byc NULL o jednoznacznie identyfikuje klucz o automatyczny indeks o tylko jeden • UNIQUE o jednoznacznie identyfikuje pole o automatyczny indeks o może byc wiele UK NOT NULL o nie może być wartości NULL w kolumnie CHECK cond o warunek, który musi być spełniony dla wszystkich wierszy tabeli FOREIGN KEY, REFERENCES ... o więzy klucza obcego (FK) o zbiór wartości FK jest podzbiorem zbioru wartości klucza z pewnej tabeli o jednoznacznie wskazuje na wiersz z innej tabeli, o ile nie NULL o nie ma indeksu o nie może odwoływać sie do tabel z innej BD • • o o jeśli ON DELETE CASCADE występuje. to usuniecie wiersza spowoduje kaskadowe usuwanie wierszy w tabelach powiązanych nie jest tworzony indeks, można go utworzyć korzystając z klauzuli CREATE INDEX Zadanie: Utwórz tabele zgodnie z poniższym kodem: CREATE TABLE Wydzialy (Id_Wydz NUMBER(2) PRIMARY KEY, Nazwa VARCHAR2(40) NOT NULL, Budynek VARCHAR2(1)); CREATE TABLE Studenci (Nr_Ind NUMBER(6) PRIMARY KEY, Nazwisko VARCHAR2(20) NOT NULL, Imie1 VARCHAR2(5) NOT NULL, Imie2 VARCHAR2(15), Data_Urodz DATE, Id_Wydz NUMBER(2) REFERENCES Wydzialy); Wydziały Studenci 2. MODYFIKOWANIE TABEL W pewnych sytuacjach niezbędne jest modyfikowanie struktury tabel, które zostały już utworzone. W tym celu zastosować możemy polecenie ALTER TABLE. Modyfikacja pola: ALTER TABLE nazwa_tabeli MODIFY (nazwa_kolumny typ_danych wiezy_spojnosci, ...); Dodawanie pola: ALTER TABLE nazwa_tabeli ADD (nazwa_kolumny typ_danych wiezy_spojnosci, ...); Usuwanie pola: ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny; W przypadku przedstawionych wcześniej tabel pole Imie1 w tabeli Studenci ma zbyt małą wielkość. Wykonaj następujące polecenie: ALTER TABLE Studenci MODIFY (Imie1 Varchar2(15) ); Sprawdź definicje tabeli: Dodajmy teraz do tabeli nowe pole PESEL. ALTER TABLE Studenci ADD (PESEL Varchar2(11) ); Dokonaj usunięcia kolumny PESEL. ALTER TABLE Studenci DROP COLUMN PESEL; 3. USÓWANIE TABEL I ICH ZAWARTOŚCI Do usuwania tabeli służy polecenie DROP. Polecenie SQL DROP służy do usuwania obiektu z bazy danych. Jeśli dotyczy tabeli, wszystkie wiersze w tabeli są niszczone wraz ze jej strukturą. Po usunięciu tabeli nie możemy odzyskać, dlatego należy zachować ostrożność podczas korzystania z komendy DROP. Gdy tabela zostanie usunięta wszelkie referencje do tabeli nie będzie ważne. DROP TABLE nazwa_tabeli; Aby usunąć dane z tabeli używamy polecenia TRUNCATE: TRUNCATE TABLE table_name; 4. DODAWANIE DANYCH Do dodawanie danych do tabel służy polecenie INSERT INTO. INSERT INTO nazwa_tabeli VALUES (wartość_kolumny1, ..., wartość_kolumny_ostatniej); lub INSERT INTO nazwa_tabeli (nazwa_kolumny_X, ..., nazwa_kolumny_Y) VALUES (wartość_kolumny_X, ..., wartość_kolumny_ostatniej_Y); Przykład: INSERT INTO Wydzialy VALUES (01,’INFORMATYKA I KOMUNIKACJA’,’A’); INSERT INTO Studenci VALUES (25191,'Kowalski','Jan','','79-12-23',1); lub INSERT INTO Studenci (Nr_Ind, Nazwisko, Imie1, Imie2, Data_Urodz, Id_Wydz) VALUES (25331,'Nowak','Anna','',TO_DATE('01-06-75','MM-DD-YY'),1); Wpisz następujący rekord: INSERT INTO Studenci VALUES (25192,'Nowak','Tomasz','','84-12-23',2); Po wpisaniu tego rekordu mimo, iż jego dane spełniają założenia ograniczeń nałożonych na tabele pojawi się komunikat o błędzie: Wynika on z faktu iż w tabeli wydziały nie ma żadnych danych na temat wydziału o identyfikatorze 2. Wykonaj poniższy kod dodający dane do tabeli. INSERT INTO Wydzialy VALUES (02,’ZARZĄDZANIE’,’A’); Po wprowadzeniu nowego rekordu do tabeli Wydziały, dane studenta zostaną prowadzone prawidłowo. 5. ZADANIE SAMODZIELNE 1. Na podstawie tabel utworzonych w czasie zajęć wykonaj następujące zadania: o Dokonaj zmiany pola nazwa wydziału, tak aby nazwy wydziałów nie mogły się powtarzać w tym polu. o Do tabeli Student dodaj pole id_miejscowość, kod_pocztowy, telefon zgodnie z założeniami: • id_miejecowosc jest to pole klucza obcego, łączące tabele Student z nową tabelą Miejscowosc (tabela ta ma dwa pola id_miejscowosc (number(3)) będące kluczem głównym i pole Nazwa (VARCHAR2(20)) przechowujące nazwę miasta) • kod_pocztowy przechowuje kod pocztowy miasta w formie tekstowej(VARCHAR2(2)) • telefon przechowujące telefon do studenta (Varchar2(10)) • Dokonaj zmiany w polu imie1. Ustaw wielkość pola na 20 znaków • Dodaj nowe pole Legitymacja do tabeli studenci. VARCHAR2(10) • Dodaj nowe pole srednia_ocen: NUMBER(3,2) • Zmień ustawienia pola Kod_pocztowy na VARCHAR2(5) 2. Samodzielnie zapisz kod tworzący strukturę tabel KSIĄŻKI, OSOBA_KSIĄŻKA, OSOBY. Typy pól oraz ich ograniczenia zdefiniuj samodzielnie na podstawie zawartości tabel oraz zdefiniowanych ograniczeń. KSIAZKI Nr_ksiazki Tytul 0001 ABC Komputera 0002 ABC Worda 0003 ABC Excela 0004 Podstawy informatyki 0005 Access 2002 Vademekum 0006 Poznaj Oracle8 0007 Sieci Komputerowe Autor Jan Kowalski Jan Kowalski Jan Kowalski Piotr Nowak Zenon Nowakowski David Austin Wojciech Kalicki Sygnatura Wiel_kary S234222 1,00 zł S235666 2,00 zł S355221 1,00 zł S235552 3,00 zł S231112 2,00 zł S451123 4,00 zł S124412 2,00 zł OSOBA_KSIAZKA Nr_id Nr_osoby Nr_ksiazki Data_od Data_do F_data_do Nal_kara 1 1 7 2002-01-01 2002-01-14 2002-01-12 0,00 zł 2 2 1 2002-01-03 2002-01-17 2002-01-13 0,00 zł 3 6 7 2002-01-15 2002-01-30 2002-01-23 0,00 zł 4 3 2 2002-01-16 2002-01-31 2002-01-31 0,00 zł 5 4 3 2002-01-16 2002-01-31 2002-01-28 0,00 zł 6 5 5 2002-01-24 2002-02-07 2002-02-09 4,00 zł 7 7 6 2002-01-24 2002-02-07 2002-02-13 12,00 zł 8 1 4 2002-02-01 2002-02-14 2002-02-17 9,00 zł 9 4 7 2002-02-01 2002-02-14 2002-02-13 0,00 zł 10 3 2 2002-02-04 2002-02-18 2002-02-26 16,00 zł OSOBA_KSIAZKA Nr_id Nr_osoby Nr_ksiazki Data_od Data_do F_data_do Nal_kara 11 7 5 2002-02-06 2002-02-20 2002-02-22 4,00 zł 12 1 6 2002-02-10 2002-02-24 0,00 zł 13 2 4 2002-02-11 2002-02-25 0,00 zł OSOBY Nr_osoby Imie 0001 Piotr 0002 Maria 0003 Jacek 0004 Marian 0005 Krzysztof 0006 Paweł 0007 Jan Nazwisko Jankowski Polna Zawada Konieczny Malicki Zawadzki Kowalski Miasto Chorzów Bytom Katowice Katowice Gliwice Katowice Katowice Założenia ograniczające: Tytuł 25 znaków not null Autor 30 znaków Wiel_kary, Nal_kara pole numeryczne Nr_osoby numeryczne 4 znaki Imie 20 znaków not null Nazwisko 25 znaków not nul Masto 20 znaków not null Adres 40 znaków not null Adres ul. Zawodowa 2 ul. Lidecka 1 ul. Gwarecka 5 ul. Zawadzka 4 ul. Polecka 31 ul. Klimontowa 2 ul. Polna 21 Data_ur 1978-05-03 1974-01-06 1980-05-02 1976-10-19 1978-08-21 1977-10-10 1975-12-13