primer projekta za sajt za subp - vps.ns.ac.rs · pdf file2 uvod projekat baza podataka is rtv...

34
1 NOVOSADSKA POSLOVNA ŠKOLA Student: Profesor: Asurdžić Danica Luković dr Ivan Smer: informatika Indeks: 1322/06 Novi Sad, 15.06.2007. SEMINARSKI RAD iz predmeta SISTEMI ZA UPRAVLJANJE BAZAMA PODATAKA Tema: BAZA PODATAKA IS RTV -ARHIVA AUDIO MATERIJALA-

Upload: ngohanh

Post on 02-Feb-2018

228 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

1

NOVOSADSKA POSLOVNA ŠKOLA

Student: Profesor:

Asurdžić Danica Luković dr Ivan

Smer: informatika Indeks: 1322/06

Novi Sad, 15.06.2007.

SEMINARSKI RAD

iz predmeta

SISTEMI ZA UPRAVLJANJE BAZAMA PODATAKA

Tema:

BAZA PODATAKA IS RTV -ARHIVA AUDIO MATERIJALA-

Page 2: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

2

UVOD

Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži

informacione zahteve i pravila poslovanja predstavljenih i kroz odgovarajuću ER šemu baze podataka studije slučaja, prevod ER šeme u relacioni model, na osnovu kojeg su kreirane tabele sa atributima i ograničenjima.

Trigeri, funkcije i procedure dodavani su postupno, a rañeni su u skladu

sa pravilima poslovanja i u cilju obezbeñenja konzistentnosti baze. Baza podataka je testirana na Oracle 10g XE – prikaz SQL script-ova za

kreiranje SQL opisa šeme baze podataka nalazi se u nastavku ove štampane forme, kao i na priloženom CD-u u elektronskom obliku.

Odgovor na zahteve korisnika prikazan je kroz nekoliko SQL upita i

pogleda. U napomenama su navedeni neki delovi koje sam odradila na više različitih načina.

U obliku SQL skripta nalaze se i primeri koji testiraju rad trigera,

procedura i funkcija, za svaki posebno. Punjenje pojedinih tabela rañeno je uz korišćenje sekvencera. Ubačen je i skript za brisanje objekata, sekvencera i tabela.

Idejno rešenje daljeg proširenja baze opisano je na kraju ovog projekta.

Page 3: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

3

Specifikacija studije slučaja, analiza informacionih zahteva korisnika

Potrebno je projektovati bazu podataka za Radio Televiziju, sektor Arhiva

audio materijala. Za audio materijal se vodi: 1. Šifra audio materijala # 2. Naziv albuma 3. Godina albuma 4. Tip nosača zvuka na kojem se nalazi 5. Izdavačka kuća 6. Broj pesama (Track number) 7. i dostupan (ako je izdat, «0», ako je u arhivi, «1»)

Za tip materijala imamo: 1. Šifru materijala # 2. Naziv (CD, LP, 12'', 7'', kaseta...)

Za izvoñača se vodi: 1. Šifra izvoñača # 2. Naziv izvoñača

Za izdavačku kuću: 1. Šifra izdavačke kuće # 2. Naziv izdavačke kuće 3. Oznaka države – pošto je moguće da se pod istim nazivom izdavač pojavi i

u nekoj drugoj zemlji Država: 1. Oznaka države # 2. Naziv države

Zavode se i pesme radi lakše pretrage materijala: 1. SongID # 2. Naziv pesme 3. Izvoñač (šifra)

Page 4: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

4

4. Verzija – original će biti default, a unosi se ako je koncertna verzija, remix, itd.

5. Trajanje hh:mm:ss (pesma može trajati više časova ako je miks u pitanju, npr. Novogodišnji program se snima unapred i pušta kao 1 track u trajanju od 12 časova – ovo je već deo baze prilagoñen Sopstvenoj Produkciji koja bi se takoñe nalazila u Arhivi, ali nije obuhvaćena ovim projektom).

Vodi se i evidencija o izdavanju arhivskog materijala ovlašćenim radnicima,

nazvaćemo ih Tonci (tonski tehničar). Izdavanje vrši magacioner. Tonci su evidentirani po: 1. MBT # - matični broj tonskog tehničara 2. Prezime 3. Ime 4. Sektor (Radio, Marketing, Montaža, Produkcija, Komercijala, Uprava...) 5. Terećenje (izraženo u broju komada audio materijala koji su izneli -

default 0) Za magacionera, vodi se: 1. MBM # - matični broj magacionera 2. Prezime 3. Ime 4. Sektor (Arhiva) 5. SQL sertifikat – moraju posedovati da bi radili u arhivi.

Radi smanjenja papirologije, ne vrši se štampanje dokumenta o izdavanju.

Svaki izdati audio materijal vodi se posebno u evidenciji Reversa: 1. RBR # - Redni broj reversa 2. Primio – Matični broj tonca 3. Izdao – Matični broj magacionera 4. Šifra audio materijala koji je izdat 5. Datum izdavanja 6. Datum povratka – ovde se upisuje vrednost tek kad se materijal vrati.

Page 5: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

5

PRAVILA POSLOVANJA

Prilikom izdavanja dostupnost u tabeli audio materijala se umanjuje za 1, a uvećava se terećenje radnika koji je materijal izneo.

Radnik može izneti najviše 5 materijala. Radnik ne mora u istom danu da vrati sve što je izneo. Zabranjeno je izdavanje materijala radniku koji nije za to ovlašćen (ne radi u

sektoru RADIO) i izdavanje od strane radnika koji ne radi u sektoru ARHIVA. U trenutku vraćanja, zavodi se datum povratka, dostupnost vraćenog

