Professional Documents
Culture Documents
Projektovanje Baze Podataka Za Podrsku Radu Muzicke Izdavacke Kuce
Projektovanje Baze Podataka Za Podrsku Radu Muzicke Izdavacke Kuce
Projektovanje Baze Podataka Za Podrsku Radu Muzicke Izdavacke Kuce
kuće
BAZE PODATAKA
Projekat
Datum predaje _
Beograd
mesec, godina
1
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Sadržaj
1. Rezime....................................................................................................................3
2. Poslovni domen - OPIS..............................................................................................4
3. Podmodeli podataka..................................................................................................5
4. Integrisani model podataka (PMOV).............................................................................8
5. Prevodjenje PMOV u relacioni model...........................................................................9
6. SQL naredbe za kreiranje tabela................................................................................11
7. SQL naredbe za umetanje podataka...........................................................................15
8. Tabelarni prikaz sadrzaja tabela................................................................................20
9. Specifikacija poslovnih transakcija i njihova realizacija..................................................24
9.1 Podsistem Umetnik..............................................................................................24
9.1.1 Definicija poslovne transakcije.........................................................................24
9.1.2 Pogled.........................................................................................................24
9.1.3 Bazna funkcija..............................................................................................25
9.1.4 Bazna procedura...........................................................................................26
9.2 Podsistem Album.................................................................................................29
9.2.1 Definicija poslovne transakcije.........................................................................29
9.2.2 Pogled.........................................................................................................29
9.2.3 Bazna funkcija..............................................................................................29
9.2.4 Bazna procedura...........................................................................................30
9.3 Podsistem Pesma.............................................................................................................................................33
9.3.1 Definicija poslovne transakcije.........................................................................33
9.3.2 Pogled.........................................................................................................33
9.3.3 Bazna funkcija..............................................................................................33
9.3.4 Bazna procedura...........................................................................................34
10. Literatura...............................................................................................................38
2
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
1. Rezime
U ovom projektu je izvršena analiza poslovnog domena muzičke izdavačke kuće sa ciljem
efikasnog upravljanja umetnicima, lokacijama, gradovima, saradnjama, ugovorima o saradnji,
studijima, statistikama snimanja, uslugama snimanja, muzičkim albumima, koncertima,
pesmama, dvoranama, tekstopiscima, tekstovima i honorarima. Kreiran je model podataka koji
odražava strukturu i odnose između entiteta u ovom poslovnom domenu.
Implementacija ovog modela podataka izvršena je kroz kreiranje šeme relacione baze podataka,
uz primenu odgovarajućih stranih ključeva radi očuvanja integriteta podataka. Kroz SQL insert
naredbe izvršeno je instanciranje ove šeme baze podataka, doprinoseći formiranju osnovnog
skupa podataka koji podržava operativne potrebe muzičke izdavačke kuće.
Projekat uključuje detaljan tabelarni prikaz sadržaja svih tabela baze podataka, pružajući uvid u
strukturu i podatke koji se čuvaju u svakoj tabeli.
3
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
U okviru sistema muzičke izdavačke kuće, umetnici su ključni akteri u procesu stvaranja i
promocije muzike. Gradovi predstavljaju temeljnu infrastrukturu u kojima se nalaze lokacije i
studiji za snimanje, pružajući osnovnu podršku umetnicima u njihovom radu. Svaki grad može
imati više lokacija na kojima se odvijaju različite aktivnosti, poput snimanja, koncerta ili promocije.
Umetnici, kao kreativni entiteti, svoj rad realizuju u određenim lokacijama, bilo da je reč o
snimanju u studiju ili nastupima na koncertima. Ovi događaji često zahtevaju saradnju između
različitih umetnika, što se odražava kroz različite oblike saradnje i ugovore o saradnji.
Studiji za snimanje predstavljaju ključne entitete u procesu produkcije muzike, pružajući prostor i
tehničku podršku umetnicima za snimanje njihovih pesama i albuma. U okviru studija, snimanje
pesama se evidentira kroz usluge snimanja, gde se beleže detalji o datumu snimanja, količini
snimljenih pesama i ceni usluge.
U okviru sistema za upravljanje albumima, svaki album predstavlja zbirku pesama koje se
objavljuju pod određenim imenom i imaju specifičan žanr. Albumi se često povezuju sa koncertima
koji se održavaju u određenim dvoranama, pružajući publici priliku da doživi muziku uživo.
Albumi se karakterišu svojim nazivom, brojem pesama koje sadrže i vrstom muzičkog izdanja koje
predstavljaju. Pesme, kao osnovni gradivni elementi albuma, sadrže informacije o nazivu, trajanju,
kompozitoru i tekstopiscu. Svaka pesma može biti deo jednog ili više albuma, što omogućava
raznolikost i fleksibilnost u kreiranju muzičkih izdanja.
Dvorane predstavljaju ključne lokacije gde se održavaju koncerti, pružajući prostor za nastupe
umetnika i interakciju sa publikom. Koncerti se organizuju kao događaji koji promovišu određene
albume, okupljajući publiku i pružajući im jedinstveno iskustvo uživo.
Blagajne su centralna mesta gde se prodaju ulaznice za koncerte i događaje vezane za albume.
Kroz proces prodaje ulaznica i rezervacija, blagajne pružaju interakciju sa publikom i omogućavaju
im pristup muzičkim događajima.
4
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
U okviru sistema za upravljanje pesmama, svaka pesma predstavlja jedinstveno muzičko delo koje
se sastoji od teksta i muzike. Pesme se često povezuju sa tekstom i produkcijom koje pružaju
dodatne slojeve kreativnosti i ekspresije.
Kroz sistem Honorar, tekstopiscima se pruža kompenzacija za njihov rad kroz isplate honorara za
tekstove koje su napisali. Ovo omogućava pravedno nagrađivanje kreativnih doprinosa tekstopisaca
u muzičkoj industriji.
Tekstovi predstavljaju esencijalni deo pesama, pružajući verbalni izraz i emotivnu dubinu koja
doprinosi ukupnom doživljaju muzike. Kroz tekstove, tekstopisci prenose svoje ideje, emocije i
priče, stvarajući autentične i inspirativne pesme.
5
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
3. Podmodeli podataka
U nastavku su prikazani podmodeli podataka, napred opisanih celina, kroz podmodele PMOV.
6
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
7
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
8
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Slika 3. Podmodel PMOV -Pesma
9
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
10
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Grad(NazivGrada#, BrojStudija)
UgovorOSaradnji(UgovorID#, TipUgovora)
Studio(StudioID#)
Blagajna(BlagajnaID#)
ProducentTekstopisac(TekstopisacD#FK, ProducentID#FK)
ProducentTekstopisac (TekstopisacID#fk) referencira Tekstopisac(TekstopisacID#)
ProducentTekstopisac (ProducentID#fk) referencira Producent(ProducentID#)
12
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
13
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
14
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
15
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
16
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
17
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
18
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
19
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Slika 7. Tabela-StatistikaSnimanja
20
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
21
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
22
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Ovaj deo projekta zahteva specifikaciju poslovnih transakcija, koje treba opisati na način prilagođen
poslovnim eksperimentima, a ne konkretnim terminima baze podataka. Evo kako biste mogli struktuirati
ovaj deo:
Identifikacija Poslovnih Transakcija: Prvo, identifikujte sve poslovne transakcije koje će se događati u
sistemu. Na primer, ovo može biti "Kreiranje Novog Korisničkog Naloga", "Naručivanje Proizvoda",
"Izrada Novog Izveštaja", itd.
Opis Poslovne Transakcije: Za svaku identifikovanu poslovnu transakciju, napišite detaljan opis onoga
što se dešava kada se ta transakcija izvrši. Ovo uključuje korake koje korisnik ili sistem preduzima da bi
izvršio transakciju, kao i očekivane rezultate nakon završetka transakcije.
Na primer: Kreiranje Novog Korisničkog Naloga: Korisnik popunjava formu sa ličnim podacima, kao što
su ime, prezime, e-mail adresa, itd. Nakon popunjavanja i slanja forme, sistem validira unete podatke,
kreira novi korisnički nalog i šalje potvrdu na unetu e-mail adresu.
Specifikacija Pogleda: Definišite pogled koji će predstavljati apstrakciju podataka relevantnih za datu
poslovnu transakciju. Ovaj pogled bi trebao da obuhvati samo one podatke koji su potrebni za izvršenje
transakcije, a ne sve podatke iz baze.
Bazne Funkcije i Procedure: Definišite bazne funkcije i procedure koje će biti korišćene za
implementaciju poslovnih transakcija. Ove funkcije i procedure trebaju biti parametrizovane tako da
mogu referencirati segmente baze podataka nad kojima se žele izvršiti promene.
Testiranje Izvršenja Transakcija: Razvijte testove koji će proveriti ispravno izvršavanje poslovnih
transakcija. Ovi testovi bi trebali da uključuju pozive baznih funkcija i procedura pre i posle izvršenja
transakcije kako bi se proverilo da li su promene u bazi podataka odgovarajuće.
Na kraju, svaka poslovna transakcija bi trebalo da ima svoj odgovarajući opis, pogled, bazne funkcije i
procedure, kao i testove koji će proveriti ispravnost izvršenja transakcije. Ovo će omogućiti detaljno
razumevanje i implementaciju poslovnih procesa u sistemu.
23
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
9.1 Podsistem Umetnik
U skladu sa promenljivim potrebama poslovanja, Udruženje producentskih kuća periodično otvara nove
mogućnosti saradnje sa umetnicima u određenim gradovima. Proces uspostavljanja saradnje sa
umetnicima sprovodi se na sledeći način:
Umetnicima koji trenutno nisu u saradnji sa producentskom kućom (oni koji nemaju aktivne
saradnje) u tom gradu pruža se prilika za saradnju na novom projektu. Početak saradnje je
tekući datum.
U slučaju nedostatka umetnika bez aktuelne saradnje u tom gradu, umetnik koji je najduže u
aktuelnoj saradnji premešta se na novi projekat (ukoliko postoji više umetnika sa istim početkom
tekuće saradnje, birati jednog proizvoljno). Aktuelna saradnja se zatvara sa tekućim datumom,
dok se nova saradnja otpočinje danom posle tekućeg datuma.
9.1.2 Pogled
U skladu sa definicijom poslovne transakcije treba osmisliti pogled kroz koji se mogu videti podaci
nad kojima se zasniva poslovna transakcija. U ovom kontekstu, može se kreirati pogled
pUmetnik_Lokacija_Grad_Saradnja (prefiks p za pogled) kroz koji će se moći videti podaci o
umetniku, nazivu lokacije gde umetnik sarađuje, kao i nazivu grada lokacije, kao i podaci o
saradnjama umetnika. Od podataka umetnika, pogled treba da prikazuje sledeće: ID umetnika,
ime, prezime, plata, kontakt, naziv lokacije, naziv grada.
USE MuzickaKuca;
GO
24
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
SELECT *
FROM pUmetnik_Lokacija_Grad_Saradnja;
9.1.3
9.1.3
9.1.3
9.1.3
9.1.3
Bazna funkcija
Bazna funkcija treba da vrati podatke koji su relevantni za prethodno definisanu poslovnu
transakciju, i da bude tako parametrizovana da vrati segment podataka iz baze podataka u
kontekstu realizacije, tj. izvršenja poslovne transakcije. Opseg relevatnih podataka je obuhvaćen
prethodno definisanim pogledom, tako da funkcija treba upravo biti nad njim definisana. Naziv
grada kao parametar funkcije omogućiće da se kroz poziv funkcije vide željeni podaci za taj grad.
U nastavku sledi programski kod za kreiranje bazne funkcije. Kao što se vidi, funkcija koristi
prethodno definisani pogled pUmetnik_Lokacija_Grad_Saradnja .
GO
25
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Funkcija vraća vrednost u tabeli, i ta tabela je prikazana u nastavku. Kao što se vidi, u Beogradu,
trenutno je angažovan umetnik sa ID-jem 1. Kao što se vidi, funkcija je vratila podskup
podataka dobijenih prethodnim upitom nad pogledom. Podskup podataka je rezultat vrednosti
argumenta prosleđenog u pozivu funkcije (podaci za grad Beograd)
Provera izvršenja poslovne transakcije, tj. promena u bazi podataka koje su prouzrokovane
pozivom bazne procedure (koja realizuje poslovnu transakciju u bazi podataka), vrši se ponovnim
pozivom bazne funkcije sa vrednošću argumenta istim kao i argumanta @pNazivGrada u pozivu
procedure.
SELECT *
FROM kdfUmetnikAngazovanje ('Beograd');
Rezultat upita dat je u tabeli u nastavku. Promene u ovom segmentu baze podataka u odnosu na
prethodno pozivanje bazne funkcije je rezultat izvršenja bazne procedure kdpOtvaranjeUgovora.
Ovim je pokazano da je bazna procedura izvršila željenu poslovnu transakciju (ubačen je novi
ugovor, i raspoređen je odgovarajućeg umetnika na željenoj lokaciji).
27
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Ako se želi sklopiti isti ugovor u drugom gradu (npr. u Novom sadu), treba proveriti sadržaj
odgovarajućeg segmenta baze podataka upitom nad baznom funkcijom, uz odgovarajući
argument u pozivu, kao što je prikazano u nastavku.
SELECT *
FROM kdfUmetnikAngazovanje ('Novi Sad');
Sadržaj podataka koji je upit vratio prikazan je u nastavku. Kao što se vidi, u Novom sadu,
jedan umetnik ima završena angažovanja (nemaju tekuća angažovanja).
Provera izvršenja poslovne transakcije, ponovo se vrži upitom nad odgovarajućim segmentom
baze podataka pozivanjem bazne funkcije.
SELECT *
FROM kdfUmetnikAngazovanje ('Novi Sad');
28
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Identifikacija koncerta: Blagajnik ili osoblje zaduženo za prodaju ulaznica identifikuje koncert ili
događaj koji promoviše određeni album za koji se vrši prodaja ulaznica.
Provera dostupnosti ulaznica: Sistem proverava dostupnost ulaznica za odabrani koncert u određenoj
dvorani. Ukoliko postoje slobodna mesta za prodaju, transakcija može da se nastavi.
Odabir broja ulaznica: Klijent odabira željeni broj ulaznica za koncert koji promoviše album.
Evidencija prodaje: Sistem beleži transakciju prodaje ulaznica, uključujući informacije o datumu,
vremenu, broju kupljenih ulaznica, kao i relevantne podatke o albumu koji se promoviše.
Ova poslovna transakcija omogućava efikasan proces prodaje ulaznica za koncerte i događaje
povezane sa promocijom određenog muzičkog albuma, osiguravajući korisnicima pristup ovim
događajima i generisanje prihoda za organizatore i izvođače.
9.2.2 Pogled
Potrebno je kreirati pogled AlbumKoncertDvoranaView kroz koji će se moći videti podaci o albumu
(broj pesama, naziv albuma, vrsta albuma), koncertu (naziv koncerta i broj posetilaca), i dvorani
(kapacitet i adresa dvorane)
USE MuzickaKuca;
GO
CREATE VIEW AlbumKoncertDvoranaView
AS
SELECT
a.AlbumID AS AlbumID,
a.NazivAlbuma AS NazivAlbuma,
a.BrPesama AS BrPesama,
a.VrstaAlbuma AS VrstaAlbuma,
k.KoncertID AS KoncertID,
k.NazivKoncerta AS NazivKoncerta,
k.BrPosetilaca AS BrPosetilaca,
d.DvoranaID AS DvoranaID,
d.Kapacitet AS KapacitetDvorane,
d.Adresa AS AdresaDvorane
FROM
Album a
LEFT JOIN
Koncert k ON a.AlbumID = k.AlbumID
LEFT JOIN
Dvorana d ON k.DvoranaID = d.DvoranaID;
Funkcija koristi spoljašnje veze (LEFT JOIN) sa tabelama Album i Dvorana kako bi dobila dodatne
informacije o događaju i dvorani u kojoj se održava. Uslov WHERE ograničava rezultate na ulaznice
koje su povezane sa određenim filmom prema šifri filma koja je prosleđena kao ulazni parametar
funkcije.
Nakon definisanja funkcije, poziv funkcije se vrši pomoću SQL upita koji prosleđuje šifru filma kao
argument funkciji, kao što je prikazano u primeru "SELECT * FROM kdfPrikazUlaznica(1);". Ovaj upit bi
vratio sve ulaznice vezane za film sa šifrom filma 1.
SELECT *
FROM kdfPrikazUlaznica(1);
30
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Funkcija vraća vrednost u tabeli, i ta tabela je prikazana u nastavku. Kao što se vidi, za ID karte
1, funkcija je vratila podskup podataka dobijenih prethodnim upitom nad pogledom. Podskup
podataka je rezultat vrednosti argumenta prosleđenog u pozivu funkcije (podaci za ID karte 1)
31
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
BEGIN
PRINT 'Proverite ulazne parametre!'
END
ELSE
IF @pBrojUlaznica > 5
BEGIN
PRINT 'Broj ulaznica ne moze biti veci od 5!'
END
ELSE
IF @pRed > @lMaxRed
BEGIN
PRINT 'Red koji ste uneli je veci od broja redova koje postoje za navedenu salu!'
END
ELSE
IF @pSediste + @pBrojUlaznica > @lMaxSedista
BEGIN
PRINT 'Nije moguce uzeti karte od navedenog sedista!'
END
ELSE
WHILE (@lBrojacSedista < @pBrojUlaznica)
BEGIN
BEGIN TRANSACTION
SET @lOznakaSedista = 'R'+
CAST(@pRed AS VARCHAR(10)) +'-S' + CAST(@lSediste AS VARCHAR(10));
-- Ubacivanje ulaznice
INSERT INTO Karta(CenaKarte, BrojSedista, AlbumID, DvoranaID, KoncertID, BlagajnaID)
VALUES(@pCena, 1, @pSifraFilma, @pSifraSale, @lSifraKoncerta, @pSifraBlagajne);
COMMIT TRANSACTION;
END
END TRY
BEGIN CATCH
PRINT 'DOŠLO JE DO POJAVE GREŠKE!' ;
PRINT '------ Proverite ulazne parametre-------' ;
PRINT ERROR_MESSAGE();
ROLLBACK TRANSACTION;
PRINT 'Procedura je poništila promene.';
END CATCH;
32
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
EXEC kdpProdajaUlaznica
@pCena = 50.00,
@pSifraSale = 1,
@pSifraFilma = 1,
@pSifraBlagajne = 1,
@pSatnica = '18:00',
@pDatum = '2024-03-01',
@pRed = 1,
@pSediste = 1,
@pBrojUlaznica = 2;
Provera izvršenja poslovne transakcije, tj. promena u bazi podataka koje su prouzrokovane
pozivom bazne procedure (koja realizuje poslovnu transakciju u bazi podataka), vrši se ponovnim
pozivom bazne funkcije sa vrednošću argumenta istim kao i argument KartaID u pozivu
procedure.
SELECT *
FROM kdfPrikazUlaznica(1);
33
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Isplata honorara: Na osnovu evidencije isplate, vrši se isplata honorara tekstopiscu i producentu
prema dogovorenim uslovima.
9.3.2 Pogled
Pogled PogledPesmaProducentTekstopisac omogućava pregled informacija o pesmama, njihovim
producentima i tekstopiscima. Svaki red u ovom pogledu sadrži sledeće podatke:
SELECT *
FROM PogledPesmaProducentTekstopisac;
34
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Sadržaj koji upit vraća dat je u sledećoj tabeli.
35
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
Proverava se da li je prosleđeni iznos honorara pozitivan. Ako nije, ispisuje se greška i procedura se
zaustavlja.
Proverava da li pesma sa prosleđenim ID-om postoji u tabeli "Pesma". Ako ne postoji, ispisuje se
odgovarajuća greška i procedura se zaustavlja.
Proverava da li producent sa prosleđenim ID-om postoji u tabeli "Producent". Ako ne postoji, ispisuje
se odgovarajuća greška i procedura se zaustavlja.
Ako su svi uslovi ispunjeni, honorar se ubacuje u tabelu "Honorar" sa trenutnim datumom isplate,
prosleđenim iznosom honorara i ID-om tekstopisca.
Ako dođe do bilo kakve greške prilikom izvršavanja koraka, hvata se greška i ispisuje se odgovarajuća
poruka. Programski kod za kreiranje procedure sledi u nastavku.
USE MuzickaKuca
GO
BEGIN TRY
-- Provera da li je iznos honorara pozitivan
IF @pIznosHonorara <= 0
BEGIN
PRINT 'Greska!!!!!!!';
PRINT 'Iznos honorara mora biti pozitivan.';
RETURN;
END
-- Ubaci honorar
INSERT INTO Honorar (DatumIsplate, IznosHonorara, TekstopisacID)
VALUES (@lDatumIsplate, @pIznosHonorara, @pTekstopisacID);
SELECT *
FROM kdfProducentTekstopisacHonorar(1);
37
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
-- Drugo pozivanje bazne procedure
38
Projektovanje baze podataka za podršku radu muzičke izdavačke
kuće
10.Literatura
1. Majstorović M.: Baze podataka, skripta, Visoka škola strukovnih studija za informacione
tehnologije, Beograd, 2013.
3. Majstorović M.: Napredne baze podataka, ITS, Beograd, 2017, ISBN 978-86-89007-19-0.
39