26.10. Generalizacija i specijalizacija : nadtip i podtip
1. Uvod
Do sada smo učili kako se u informacionom sistemu prepoznaju entiteti, njihovi atributi i veze između entiteta.
Na primer, u školskom sistemu možemo imati entitete:
-
UČENIK
-
NASTAVNIK
-
ODELJENJE
-
PREDMET
Za svaki entitet čuvamo određene podatke.
Međutim, ponekad možemo da uočimo da dva ili više entiteta imaju veliki broj zajedničkih osobina.
Na primer, učenik i nastavnik su različite vrste osoba, ali za oba možemo čuvati:
-
ime,
-
prezime,
-
datum rođenja,
-
adresu,
-
telefon.
Tada se postavlja pitanje:
Da li možemo zajedničke podatke da izdvojimo u jedan zajednički entitet?
Možemo.
Tako dolazimo do pojmova nadtip i podtip, odnosno, do pojmova generalizacija i specijalizacija.
2. Nadtip i podtip
Nadtip je opštiji entitet koji sadrži zajedničke osobine više specifičnih entiteta.
Podtip je specifičniji entitet koji pripada određenom nadtipu i, pored nasleđenih osobina, može imati i svoje posebne osobine.
Na primer:
OSOBA
|
-------------------
| |
UČENIK NASTAVNIK
Ovde su:
-
OSOBA – nadtip
-
UČENIK – podtip
-
NASTAVNIK – podtip
OSOBA predstavlja opšti pojam, dok su učenik i nastavnik njegove specifične vrste.
3. Zašto koristimo nadtip i podtip?
Pretpostavimo da ne koristimo nadtip.
Imali bismo entitete:
|
UČENIK
|
NASTAVNIK
|
Primećujemo da se neki atributi ponavljaju:
-
ime
-
prezime
-
datum rođenja
-
adresa
-
telefon
Možemo ih izdvojiti u nadtip:
OSOBA
-
OsobaID
-
ime
-
prezime
-
datum_rođenja
-
adresa
-
telefon
A zatim napraviti podtipove:
|
UČENIK
|
NASTAVNIK
|
Dobijamo:
OSOBA
----------------------
OsobaID
ime
prezime
datum_rođenja
adresa
telefon
|
-----------------
| |
UČENIK NASTAVNIK
-------- -----------
odeljenje stručna_sprema
broj_dnevnika predmet
4. Nasleđivanje atributa
Jedna od važnih osobina podtipa jeste da nasleđuje osobine nadtipa.
Ako OSOBA ima atribute:
-
OsobaID
-
ime
-
prezime
-
datum_rođenja
onda UČENIK kao podtip ima pristup tim osobinama.
Ne moramo ponovo da ih navedemo u podtipu.
UČENIK dodatno može imati:
-
broj_dnevnika
-
odeljenje
NASTAVNIK dodatno može imati:
-
stručnu_spremu
-
predmet
Zato možemo razmišljati ovako:
OSOBA
↓
zajednički podaci
UČENIK
↓
nasleđeni podaci + podaci specifični za učenika
NASTAVNIK
↓
nasleđeni podaci + podaci specifični za nastavnika
5. Kako prepoznajemo nadtip i podtip?
Jedno veoma korisno pitanje je:
Da li je X jedna vrsta Y?
Ako možemo da kažemo:
Učenik je osoba.
Nastavnik je osoba.
onda možemo razmišljati o modelu:
OSOBA
├── UČENIK
└── NASTAVNIK
Drugi primer:
Automobil je vozilo.
Motocikl je vozilo.
Zato:
VOZILO
├── AUTOMOBIL
└── MOTOCIKL
Treći primer:
Pas je životinja.
Mačka je životinja.
Možemo imati:
ŽIVOTINJA
├── PAS
└── MAČKA
6. Generalizacija
Generalizacija je postupak u kome se zajedničke osobine više specifičnih entiteta izdvajaju u jedan opštiji entitet – nadtip.
Na primer, imamo:
UČENIK
- ime
- prezime
- adresa
NASTAVNIK
- ime
- prezime
- adresa
Zajedničke osobine izdvajamo:
OSOBA
ime
prezime
adresa
/ \
/ \
UČENIK NASTAVNIK
Dakle:
više specifičnih → jedan opšti
To je generalizacija.
7. Specijalizacija
Specijalizacija predstavlja obrnut način razmišljanja.
Krećemo od opšteg entiteta i izdvajamo njegove specifične vrste.
Na primer:
VOZILO
- proizvođač
- model
- godina_proizvodnje
- registarski_broj
Možemo ga specijalizovati na:
VOZILO
/ \
/ \
AUTOMOBIL MOTOCIKL
Automobil može imati:
-
broj vrata
Motocikl može imati:
-
tip motocikla
Dakle:
jedan opšti → više specifičnih
To je specijalizacija.
8. Generalizacija i specijalizacija – razlika
Možemo ih posmatrati iz dva pravca.
Generalizacija - Polazimo od više specifičnih entiteta i pronalazimo ono što im je zajedničko.
UČENIK + NASTAVNIK
↓
OSOBA
Specijalizacija - Polazimo od opšteg entiteta i razdvajamo ga na specifične vrste.
OSOBA
↓ ↓
UČENIK NASTAVNIK
U praksi se oba postupka koriste za izgradnju kvalitetnog modela baze podataka.
9. Nadtip i podtip nisu obična veza
Ako pogledamo primer:
UČENIK ─── pripada ─── ODELJENJE
Ovde imamo običnu vezu između dva entiteta.
Ali:
OSOBA
/ \
UČENIK NASTAVNIK
ne znači:
učenik „ima“ osobu
ili:
učenik „pripada“ osobi.
Ovde važi:
Učenik je osoba.
Nastavnik je osoba.
Dakle, govorimo o odnosu „JE“, a ne o običnoj poslovnoj vezi.
10. Još jedan primer – zaposleni
U preduzeću svi zaposleni imaju:
-
ID zaposlenog
-
ime
-
prezime
-
datum zaposlenja
Ali mogu postojati različite vrste zaposlenih.
Na primer:
ZAPOSLENI
|
----------------
| |
NASTAVNIK ADMINISTRATOR
Nastavnik može imati:
-
predmet
Administrator može imati:
-
nivo pristupa
Zajednički podaci pripadaju nadtipu ZAPOSLENI.
11. Podtip može imati svoje atribute
Podtip ne mora imati samo jedan atribut.
Na primer:
VOZILO
---------------
VoziloID
proizvođač
model
godina
|
----------------------
| |
AUTOMOBIL MOTOCIKL
broj_vrata zapremina
broj_sedišta tip
Zajednički atributi su u nadtipu VOZILO.
Specifični atributi su u odgovarajućem podtipu.
12. Da li svaki sličan entitet treba da bude podtip?
Ne.
Samo zato što dva entiteta imaju neke zajedničke atribute ne znači automatski da moramo praviti nadtip.
Potrebno je razmišljati o značenju podataka i pravilima informacionog sistema.
Na primer:
KUPAC
ZAPOSLENI
mogu imati:
-
ime
-
prezime
-
telefon
-
adresu
Ali to samo po sebi nije dovoljno da kažemo da jedan mora biti podtip drugog entiteta.
Pitanje je:
Da li je KUPAC jedna vrsta ZAPOSLENOG?
Nije.
Zato ovde ne postoji odnos nadtip–podtip samo zbog zajedničkih atributa.
13. Jednostavan postupak rešavanja zadatka
Kada dobijemo opis sistema, možemo koristiti sledeći postupak:
Korak 1 - Pronađi moguće entitete.
Korak 2 - Uporedi njihove atribute.
Korak 3 - Pronađi zajedničke osobine.
Korak 4 - Postavi pitanje: "Da li je jedan entitet vrsta drugog?"
Korak 5 - Ako jeste, razmotri nadtip i podtip.
Korak 6 - Zajedničke atribute postavi u nadtip.
Korak 7 - Specifične atribute postavi u odgovarajuće podtipove.
14. Primer – biblioteka
Biblioteka ima članove.
Član može biti:
-
učenik
-
nastavnik
-
spoljni član.
Za svakog člana čuvamo:
-
ČlanID
-
ime
-
prezime
-
telefon
Za učenika dodatno:
-
odeljenje
Za nastavnika dodatno:
-
predmet
Za spoljnog člana:
-
firma
Mogući model:
ČLAN
------------------
ČlanID
ime
prezime
telefon
|
---------------------------
| | |
UČENIK NASTAVNIK SPOLJNI ČLAN
odeljenje predmet firma
15. Zaključak
U ovoj lekciji naučili smo:
-
šta je nadtip;
-
šta je podtip;
-
šta je generalizacija;
-
šta je specijalizacija;
-
kako se izdvajaju zajednički atributi;
-
kako podtip nasleđuje osobine nadtipa;
-
kako prepoznajemo odnos „JE“;
-
kako razlikujemo nadtip–podtip od obične veze između entiteta.
Najvažnije je zapamtiti:
Nadtip predstavlja opštu kategoriju, a podtip njenu specifičnu vrstu.
Na primer:
OSOBA
/ \
/ \
UČENIK NASTAVNIK
Učenik je osoba.
Nastavnik je osoba.
To je osnovna ideja generalizacije i specijalizacije.
Pitanja za proveru znanja
-
Šta je nadtip?
-
Šta je podtip?
-
Šta je generalizacija?
-
Šta je specijalizacija?
-
Koje osobine se nalaze u nadtipu?
-
Da li podtip može imati svoje atribute?
-
Šta znači da podtip nasleđuje osobine nadtipa?
-
Kako možemo prepoznati odnos nadtip–podtip?
-
Koja je razlika između odnosa „JE“ i obične veze?
-
Navedi primer nadtipa i najmanje dva podtipa.
Zadatak
Za svaki od sledećih primera odrediti mogući nadtip i podtipove:
A
|
B
|
C
|
D
|
D
|
Za svaki primer navesti:
-
nadtip;
-
podtipove;
-
najmanje tri zajednička atributa;
-
najmanje jedan specifičan atribut za svaki podtip.