Wyklad9 2007

background image

SBD, L.Banachowski

Obiektowość w obiektowo-

Obiektowość w obiektowo-

relacyjnych bazach danych

relacyjnych bazach danych

na

na

przykładzie Oracle

przykładzie Oracle

Wykład 9

background image

SBD, L.Banachowski

Rodzaje obiekt

Rodzaje obiekt

ó

ó

w

w

1. Obiekty typów obiektowych

2. Duże obiekty LOB

background image

SBD, L.Banachowski

Znaczenie obiektowości w

Znaczenie obiektowości w

bazach danych

bazach danych

Na modelu obiektowo-relacyjnym oparty jest

Standard języka SQL:1999.

Typy obiektowe realizują zasadę abstrakcji w

dwóch postaciach:

abstrakcji proceduralnej polegającej na ukryciu

szczegółów złożonych algorytmów poprzez

opakowanie ich w procedury i funkcje; gdy w razie

potrzeby zmieniamy procedurę - nie musimy

modyfikować aplikacji jej używających;

abstrakcji danych polegającej na ukryciu złożoności

struktury danych przed użytkownikiem, który

korzysta z tych danych; podobnie jak poprzednio,

gdy w razie potrzeby zmieniamy strukturę danych –

nie musimy modyfikować aplikacji jej używających.

background image

SBD, L.Banachowski

Znaczenie obiektowości w

Znaczenie obiektowości w

bazach danych

bazach danych

Zalety użycia obu rodzajów abstrakcji w

bazach danych:

Ułatwione modelowanie rzeczywistych obiektów

biznesowych.

Zmniejszenie złożoności tworzenia aplikacji przez

podział zadania na części. Ułatwienie dokonywania

zmian. Ukrycie szczegółów implementacyjnych przed

użytkownikiem. Modularność aplikacji i możliwość

wielokrotnego użycia komponentów w tej samej lub

w różnych aplikacjach.

Zgrupowanie używanego kodu po stronie serwera

wokół obiektów, na których kod działa. Uzyskanie

większej kontroli nad kodem.

Zastosowanie obiektowo-relacyjnego modelu danych

prowadzi do zmniejszenia rozbieżności w modelach

danych samej bazy danych i aplikacji bazodanowej

napisanej w obiektowym języku programowania. Oba

modele można oprzeć o te same pojęcia: klasy (typu

obiektowego) i instancji klasy (obiektu).

background image

SBD, L.Banachowski

Atrybut

Atrybut

Metoda

Metoda

Id_zam

Id_zam

Info_klient

Info_klient

Pozycje

Pozycje

Status

Status

Zatrzymaj

Zatrzymaj

W

y

ś

w

W

y

ś

w

_S

ta

tu

s

_S

ta

tu

s

A

n

u

lu

j

A

n

u

lu

j

Wyślij

Wyślij

Typ obiektowy

Typ obiektowy

• Złożony typ danych definiowany przez

użytkownika (odpowiadający pojęciu klasy w
obiektowych językach programowania).

• Hermetyzuje strukturę danych łącznie z

metodami potrzebnymi do operowania na
strukturze danych.

Typ obiektowy:
Zamówienia

background image

SBD, L.Banachowski

Ciał

Ciał

a metod

a metod

Publiczny

Publiczny

interfejs

interfejs

Prywatna

Prywatna

implementacj

implementacj

a

a

Deklaracje atrybut

Deklaracje atrybut

ó

ó

w

w

Specyfikacje metod

Specyfikacje metod

Specyfikacja typu

Specyfikacja typu

Ciało

Ciało

typu

typu

Struktura typu

Struktura typu

obiektowego

obiektowego

background image

SBD, L.Banachowski

CREATE TYPE nazwa_typu AS OBJECT
[(atrybut1 typdanych
,
atrybut2 typdanych
,
. . .]
[MEMBER procedura1
| funkcja1 spec,
procedura2 | funkcja2 spec,
. . .)]

CREATE TYPE nazwa_typu AS OBJECT
[(atrybut1 typdanych
,
atrybut2 typdanych
,
. . .]
[MEMBER procedura1
| funkcja1 spec,
procedura2 | funkcja2 spec,
. . .)]

Sk

Sk

ł

ł

adnia

adnia

Tworzenie specyfikacji typu

Tworzenie specyfikacji typu

obiektowego

obiektowego

background image

SBD, L.Banachowski

Sk