materijala se uvećava za 1, a terećenje radnika umanjuje za svaki vraćeni materijal –1.

Kod evidencije audio materijala, album mora imati bar 1 pesmu (Track

number>0). Naziv izvoñača (šifra) se popunjava za svaku pesmu posebno. Jedna pesma

može se naći na više različitih nosača zvuka (npr. isti album na CD-u, LP-u i kaseti).

Kod brisanja audio materijala dozvoliti brisanje jedino ako ne postoji u

evidenciji reversa, i obrisati pesme koje sadrži – ako nijedan drugi audio materijal ne obuhvata iste.

Izvoñač može biti obrisan ako nema nijednu pesmu u arhivi. Izdavačka kuća može biti obrisana ako nema nijednog albuma u arhivi. Većina ovih ograničenja realizuje se automatski definicijom primarnih i stranih

ključeva.

Page 6: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

6

Država i Radnik – pretpostavljamo da su ovo tabele kojima bi se koristili i ostali sektori u RTV, pa je Arhivi zabranjeno brisanje.

Isto tako nije dozvoljeno brisati evidenciju o izdavanju materijala (Revers),

kao i da se prilikom updatea Reversa izmeni bilo koji podatak osim datuma povratka.

INFORMACIONI ZAHTEVI KORISNIKA

Omogućiti pretragu po nazivu pesme gde je rezultat pretrage: 1. pun naziv pesme 2. verzija 3. trajanje 4. naziv izvoñača 5. naziv albuma 6. godina izdanja 7. šifra audio materijala 8. tip (naziv) 9. dostupnost

Za traženog izvoñača - na osnovu njegove šifre - omogućiti ispis: 1. šifre audio materijala 2. naziv tipa audio materijala 3. naziv svih albuma i 4. godinu.

Omogućiti ispis svih trenutno izdatih audio materijala (VIEW), sa kolonama:

1. Šifra audio materijala 2. Tip (naziv) 3. Naziv albuma 4. Prezime i ime radnika koji se tereti 5. Datum izdavanja

Page 7: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

7

ER šema – u prilogu

Page 8: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

8

ER šema baze podataka studije slučaja Drzava (sifdrz, drz) Iz (sifdrz, sifik) Izd_kuca (sifik, nazivik) Objavila (sifik, sifam) Tip (siftipa, tipime) Ima (siftipa, sifam) Audio_m (sifam, album, godina, trackno, dostupan) Izvodjac (sifizv, artist) Pesma (songID, title, vers, time) Peva (songID, sifizv) Sadrzi (sifam, songID) Revers (RBR, datizd, datpov) Izdat (sifam, RBR) Tonac (MBT, zaduzen) Magacioner (MBM, SQLsert) Primio (MBT, RBR) Izdao (MBM, RBR) Radnik (MBR, prez, ime, sektor)

Šema relacione baze podataka Drzava ({sifdrz, drz}{ sifdrz}) Null (Drzava, siftipa) = ⊥ Izd_kuca({sifik, nazivk, sifdrz}{sifik})

Izd_kuca [sifdrz] ⊆ Drzava [sifdrz] Null (Izdav_kuca, sifik) = ⊥ Null (Izdav_kuca, sifdrz) = ⊥

Tip ({siftipa, vrsta}{siftipa}) Null (Tip, siftipa) = ⊥

Audio_m ({sifam, siftipa, sifik, album, godina, trackno, dostupan}{sifam}) Audio_m [siftipa] ⊆ Tip [siftipa] Audio_m [sifik] ⊆ Izd_kuca [sifik] Audio_m [trackno] > 0 Null (Audio_m, sifam) = ⊥ Null (Audio_m, siftipa) = ⊥ Null (Audio_m, sifik) = ⊥

Page 9: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

9

Izvodjac({sifizv, artist}{sifizv}) Null (Izvodjac, sifizv) = ⊥ Pesma ({songID, sifizv, title, vers, time}{songID})

Pesma [sifizv] ⊆ Izvodjac [sifizv] Null (Pesma, songID) = ⊥ Null (Pesma, sifizv) = ⊥ Sadrzi ({sifam, songID}{ sifam+songID })

Sadrzi [sifam] ⊆ Audio_m [sifam] Sadrzi [songID] ⊆ Pesma [songID] Audio_m [sifam] ⊆ Sadrzi [sifam]

Null (Sadrzi, songID) = ⊥ Null (Sadrzi, sifam) = ⊥ Radnik ({MBR, prez, ime, sektor}{MBR})

Null (Radnik, MBR)= ⊥ Tonac ({MBT, prez, ime, sektor, zaduzen}{MBT})

Null (Tonac, MBT)= ⊥ Tonac [MBT] ⊆ Radnik [MBR]

Magacioner ({MBM, prez, ime, sektor, SQLsert}{MBM}) Null (Magacioner, MBM)= ⊥ Magacioner [MBM] ⊆ Radnik [MBR]

Revers ({RBR, primio, izdao, sifam, datizd, datpov}{RBR}) Null (Revers, RBR)= ⊥ Revers [primio] ⊆ Tonac [MBT] Null (Revers, primio)= ⊥ Revers [izdao] ⊆ Magacioner [MBM] Null (Revers, izdao)= ⊥

Revers [sifam] ⊆ Audio_m [sifam] Null (Revers, sifam)= ⊥

Page 10: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

10

SQL opis šeme baze podataka Tip ({siftipa, vrsta}{siftipa}) Null (Tip, siftipa) = ⊥

CREATE TABLE TIP (siftipa NUMBER(1) NOT NULL

CONSTRAINT pk1 PRIMARY KEY,

vrsta VARCHAR2(20) NOT NULL, CONSTRAINT sif_tipa

CHECK ((siftipa > 0 AND siftipa < 5)) );

