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

Podobne dokumenty