Sk

ł

ł

adnia

adnia

CREATE TYPE BODY nazwa_typu AS
[MEMBER procedura1
| funkcja1 spec,
procedura2 | funkcja2 spec,
. . .)]

CREATE TYPE BODY nazwa_typu AS
[MEMBER procedura1
| funkcja1 spec,
procedura2 | funkcja2 spec,
. . .)]

Tworzenie cia

Tworzenie cia

ł

ł

a typu

a typu

obiektowego

obiektowego

background image

SBD, L.Banachowski

SQL> CREATE TYPE name_typ AS OBJECT(
2

f_name

VARCHAR2(25),

3 l_name VARCHAR2(25),

4 initials

varchar2(7),

5 MEMBER FUNCTION full_name return

varchar2,

6 PRAGMA RESTRICT_REFERENCES( full_name,

7 WNDS, RNDS, WNPS, RNPS ));

Przyk

Przyk

ł

ł

ad

ad

– specyfikacja typu

– specyfikacja typu

nazwisk

nazwisk

background image

SBD, L.Banachowski

SQL> CREATE TYPE BODY name_typ AS
2 MEMBER FUNCTION full_name RETURN VARCHAR2
3 IS
4 BEGIN
5 RETURN (l_name || ' ' || f_name );
6 END full_name;
7 END;

Przyk

Przyk

ł

ł

ad

ad

– implementacja typu

– implementacja typu

nazwisk

nazwisk

background image

SBD, L.Banachowski

SQL> CREATE TYPE emp_typ AS OBJECT(
2

emp_id NUMBER(7),

3

name name_typ,

--datatype is object type

4

street VARCHAR2(25),

5

city VARCHAR2(15),

6

state CHAR(2),

7

zip INTEGER,

8

MEMBER FUNCTION get_name RETURN VARCHAR2,

9 PRAGMA RESTRICT_REFERENCES(get_name,
10 WNDS, RNDS, WNPS, RNPS),

11

MEMBER PROCEDURE set_l_name (v_name

VARCHAR2));

Przyk

Przyk

ł

ł

ad

ad

– specyfikacja typu

– specyfikacja typu

pracowników

pracowników

background image

SBD, L.Banachowski

SQL> CREATE TYPE BODY emp_typ AS
2 MEMBER FUNCTION get_name RETURN VARCHAR2
3 IS
4 BEGIN
5 RETURN (name.l_name ||' '|| name.f_name );
6 END;
7 MEMBER PROCEDURE set_l_name (v_name VARCHAR2)
8 IS
9 BEGIN
10 name.l_name := v_name;
11 END;
12

END;

Przyk

Przyk

ł

ł

ad

ad

– implementacja typu

– implementacja typu

pracowników

pracowników

background image

SBD, L.Banachowski

Metody

Metody

Metody to funkcje lub procedury, które

tworzymy w definicji typu obiektowego w celu

zaimplementowania zachowania się obiektów

danego typu. Aplikacja wywołuje metody, aby

uzyskać w efekcie to zachowanie. Są trzy typy

metod: metody składowe obiektów (metody

typu MEMBER), metody konstruktorów

obiektów (metody typu CONSTRUCTOR) oraz

metody statyczne, czyli odnoszące się do

całego typu (metody typu STATIC). W tym

wykładzie rozważamy tylko metody składowe

obiektów oraz metody konstruktora obiektów

implementowane przez system – oprócz tego

są jeszcze metody konstruktorów definiowane

przez użytkowników.

background image

SBD, L.Banachowski

SQL> CREATE TYPE Person AS OBJECT (
2 firt VARCHAR2(50),
3 last VARCHAR2(50)) NOT FINAL;

SQL> CREATE TYPE Emp UNDER Person (
salary NUMBER) FINAL;

SQL> DECLARE
x Emp:=Emp('Jan','Kowalski', 10000);
BEGIN
DBMS_OUTPUT.Put_line(x.first||' '||x.last
||' '||x.salary);
END;

Dziedziczenie (9i)

Dziedziczenie (9i)

background image

SBD, L.Banachowski

Dla typów obiektowych, które mogą być
wzorcami dla podtypów podlegając dalszemu
dziedziczeniu, czyli takich, które nie są
końcowe w hierarchii dziedziczenia,
wymagana jest specyfikacja NOT FINAL.
Domyślną specyfikacją jest FINAL - typ
obiektowy nie podlega dalszemu
dziedziczeniu.