INSERT INTO TIP

VALUES (1, 'CD');

INSERT INTO TIP VALUES (2, 'LP');

Drzava ({sifdrz, drz}{sifdrz}) Null (Drzava, sifdrz) = ⊥

CREATE TABLE Drzava (sifdrz NUMBER (2) NOT NULL

CONSTRAINT pk2 PRIMARY KEY,

drz VARCHAR2 (40) NOT NULL, CONSTRAINT sif_drz

CHECK ((sifdrz>9 AND sifdrz<21)) ); INSERT INTO Drzava

VALUES (10, 'SRBIJA');

INSERT INTO Drzava VALUES (11, 'ENGLESKA');

INSERT INTO Drzava VALUES (12, 'USA');

Page 11: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

11

Izd_kuca({sifik, nazivk, sifdrz}{sifik}) Null (Izdav_kuca, sifik) = ⊥ Null (Izdav_kuca, sifdrz) = ⊥ Izd_kuca [sifdrz] ⊆ Drzava [sifdrz] CREATE TABLE Izd_kuca

(sifik NUMBER(2) NOT NULL CONSTRAINT pk3

PRIMARY KEY, nazivik VARCHAR2(40) NOT NULL, sifdrz NUMBER(2) DEFAULT 10 NOT NULL,

CONSTRAINT fk1 FOREIGN KEY(sifdrz)

REFERENCES Drzava (sifdrz), CONSTRAINT sif_ik

CHECK ((sifik>20 AND sifik<30)) );

INSERT INTO Izd_kuca (sifik, nazivik)

VALUES (21, 'CITY RECORDS');

INSERT INTO Izd_kuca (sifik, nazivik) VALUES (22, 'PGP RTB');

INSERT INTO Izd_kuca (sifik, nazivik) VALUES (23, 'B92');

INSERT INTO Izd_kuca VALUES (24, 'CBS', 11);

Izvodjac({sifizv, artist}{sifizv}) Null (Izvodjac, sifizv) = ⊥ CREATE TABLE Izvodjac

(sifizv NUMBER(2) NOT NULL CONSTRAINT pk4

PRIMARY KEY, artist VARCHAR2(40) NOT NULL);

CREATE SEQUENCE kljuc_izv

Page 12: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

12

START WITH 1 MAXVALUE 99 NOCYCLE;

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Djordje Balasevic');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Rambo Amadeus');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Lepa Brena');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Elvis Presley');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Tina Turner');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Beatles');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Tom Jones');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Ultravox');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Billy Idol');

INSERT INTO Izvodjac VALUES (kljuc_izv.NEXTVAL, 'Dire Straits');

Radnik ({MBR, prez, ime, sektor}{MBR}) Null (Radnik, MBR)= ⊥ Tonac ({MBT, prez, ime, sektor, zaduzen}{MBT}) Null (Tonac, MBT)= ⊥ Tonac [MBT] ⊆ Radnik [MBR] Magacioner ({MBM, prez, ime, sektor, SQLsert}{MBM})

Page 13: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

13

Null (Magacioner, MBM)= ⊥ Magacioner [MBM] ⊆ Radnik [MBR]

*NAPOMENA: Kreiramo 1 tabelu Radnik u koju prelaze obeležja Magacionera i Tonca:

CREATE TABLE Radnik

(MBR NUMBER(4) NOT NULL CONSTRAINT pk5

PRIMARY KEY, prez VARCHAR2(30) NOT NULL, ime VARCHAR(20) NOT NULL, sektor VARCHAR2(20) DEFAULT 'Radio', zaduzen NUMBER(1) DEFAULT 0, SQLsert CHAR(1) DEFAULT 'F' );

CREATE SEQUENCE kljuc_radnika START WITH 1000 MAXVALUE 1050 NOCYCLE;

INSERT INTO Radnik (MBR, prez, ime) VALUES (kljuc_radnika.NEXTVAL, 'Milic', 'Koja');

INSERT INTO Radnik (MBR, prez, ime) VALUES (kljuc_radnika.NEXTVAL, 'Peric', 'Boza');

INSERT INTO Radnik (MBR, prez, ime) VALUES (kljuc_radnika.NEXTVAL, 'Vasic', 'Dara');

INSERT INTO Radnik (MBR, prez, ime, sektor) VALUES (kljuc_radnika.NEXTVAL, 'Jovin', 'Ana', 'Montaza');

INSERT INTO Radnik VALUES (kljuc_radnika.NEXTVAL, 'Savic', 'Nena', 'Arhiva', 0, 'T');

INSERT INTO Radnik VALUES (kljuc_radnika.NEXTVAL, 'Arsic', 'Steva', 'Arhiva', 0, 'T');

INSERT INTO Radnik (MBR, prez, ime, sektor) VALUES (kljuc_radnika.NEXTVAL, 'Bozic', 'Pera', 'Uprava');

Page 14: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

14

Audio_m ({sifam, siftipa, sifik, album, godina, trackno, dostupan}{sifam})

Audio_m [siftipa] ⊆ Tip [siftipa] Audio_m [sifik] ⊆ Izd_kuca [sifik] Audio_m [trackno]>0 Null (Audio_m, sifam) = ⊥ Null (Audio_m, siftipa) = ⊥ Null (Audio_m, sifik) = ⊥

CREATE TABLE AUDIO_M (sifam NUMBER(4) NOT NULL

CONSTRAINT pk6 PRIMARY KEY,

siftipa NUMBER(1) DEFAULT 1 NOT NULL, sifik NUMBER(2) NOT NULL, album VARCHAR2(40) NOT NULL, godina NUMBER(4), trackno NUMBER(2), dostupan NUMBER(1) DEFAULT 1 NOT NULL,

CONSTRAINT fk2 FOREIGN KEY(siftipa) REFERENCES Tip (siftipa),

CONSTRAINT fk3 FOREIGN KEY(sifik) REFERENCES Izd_kuca (sifik),

CONSTRAINT bar_1 CHECK (trackno>0)

);

CREATE SEQUENCE kljuc_am START WITH 2000 MAXVALUE 3000 NOCYCLE;

*NAPOMENA: Procedura koja bi vršila unos audio materijala tipa CD: CREATE OR REPLACE PROCEDURE unos_audiocd (sam IN Audio_m.sifam%TYPE, sik IN Audio_m.sifik%TYPE, alb IN Audio_m.album%TYPE, god IN Audio_m.godina%TYPE,

Page 15: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

15

tr IN Audio_m.trackno%TYPE) IS BEGIN INSERT INTO Audio_m (sifam, sifik, album, godina, trackno) VALUES (sam, sik, alb, god, tr); END unos_audiocd; /

*NAPOMENA: Procedura koja bi vršila unos audio materijala tipa LP: CREATE OR REPLACE PROCEDURE unos_audiolp (sam IN Audio_m.sifam%TYPE, st IN Audio_m. siftipa %TYPE, sik IN Audio_m.sifik%TYPE, alb IN Audio_m.album%TYPE, god IN Audio_m.godina%TYPE, tr IN Audio_m.trackno%TYPE) IS BEGIN INSERT INTO Audio_m (sifam, siftipa, sifik, album, godina, trackno) VALUES (sam, st, sik, alb, god, tr); END unos_audiolp; /

EXECUTE unos_audiocd(kljuc_am.NEXTVAL, 22, 'Bezdan', 1986, 3); EXECUTE unos_audiocd(kljuc_am.NEXTVAL, 23, 'Oprem dobro', 2005, 4); EXECUTE unos_audiocd(kljuc_am.NEXTVAL, 21, 'Hitovi', 2006, 2); EXECUTE unos_audiocd(kljuc_am.NEXTVAL, 24, 'Rock Evergreen', 1990,

6); EXECUTE unos_audiolp(kljuc_am.NEXTVAL, 2, 24, 'Rock Evergreen', 1990,

6); EXECUTE unos_audiolp(kljuc_am.NEXTVAL, 2, 22, 'Bezdan', 1986, 3);

*Unos Audio_m sam uradila ovako:

INSERT INTO AUDIO_M (sifam, sifik, album, godina, trackno) VALUES (kljuc_am.NEXTVAL, 22, 'Bezdan', 1986, 3);

INSERT INTO AUDIO_M (sifam, sifik, album, godina, trackno) VALUES (kljuc_am.NEXTVAL, 23, 'Oprem dobro', 2005, 4);

Page 16: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

16

INSERT INTO AUDIO_M (sifam, sifik, album, godina, trackno)

VALUES (kljuc_am.NEXTVAL, 21, 'Hitovi', 2006, 2);

INSERT INTO AUDIO_M (sifam, sifik, album, godina, trackno) VALUES (kljuc_am.NEXTVAL, 24, 'Rock Evergreen', 1990, 6);

INSERT INTO AUDIO_M (sifam, siftipa, sifik, album, godina, trackno) VALUES (kljuc_am.NEXTVAL, 2, 24, 'Rock Evergreen', 1990, 6);

INSERT INTO AUDIO_M (sifam, siftipa, sifik, album, godina, trackno) VALUES (kljuc_am.NEXTVAL, 2, 22, 'Bezdan', 1986, 3);

Pesma ({songID, sifizv, title, vers, time}{songID}) Pesma [sifizv] ⊆ Izvodjac [sifizv] Null (Pesma, songID) = ⊥ Null (Pesma, sifizv) = ⊥

CREATE TABLE Pesma

(songID NUMBER(3) NOT NULL CONSTRAINT pk7

PRIMARY KEY, sifizv NUMBER(2) NOT NULL, title VARCHAR2(40) NOT NULL, vers VARCHAR2(40) DEFAULT 'ORIGINAL', time VARCHAR2 (8) DEFAULT 'mm:ss',

CONSTRAINT fk4 FOREIGN KEY(sifizv) REFERENCES Izvodjac (sifizv)

);

CREATE SEQUENCE song START WITH 100 MAXVALUE 999 NOCYCLE;

INSERT INTO Pesma VALUES (song.NEXTVAL, 4, 'Fever', 'Remix', '3:33');

INSERT INTO PESMA VALUES (song.NEXTVAL, 6, 'Michelle', 'Instrumental', '2:50'); INSERT INTO PESMA VALUES (song.NEXTVAL, 8, 'Dancing With Tears in my Eyes', 'Remix', '5:20');

Page 17: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

17

INSERT INTO PESMA VALUES (song.NEXTVAL, 9, 'Eyes Without a Face', 'Extended', '6:45');

INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 10, 'So far Away', '5:20'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 5, 'River Deep Mountain High', '3:28'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 1, 'Slow Motion', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time)

VALUES (song.NEXTVAL, 1, 'Stari laloski vals', '3:41');

INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 1, 'Ne lomite mi bagrenje', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 2, 'Demode', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 2, 'Letnji hit', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 2, 'Plastik Fantastik', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 2, 'Zene', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 3, 'Golube', '3:41'); INSERT INTO PESMA (songID, sifizv, title, time) VALUES (song.NEXTVAL, 3, 'Sanjam', '3:41'); Sadrzi ({sifam, songID}{ sifam+songID })