Dziedziczenie (9i)

Dziedziczenie (9i)

background image

SBD, L.Banachowski

CREATE TYPE Figure AS OBJECT (
NOT INSTANTIABLE MEMBER FUNCTION area RETURN NUMBER
) NOT INSTANTIABLE NOT FINAL;

CREATE TYPE Rect UNDER Figure (
x NUMBER, y NUMBER,
OVERRIDING MEMBER FUNCTION area RETURN NUMBER);

CREATE TYPE BODY Rect AS
OVERRIDING MEMBER FUNCTION area RETURN NUMBER IS

BEGIN RETURN x*y; END;
END;

Przesłanianie

Przesłanianie

(9i)

(9i)

background image

SBD, L.Banachowski

Definicja metody area w podtypie Rect
przesłania jej specyfikację w nadtypie Figure.
Wymagane jest słowo kluczowe
OVERRIDING. Domyślną specyfikacją
metody jest NOT OVERRIDING.
Słowo kluczowe NOT INSTANTIABLE dla
typu obiektowego oznacza, że nie można
tworzyć instancji danego typu obiektowego,
a dla metody -  brak implementacji.
Domyślną specyfikacją w obu przypadkach
jest INSTANTIABLE.

Przesłanianie

Przesłanianie

(9i)

(9i)

background image

SBD, L.Banachowski

Informacje o typach obiektowych znajdują się w

• USER_OBJECTS

Informacje o metodach typów obiektowych

znajdują się w

• USER_METHOD_PARAMS
• USER_METHOD_RESULTS
• USER_TYPE_METHODS

Informacje w słowniku danych

Informacje w słowniku danych

Oracle

Oracle

background image

SBD, L.Banachowski

Usuwanie typów

Usuwanie typów

obiektowych

obiektowych

Usuwanie typu obiektowego

(specyfikacji i implementacji):

DROP TYPE typ;

Usuwanie implementacji typu

obiektowego z pozostawieniem

specyfikacji:

DROP TYPE BODY typ_obiektowy;

W tym momencie do istniejących

obiektów tego typu nie można

zastosować żadnej z metod!

background image

SBD, L.Banachowski

Tworzenie tabeli obiektowej i

Tworzenie tabeli obiektowej i

wywoływanie metod

wywoływanie metod

• Zdefiniowanego typu obiektowego można

używać do tworzenia tabel obiektowych tego
typu.

• W utworzonej tabeli obiektowej są

zapisywane obiekty typu obiektowego na tej
samej zasadzie co wiersze tabeli relacyjnej.
To znaczy, wartości atrybutów tworzą
wiersz, na którym działają metody określone
w danym typie obiektowym.

background image

SBD, L.Banachowski

CREATE TABLE nazwa_tabeli OF nazwa_typu
[(więzy spójności)];

Tworzenie tabeli obiektowej i

Tworzenie tabeli obiektowej i

wywoływanie metod

wywoływanie metod

background image

SBD, L.Banachowski

SQL>

CREATE TABLE name_table OF name_typ;

SQL>

INSERT INTO name_table

2

VALUES('Marilyn','Monroe','MM');

SQL>

INSERT INTO name_table

2

VALUES('Brigitte','Bardot','BB');

SQL>

SELECT f_name, l_name, nt.full_name()

2

FROM name_table nt;

Przykład tabeli obiektowej

Przykład tabeli obiektowej

background image

SBD, L.Banachowski

SQL> CREATE TYPE tv_type AS OBJECT (
2 tv_category VARCHAR2(20),
3 screen_size NUMBER(4));

DECLARE
v_new_tv tv_type := tv_type('WEB tv', 32);
v_alt_tv tv_type;
BEGIN
v_alt_tv := tv_type('Big Screen', 72);
END;

Metoda konstruktora

Metoda konstruktora

obiektu

obiektu

SQL> CREATE TABLE tv OF tv_type;
SQL> INSERT INTO tv VALUES(tv_type('Color tv', '28'));

background image

SBD, L.Banachowski

Typ obiektowy

Typ obiektowy

SQL> CREATE TABLE person_tab OF emp_typ;

Tabela obiektowa

Tabela obiektowa