Sadrzi [sifam] ⊆ Audio_m [sifam] Sadrzi [songID] ⊆ Pesma [songID] Audio_m [sifam] ⊆ Sadrzi [sifam] Null (Sadrzi, songID) = ⊥ Null (Sadrzi, sifam) = ⊥

CREATE TABLE Sadrzi (sifam NUMBER(4) NOT NULL, songID NUMBER(6) NOT NULL,

Page 18: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

18

CONSTRAINT pk8 PRIMARY KEY (sifam,songID),

CONSTRAINT fk5 FOREIGN KEY(sifam)

REFERENCES Audio_m(sifam) ON DELETE CASCADE,

CONSTRAINT fk6 FOREIGN KEY(songID) REFERENCES Pesma(songID)

);

INSERT INTO Sadrzi VALUES (2000, 106);

INSERT INTO Sadrzi VALUES (2000, 107);

INSERT INTO Sadrzi VALUES (2000, 108);

INSERT INTO Sadrzi VALUES (2001, 109);

INSERT INTO Sadrzi VALUES (2001, 110);

INSERT INTO Sadrzi VALUES (2001, 111);

INSERT INTO Sadrzi VALUES (2001, 112);

INSERT INTO Sadrzi VALUES (2002, 113);

INSERT INTO Sadrzi VALUES (2002, 114);

INSERT INTO Sadrzi VALUES (2003, 100);

INSERT INTO Sadrzi VALUES (2003, 101);

Page 19: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

19

INSERT INTO Sadrzi

VALUES (2003, 102);

INSERT INTO Sadrzi VALUES (2003, 103);

INSERT INTO Sadrzi VALUES (2003, 104);

INSERT INTO Sadrzi VALUES (2003, 105);

INSERT INTO Sadrzi

VALUES (2004, 100);

INSERT INTO Sadrzi VALUES (2004, 101);

INSERT INTO Sadrzi VALUES (2004, 102);

INSERT INTO Sadrzi VALUES (2004, 103);

INSERT INTO Sadrzi VALUES (2004, 104);

INSERT INTO Sadrzi VALUES (2004, 105);

INSERT INTO Sadrzi VALUES (2005, 106);

INSERT INTO Sadrzi VALUES (2005, 107);

INSERT INTO Sadrzi VALUES (2005, 108);

Revers ({RBR, primio, izdao, sifam, datizd, datpov}{RBR}) Null (Revers, RBR)= ⊥ Revers [primio] ⊆ Tonac [MBT] Null (Revers, primio)= ⊥

Page 20: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

20

Revers [izdao] ⊆ Magacioner [MBM] Null (Revers, izdao)= ⊥ Revers [sifam] ⊆ Audio_m [sifam] Null (Revers, sifam)= ⊥

CREATE TABLE Revers ( RBR NUMBER(3) NOT NULL

CONSTRAINT pk9 PRIMARY KEY,

Sifam NUMBER(4) NOT NULL, primio NUMBER(4) NOT NULL, izdao NUMBER(4) NOT NULL, datizd DATE DEFAULT SYSDATE NOT NULL, datpov DATE DEFAULT NULL,

CONSTRAINT fk7 FOREIGN KEY(primio) REFERENCES radnik(MBR),

CONSTRAINT fk8 FOREIGN KEY(izdao) REFERENCES radnik(MBR),

CONSTRAINT fk9 FOREIGN KEY(sifam) REFERENCES Audio_m(sifam), CONSTRAINT provera_izdavanja CHECK(primio<>izdao) );

CREATE SEQUENCE rev

START WITH 1 MAXVALUE 999 NOCYCLE;

REŠENJE KORISNIČKIH ZAHTEVA Za traženog izvoñača - na osnovu njegove šifre - omogućiti ispis:

1. šifre audio materijala 2. naziv tipa audio materijala 3. ime izvoñača 4. naziv albuma i 5. pesmu.

SELECT am.sifam SIFRA, VRSTA, iz.artist IZVODJAC, ALBUM, title PESMA

Page 21: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

21

FROM Audio_m am, Tip, Izvodjac iz, Pesma p, Sadrzi s WHERE p.sifizv=2 AND p.sifizv=iz.sifizv AND p.songID=s.songID AND s.sifam=am.sifam AND am.siftipa=tip.siftipa;

Omogućiti pretragu po nazivu pesme gde je rezultat pretrage: 1. pun naziv pesme 2. verzija 3. trajanje 4. naziv izvoñača 5. naziv albuma 6. godina izdanja 7. šifra audio materijala 8. tip (naziv) 9. dostupnost

SELECT title PESMA, vers VERZIJA, TIME, artist IZVODJAC, ALBUM, GODINA, am.sifam SIFRA, VRSTA, DOSTUPAN FROM Pesma p, Izvodjac iz, Audio_m am, Tip, Sadrzi s WHERE UPPER(p.title)= 'STARI LALOSKI VALS' AND p.songID=s.songID AND s.sifam=am.sifam AND am.siftipa=tip.siftipa AND p.sifizv=iz.sifizv; *NAPOMENA: Ovo je drugi način – funkcija koja vraća šifru tražene pesme: CREATE OR REPLACE FUNCTION nadji_pesmu (ulaz VARCHAR2) RETURN NUMBER IS izlaz NUMBER(3); BEGIN SELECT songID INTO izlaz FROM Pesma WHERE Title=ulaz;

Page 22: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

22

RETURN izlaz; END nadji_pesmu; /

BEGIN

dbms_output.put_line('Trazena pesma ima sifru '||(nadji_pesmu('Zene'))); END; / Upotreba funkcije u okviru SELECT upita: SELECT title PESMA, vers VERZIJA, TIME, artist IZVODJAC, ALBUM, GODINA, am.sifam SIFRA, VRSTA, DOSTUPAN FROM Pesma p, Izvodjac iz, Audio_m am, Tip, Sadrzi s WHERE p.songID=(nadji_pesmu('Zene')) AND p.songID=s.songID AND s.sifam=am.sifam AND am.siftipa=tip.siftipa AND p.sifizv=iz.sifizv; OBEZBEðENJE PRIMENE PRAVILA POSLOVANJA

Prilikom izdavanja dostupnost u tabeli audio materijala se umanjuje za 1, a uvećava se terećenje radnika koji je materijal izneo.

Radnik može izneti najviše 5 materijala. Radnik ne mora u istom danu da vrati sve što je izneo.

U trenutku vraćanja, zavodi se datum povratka, dostupnost vraćenog materijala se uvećava za 1, a terećenje radnika umanjuje za svaki vraćeni materijal –1.

Funkcija koja dodaje 1 na uneti broj i vraća uvećanu vrednost:

Page 23: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

23

CREATE OR REPLACE FUNCTION dodaj1(ulaz NUMBER) RETURN NUMBER IS BEGIN RETURN ulaz+1; END dodaj1; /

Funkcija koja umanjuje uneti broj za 1 i vraća umanjenu vrednost: CREATE OR REPLACE FUNCTION umanji1 (ulaz NUMBER) RETURN NUMBER IS BEGIN RETURN ulaz-1; END umanji1; /

Okidač koji ne dozvoljava da se radniku izda više od 5 materijala:

CREATE OR REPLACE TRIGGER dosta5 BEFORE UPDATE OF zaduzen ON Radnik FOR EACH ROW BEGIN IF :NEW.zaduzen>5 THEN

RAISE_APPLICATION_ERROR (-20500, 'Nije dozvoljeno uzeti vise od 5 materijala!'); END IF; END dosta5; / Okidač koji javlja grešku ako se unosi materijal koji je već izdat: CREATE OR REPLACE TRIGGER nema_am BEFORE UPDATE OF dostupan ON Audio_m FOR EACH ROW BEGIN IF :NEW.dostupan<0 THEN

RAISE_APPLICATION_ERROR (-20501, 'Materijal je vec izdat!'); END IF; END nema_am; /

Page 24: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

24

Okidač koji javlja grešku ako se unosi radnik koji nije zadužen: CREATE OR REPLACE TRIGGER razduzen BEFORE UPDATE OF zaduzen ON Radnik FOR EACH ROW BEGIN IF :NEW.zaduzen<0 THEN

RAISE_APPLICATION_ERROR (-20502, 'Ovaj radnik ne duguje materijal!'); END IF; END razduzen; *NAPOMENA: kasnije se uvodi okidač koji ne dozvoljava izmenu šifre radnika koji je izneo materijal, kako ne bi dolazilo do (zlo)namernih ili slučajnih prepravki u evidenciji. Okidač koji uz poziv funkcije zadužuje radnika: CREATE OR REPLACE TRIGGER zaduzi_radnika BEFORE INSERT ON Revers FOR EACH ROW BEGIN

UPDATE Radnik SET zaduzen=(dodaj1(zaduzen)) WHERE MBR=:NEW.primio;

END zaduzi_radnika; / Okidač koji uz poziv funkcije umanjuje materijal: CREATE OR REPLACE TRIGGER umanji_materijal BEFORE INSERT ON Revers FOR EACH ROW BEGIN

UPDATE Audio_m SET dostupan= (umanji1(dostupan)) WHERE sifam=:NEW.sifam;

END umanji_materijal; /

Page 25: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

25

Okidač koji uz poziv funkcije razdužuje radnika: CREATE OR REPLACE TRIGGER razduzi_radnika AFTER UPDATE OF datpov ON Revers FOR EACH ROW BEGIN

UPDATE Radnik SET zaduzen=(umanji1(zaduzen)) WHERE MBR=:NEW.primio;

END razduzi_radnika; / Okidač koji uz poziv funkcije vraća dostupnost materijala: CREATE OR REPLACE TRIGGER vrati_materijal AFTER UPDATE OF datpov ON Revers FOR EACH ROW BEGIN

UPDATE Audio_m SET dostupan=(dodaj1(dostupan)) WHERE sifam=:NEW.sifam;

END vrati_materijal; / Punimo tabelu Revers: INSERT INTO Revers (RBR, sifam, primio, izdao)

VALUES(rev.NEXTVAL,2000,1000,1005);

INSERT INTO Revers (RBR, sifam, primio, izdao) VALUES(rev.NEXTVAL,2001,1000,1005);

INSERT INTO Revers (RBR, sifam, primio, izdao) VALUES(rev.NEXTVAL,2002,1000,1005);

INSERT INTO Revers (RBR, sifam, primio, izdao) VALUES(rev.NEXTVAL,2003,1000,1004);

Page 26: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

26

INSERT INTO Revers (RBR, sifam, primio, izdao)

VALUES(rev.NEXTVAL,2004,1000,1004);

Testiranje okidača za zaduženje radnika i umanjivanje dostupnog materijala

SELECT * FROM RADNIK; SELECT * FROM AUDIO_M; SELECT * FROM REVERS;

Testiranje okidača koji ne dozvoljava da 1 radnik iznese više od 5 materijala: INSERT INTO Revers (RBR, sifam, primio, izdao) VALUES(rev.NEXTVAL,2005,1000,1005); Testiranje okidača koji javlja da je materijal već izdat: INSERT INTO Revers (RBR, sifam, primio, izdao) VALUES(rev.NEXTVAL,2000,1001,1004); Testiranje okidača koji razdužuje radnika pri povraćaju materijala: UPDATE REVERS SET datpov=SYSDATE WHERE RBR=1;