SQL> CREATE TYPE emp_typ AS OBJECT(
2

emp_id NUMBER(7),

3

name name_typ,

--datatype is object type

4

street VARCHAR2(25),

5

city VARCHAR2(15),

6

state CHAR(2),

7

zip INTEGER,

8

MEMBER FUNCTION get_name RETURN VARCHAR2

9 PRAGMA RESTRICT_REFERENCES(get_name,
10 WNDS, RNDS, WNPS, RNPS),

11

MEMBER PROCEDURE set_l_name (v_name

VARCHAR2));

Operowanie obiektami

Operowanie obiektami

background image

SBD, L.Banachowski

SELECT VALUE(p) FROM person_tab p
WHERE p.name.l_name LIKE '%BLAKE’;

SELECT * FROM person_tab p
WHERE p.name.l_name LIKE '%BLAKE’;

SELECT na tabeli

SELECT na tabeli

obiektowej

obiektowej

Wynikiem zbiór wierszy:

Wynikiem zbiór wierszy:

Wynikiem zbiór obiektów reprezentowanych

Wynikiem zbiór obiektów reprezentowanych

przy użyciu konstruktora typu obiektowego:

przy użyciu konstruktora typu obiektowego:

VALUE(p) - oznacza obiekt wskazywany przez p.

background image

SBD, L.Banachowski