Okidači zabrane brisanja/izmene podataka u tabelama.

Država i Radnik – pretpostavljamo da su ovo tabele kojima bi se koristili i

ostali sektori u RTV, pa je Arhivi zabranjeno brisanje. Isto tako nije dozvoljeno brisati evidenciju o izdavanju materijala (Revers).

Okidač koji zabranjuje brisanje države:

CREATE OR REPLACE TRIGGER nema_brisanja_drzave BEFORE DELETE ON Drzava

Page 27: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

27

FOR EACH ROW BEGIN IF DELETING THEN

RAISE_APPLICATION_ERROR (-20504, 'Ne sme se brisati drzava!'); END IF;

END nema_brisanja_drzave; / Testiranje: DELETE FROM Drzava WHERE sifdrz=10 / Okidač koji zabranjuje brisanje radnika: CREATE OR REPLACE TRIGGER nema_brisanja_radnika BEFORE DELETE ON Radnik FOR EACH ROW BEGIN IF DELETING THEN

RAISE_APPLICATION_ERROR (-20505, 'Ne sme se brisati radnik!'); END IF;

END nema_brisanja_radnika; / Testiranje: DELETE FROM Radnik WHERE MBR=1000 / Okidač koji zabranjuje brisanje evidencije reversa: CREATE OR REPLACE TRIGGER nema_brisanja_evidencije BEFORE DELETE ON Revers FOR EACH ROW BEGIN IF DELETING THEN

RAISE_APPLICATION_ERROR (-20506, 'Ne sme se brisati evidencija!'); END IF;

END nema_brisanja_evidencije; /

Page 28: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

28

Testiranje: DELETE FROM Revers WHERE RBR=3 /

Ono što bi mogli ograničiti okidačima jeste izdavanje materijala radniku koji nije za to ovlašćen (ne radi u sektoru RADIO) i izdavanje od strane radnika koji ne radi u sektoru ARHIVA.

Funkcija koja na osnovu unetog MBR vraća sektor u kojem je radnik:

CREATE OR REPLACE FUNCTION vrati_sektor (ulaz NUMBER) RETURN VARCHAR2 IS izlaz VARCHAR2(20); BEGIN

SELECT sektor INTO izlaz FROM Radnik WHERE MBR=ulaz; RETURN izlaz;

END vrati_sektor;

Okidač koji poziva funkciju provere sektora i ne dozvoljava izdavanje materijala neovlašćenim radnicima: CREATE OR REPLACE TRIGGER ovlascen_radnik BEFORE INSERT ON Revers FOR EACH ROW BEGIN

IF ((vrati_sektor(:NEW.primio))<>'Radio') THEN RAISE_APPLICATION_ERROR (-20507, 'Ovaj radnik nije ovlascen da

uzima materijal!'); END IF;

END ovlascen_radnik; / Provera trigera: INSERT INTO Revers (RBR, sifam, primio, izdao)

VALUES(rev.NEXTVAL,2005,1003,1004);

Page 29: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

29

Okidač koji poziva funkciju provere sektora i sprecava da se umesto radnika arhive unese šifra nekog drugog radnika:

CREATE OR REPLACE TRIGGER ovlascen_arhivar BEFORE INSERT ON Revers FOR EACH ROW BEGIN

IF ((vrati_sektor(:NEW.izdao))<>'Arhiva') THEN RAISE_APPLICATION_ERROR (-20508, 'Ovaj radnik nije ovlascen da izdaje

materijal!'); END IF;

END ovlascen_arhivar; /

Provera trigera:

INSERT INTO Revers (RBR, sifam, primio, izdao) VALUES(rev.NEXTVAL,2005,1000,1001); I na kraju, okidač koji će zabraniti da se prilikom updatea Reversa

izmeni bilo koji podatak osim datuma povratka:

CREATE OR REPLACE TRIGGER zastita_evidencije BEFORE UPDATE OF sifam, primio, izdao, datizd ON Revers FOR EACH ROW BEGIN IF UPDATING THEN

RAISE_APPLICATION_ERROR (-20509, 'Ova izmena nije dozvoljena!'); END IF;

END zastita_evidencije; /

Provera trigera: UPDATE Revers SET sifam=2000 WHERE RBR=3;

Page 30: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

30

UPDATE Revers SET datpov=SYSDATE WHERE RBR=3;

KREIRANJE POGLEDA

Omogućiti ispis svih trenutno izdatih audio materijala (VIEW), sa kolonama:

1. Šifra audio materijala 2. Tip (naziv) 3. Naziv albuma 4. Prezime i ime radnika koji se tereti 5. Datum izdavanja

CREATE VIEW izdati_am (sifra, vrsta, album, izneo, dana) AS SELECT r.sifam, vrsta, album, t.prez ||' '||t.ime, datizd FROM Audio_m am, Tip, Revers r, Radnik t WHERE r.datpov IS NULL AND

r.sifam=am.sifam AND am.siftipa=Tip.siftipa AND r.primio=t.MBR;

LISTANJE KODA SELECT object_name FROM user_objects WHERE object_type = 'FUNCTION' / SELECT object_name FROM user_objects WHERE object_type = 'PROCEDURE' / SELECT object_name FROM user_objects

Page 31: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

31

WHERE object_type = 'TRIGGER' /

BRISANJE OBJEKATA, TABELA I SEKVENCERA

DROP TRIGGER nema_brisanja_drzave; DROP TRIGGER nema_brisanja_ik; DROP TRIGGER nema_brisanja_evidencije; DROP TRIGGER nema_brisanja_radnika; DROP TRIGGER ovlascen_radnik; DROP TRIGGER ovlascen_arhivar; DROP TRIGGER dosta5; DROP TRIGGER nema_am; DROP TRIGGER razduzen; DROP TRIGGER razduzi_radnika; DROP TRIGGER zaduzi_radnika; DROP TRIGGER umanji_materijal; DROP TRIGGER vrati_materijal; DROP TRIGGER zastita_evidencije; DROP PROCEDURE unos_audiocd; DROP PROCEDURE unos_audiolp; DROP FUNCTION dodaj1; DROP FUNCTION umanji1; DROP FUNCTION vrati_sektor; DROP FUNCTION nadji_pesmu; DROP VIEW izdati_am; DROP TABLE REVERS; DROP TABLE SADRZI; DROP TABLE PESMA; DROP TABLE IZVODJAC; DROP TABLE AUDIO_M; DROP TABLE TIP; DROP TABLE IZD_KUCA; DROP TABLE DRZAVA; DROP TABLE RADNIK; DROP SEQUENCE kljuc_izv; DROP SEQUENCE kljuc_radnika;

Page 32: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

32

DROP SEQUENCE kljuc_am; DROP SEQUENCE song; DROP SEQUENCE rev;

Šta je sve urañeno i šta bi dalje trebalo uraditi

Prvobitna ideja bila je da se kreira baza podataka arhive Radio Televizije

koja bi obuhvatala audio, video materijal, kao i materijal iz sopstvene produkcije – reklame, emisije, muzičke spotove – koji mogu biti u audio ili video formi.

Video materijal bi se donekle razlikovao od audio materijala, jer bi to

mogao biti serijal emisija (dečije, dokumentarne, naučne, zabavne, muzičke, kvizovi...) koje bi imale epizode, voditelje, dok bi filmovi imali različite žanrove (komedija, akcija, drama, sci-fi..), glumce, režisera, producenta, scenaristu itd.

Reklame bi se vezivale za proizvod/firmu na koju se odnose (ili kratak

opis), vodile bi se i u audio i video formatu kao maske, spotovi ili sponzori. Sve ovo je značilo da bi izrada ovog zanimljivog projekta obuhvatala preko

30 tabela, pa sam ga iz tog razloga svela samo na voñenje audio materijala. Ono što bi moglo dalje da se uradi na ovom projektu jeste kreiranje

funkcija i procedura kojima bi se vršila provera da li je u Sadrži povezano tačno toliko pesama koliko je navedeno u trackno (Track number) u tabeli Audio_m, potom, dodavanje kolone u šemu relacije Audio_m koje bi označavalo da li se radi o jednom izvoñaču ili kompilaciji, s tim bi sledila provera – da li su u Sadrzi za taj audio materijal greškom vezane pesme različitih izvoñača (ako nije kompilacija).

Namerno nisam pri kreiranju Audio_m limitirala dostupnost na 1 komad,

jer na ovaj način se dozvoljava unošenje broja kopija istog audio materijala (bar kada su CD i kasete u pitanju) – dakle, moguće je uneti više primeraka pod istom šifrom (šifrom originala) – samo se dostupnost povećava za broj kopija. Ovako su nekada poslovale videoteke, kako se ne bi oštetio originalni film, rentirale bi samo kopije.

Ova evidencija takoñe bi imala smisla kada bi se sprovodilo plaćanje

autorskih prava izvoñačima, s tim što bi povezali Arhivu sa Režijom, koja bi koristila songID za kreiranje play lista (radijski program).

Na kraju meseca bi se vadio listing za svakog izvoñača posebno, i vršila

uplata na osnovu broja pesama zastupljenih u programu.

Page 33: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

33

ZAKLJUČAK Voñenje svake pesme posebno u Arhivi pomoglo bi i muzičkim urednicima

(tonskim tehničarima) u ispunjavanju muzičkih želja slušalaca, kao i u traženju audio materijala sa odreñenom pesmom.

Na ovaj način bi se unapredilo poslovanje, poboljšao odnos sa

auditorijumom, i funkcionalnost prilagodila nekim budućim zahtevima (evidencija radi isplate autorskih prava, na primer).

Takoñe bi se redukovala mogućnost krañe i iznošenja audio materijala od

strane neovlašćenih lica, što je bio primarni motiv izgradnje ovakve baze podataka.

Evidencija bi pružala uvid i u to koji je radnik oštetio materijal, ako doñe

do toga, jer je onemogućena korekcija i brisanje podataka u tabeli Revers nakon unosa.

Poznato je da su neka retka LP izdanja danas vrlo cenjena od strane

pravih kolekcionara, tako da bi arhiva originalnih izdanja radio ili televizijske stanice bila posmatrana kao riznica bogatstva za pojedine radnike, ako se ne bi zavodio materijal, i kada bi mogli bespravno da ga iznose.

Ovakvim načinom evidentiranja bi se uticalo na odgovornost radnika i

njihovo poštovanje prema kapitalu RTV, očuvanje istog, kao i uspešnije korišćenje dostupnog materijala.

Page 34: primer projekta za sajt za SUBP - vps.ns.ac.rs · PDF file2 UVOD Projekat Baza podataka IS RTV – sektor arhiva audio materijala – sadrži informacione zahteve i pravila poslovanja

ER MODEL BAZE PODATAKA ARHIVE RTV

34

(0,N) (0,N) (0,N) (1,1) (1,1) (1,1) (0,N) (1,1) (1,N) (0,N) (0,N) (1,1) (0,N) (1,1) (1,1) (0,N) (1,1) (1,1) (0,N)

IZVODJAC

AUDIO_M PESMA IZD_KUCA

MAGACIONER TONAC

SADRZI OBJAVILA

REVERS

IZDAT

PEVA

TIP

IMA

RADNIK

ISA

PRIMIO IZDAO

IZ

DRZAVA