INSERT INTO person_tab
VALUES(emp_typ(1, name_typ('Jan', 'Kowalski',
'JK'), 'Andersa', 'Warszawa', 'PL', 1111);

insert into person_tab
values(1, name_typ('Jan', 'Kowalski', 'JK'),
'Andersa', 'Warszawa', 'PL', 1111);

INSERT do tabeli

INSERT do tabeli

obiektowej

obiektowej

Z użyciem konstruktora typu

Z użyciem konstruktora typu

obiektowego:

obiektowego:

Bezpo

Bezpo

ś

ś

redni

redni

o

o

:

:

background image

SBD, L.Banachowski

UPDATE person_tab p
SET p = emp_typ(2, name_typ('Anna', 'Kowalska',
'AK'), 'Świętego Mikołaja', 'Warszawa', 'PL', 1111)
WHERE p.name.f_name = 'Anna';

UPDATE person_tab p
SET p.street = 'Świętego Mikołaja'
WHERE p.name.l_name = 'Kowalska';

UPDATE na tabeli

UPDATE na tabeli

obiektowej

obiektowej

Z u

Z u

ż

ż

yciem konstruktora typu

yciem konstruktora typu

obiektowego

obiektowego:

background image

SBD, L.Banachowski

DELETE FROM person_tab p
WHERE p.street = 'Andersa';

DELETE na tabeli

DELETE na tabeli

obiektowej

obiektowej

background image

SBD, L.Banachowski

Tabela relacyjna w

Tabela relacyjna w

obiektowo-relacyjnej bazie

obiektowo-relacyjnej bazie

danych

danych

Możemy używać tabel relacyjnych z
kolumnami typów obiektowych. Wartościami
wpisywanymi do kolumn tabeli mogą więc być
instancje typów obiektowych.

CREATE TABLE Emp1( 

-- tabela relacyjna

   Empno NUMBER PRIMARY KEY,
   Name Name_typ,  

-- kolumna typu obiektowego

   Sal NUMBER,
   Kier REFERENCES Emp1);

background image

SBD, L.Banachowski

Typ referencyjny

Typ referencyjny

Dla każdego typu obiektowego Type jest
automatycznie definiowany jego typ
referencyjny oznaczany przez REF
Type
. Typu tego można używać jako
typu atrybutów obiektów bądź kolumn
w tabeli relacyjnej. Daje to możliwość
wiązania wartości atrybutu bądź
wartości w kolumnie z innym obiektem
podobnie jak klucz obcy odwołuje się do
klucza głównego. Jest to alternatywny
sposób tworzenia powiązań.

background image

SBD, L.Banachowski

Typ referencyjny

Typ referencyjny

CREATE TYPE Dept_Type AS
OBJECT(

Name VARCHAR2(10),

Loc VARCHAR2(50));

CREATE TYPE Emp_Type AS

OBJECT(

Name VARCHAR2(20),

Sal Number,

Dept_ref REF Dept_Type

);

CREATE TABLE Obj_Emp OF

Emp_Type

(Dept_ref SCOPE IS

Obj_Dept)

;

CREATE TABLE

Rel_emp(

Id NUMBER

PRIMARY KEY,

Name

VARCHAR2(20),

Sal Number,

Dept_ref REF

Dept_Type

SCOPE IS

Obj_Dept)

;

CREATE TABLE

Obj_Dept OF

Dept_Type;

SCOPE IS jest
konieczne, ponieważ
istnieje możliwość
tworzenia wielu tabel
jednego typu.

background image

SBD, L.Banachowski

Kolekcje

Kolekcje

Atrybut typu obiektowego lub kolumna może
być typu kolekcji:

1. VARRAY – typ tablicy jednowymiarowej (jak
wektor);

2. TABLE – typ tabeli zagnieżdżonej.

background image

SBD, L.Banachowski

Przykład zastosowania typu

Przykład zastosowania typu

VARRAY

VARRAY

CREATE TYPE Projekt AS

OBJECT ( Num_proj
NUMBER(3),
Tytuł VARCHAR2(35),
Koszt NUMBER(7,2));

CREATE TYPE
Lista AS
VARRAY(3) OF
Projekt;

CREATE TABLE
Wydziały (
Id_wydz NUMBER(2),
Nazwa VARCHAR2(15),
Budżet NUMBER(11,2),

Projekty Lista

);

INSERT INTO Wydziały
VALUES(1,'Informatyka',100000,

Lista(Projekt(1,'Analiza',123),
Projekt(2,'Projekt',456))

);

background image

SBD, L.Banachowski

Przykład zastosowania typu

Przykład zastosowania typu

VARRAY

VARRAY

w kodzie PL/SQL do poszczególnych

elementów kolekcji można dostawać się

używając naturalnej dla tablic składni:

  Nazwa_kolekcji(wskaźnik)

CREATE OR REPLACE PROCEDURE Wypisz AS
   lis Lista;
BEGIN
   FOR z IN (SELECT * FROM Wydziały) LOOP
      DBMS_OUTPUT.Put_line('Projekty Wydziału: '||
z.Nazwa);
      lis:=z.Projekty;
      FOR i IN 1..lis.Count LOOP
        DBMS_OUTPUT.Put_line(lis(i).Num_proj||' '||
lis(i).Tytuł);
      END LOOP;
   END LOOP;
END;

background image

SBD, L.Banachowski

Duże obiekty LOB

Duże obiekty LOB

W Oracle są cztery rodzaje dużych

obiektów LOB:

1.BLOB – binarny duży obiekt - strumień

bitów jak w przypadku LONG RAW.

2.CLOB – znakowy duży obiekt -

strumień znaków (pojedynczych bajtów).

3.NCLOB – uogólniony (dla języków

narodowych wielobajtowych) znakowy
duży obiekt.

4.BFILE – plik binarny przechowywany

poza bazą danych.

background image

SBD, L.Banachowski

Przepis

(CLOB)

Foto

(BLOB)

Film

Film

(BFILE)

(BFILE)

Duże obiekty LOB

Duże obiekty LOB

background image

SBD, L.Banachowski

DECLARE
lobloc BLOB;
BEGIN
SELECT col1 INTO lobloc
FROM LOB_Table WHERE col2=123;
END;

Warto

Warto

ść

ść

LOB

LOB

Lokator

Lokator

LOB

LOB

Anatomia obiektu LOB

Anatomia obiektu LOB

background image

SBD, L.Banachowski

Przepis

(CLOB)

Foto

(BLOB)

Wewnętrzne obiekty LOB

Wewnętrzne obiekty LOB

background image

SBD, L.Banachowski

SQL> CREATE TABLE employee
2 (emp_id NUMBER,
3 emp_name VARCHAR2(35),
4 resume CLOB,
5 picture BLOB);

Tabela z obiektami LOB

Tabela z obiektami LOB

background image

SBD, L.Banachowski

Film

Film

(BFILE)

(BFILE)

Atrybut typu

obiektowego

Kolumna w tabeli

Zewnętrzne obiekty LOB -

Zewnętrzne obiekty LOB -

zapisywane w pliku systemu

zapisywane w pliku systemu

operacyjnego

operacyjnego

background image

SBD, L.Banachowski

Film (BFILE)

Film (BFILE)

DIRECTOR

DIRECTOR

Y

Y

lob_path =

lob_path =

'/oracle/lob/'

'/oracle/lob/'

Katalog DIRECTORY

Katalog DIRECTORY

background image

SBD, L.Banachowski

Katalog DIRECTORY

Katalog DIRECTORY

Katalog jest to obiekt bazodanowy
reprezentujący katalog systemu
operacyjnego. Służy do
administrowania dostępem do
obiektów bazy danych typu BFILE
przechowywanych w plikach poza bazą
danych. Fizyczny katalog jest tworzony
pod systemem operacyjnym z
uprawnieniami odczytu dla procesów
Oracle. Pliki w tym katalogu nie mogą
być ani zmieniane ani usuwane przez
system Oracle.

background image

SBD, L.Banachowski

Posługiwanie się obiektami

Posługiwanie się obiektami

LOB

LOB

• Pakiet DBMS_LOB
• Wsparcie w SQL - tabele
• Katalog DIRECTORY

background image

SBD, L.Banachowski

SQL> UPDATE employee SET resume =
2> (SELECT resume FROM employee
3> WHERE emp_name='Default')
4> WHERE emp_id = 4508;

SQL> INSERT INTO employee VALUES
2> (7898,'Marilyn Monroe', EMPTY_CLOB(), NULL);

Wstawianie obiektów LOB

Wstawianie obiektów LOB

SQL> INSERT INTO employee VALUES
2> (7897,'Jan Kowalski','Znakomity aktor',
NULL);

background image

SBD, L.Banachowski

DECLARE

lobloc CLOB; --lokator LOB

text VARCHAR2(2000);

amount NUMBER ;

offset INTEGER;

BEGIN

text := 'tekst do wpisania do LOB';

SELECT resume INTO lobloc -- lokator LOB

FROM employee

WHERE emp_id = 5887 FOR UPDATE;

offset := DBMS_LOB.GETLENGTH(lobloc) + 1;

amount := length(text);

DBMS_LOB.WRITE (lobloc, amount, offset, text);

COMMIT;

DBMS_OUTPUT.PUT_LINE('Wpisano ' ||

to_char(amount) ||' znaków');

END;

Dopisywanie do obiektów LOB

Dopisywanie do obiektów LOB

w PL/SQL

w PL/SQL

background image

SBD, L.Banachowski

SQL>DELETE FROM person_tab
2 WHERE pname = 'Opie Griffith';

SQL>UPDATE person_tab SET resume = EMPTY_CLOB()
2 WHERE pname = 'Laura Roshto';

Usuwanie obiektów LOB

Usuwanie obiektów LOB

Usunięcie wiersza z obiektem LOB:

Usunięcie obiektu LOB w wierszu:

background image

SBD, L.Banachowski

COMPARE

FILEGETNAME

INSTR

GETLENGTH

READ

SUBSTR

FILEEXISTS

FILEISOPEN

APPEND

COPY

ERASE

TRIM

WRITE

FILECLOSE

FILECLOSEALL

FILEOPEN

Modyfikacje

Tylko-odczyt

Pakiet DBMS_LOB

Pakiet DBMS_LOB

background image

SBD, L.Banachowski

PROCEDURE READ (

lobsrc IN BFILE|BLOB|CLOB ,

amount IN OUT BINARY_INTEGER,
offset IN INTEGER,
buffer OUT RAW|VARCHAR2 )

PROCEDURE WRITE (

lobdst IN OUT BLOB|CLOB,
amount IN OUT BINARY_INTEGER,
offset IN INTEGER := 1,
buffer IN RAW|VARCHAR2 ) -- RAW dla BLOB

READ i WRITE

READ i WRITE


Document Outline


Wyszukiwarka

Podobne podstrony:
Chłoniaki nieziarnicze wykład 2007
Polityka zdrowotna na świecie wykład 1 2007
Kierunki i szko y w nauce organizacji i zarz dzania I wyklad 2007
Wykład 2 9 X 2007, Politologia
Wyklad 1 2007 psychologia poznawcza
rozwojowka slajdy, Srednia doroslosc wyklad 1 w 2007
Wyklad11 2007
0 Program wykładów 2007
Chemia wyklady 2007 2008(1) id Nieznany
Wyklad1 2007[1]
Wykład 1 2 X 2007, Politologia
Maści wykład 2007-2008, Farmacja, Technologia postaci leków
C Wykład I 2007 2008 M Ch
Wyklad I 2007
Niepełnosprawność jako zjawisko wieloaspektowe - wyklady z 2007 WSFiZ, PSYCHOLOGIA(1), Psychologia(1
Wykład 3 2007-11-05 Oscyloskopy
Antropologia Wyklady 2007, SOCJOLOGIA, antropologia kultury

więcej podobnych podstron