29
UNIVERZITET U BEOGRADU FAKULTET ORGANIZACIONIH NAUKA BAZE PODATAKA 2 - PROJEKTNI RAD - Prodaja auto delova Beograd, 2013. Mentor: Miroslav Ljubičid  Student: Milica Raulovid  , 2013/3035

Opis Problema

  • Upload
    -p

  • View
    233

  • Download
    1

Embed Size (px)

Citation preview

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 1/29

UNIVERZITET U BEOGRADU

FAKULTET ORGANIZACIONIH NAUKA

BAZE PODATAKA 2

- PROJEKTNI RAD -

Prodaja auto delova

Beograd, 2013.

Mentor: Miroslav Ljubičid  

Student: Milica Raulovid  , 2013/3035

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 2/29

Sadržaj 

1. Opis podsistema .................................................................................................................................... 3

2. Model podataka - PMOV....................................................................................................................... 4

1. Ugovor ............................................................................................................................................... 4

2. Katalog proizvoda ............................................................................................................................. 5

3. Naružbenica kupca  .......................................................................................................................... 6

4. Otpremnica ....................................................................................................................................... 7

5. Račun................................................................................................................................................. 8

6. Izvo iz bake o izvršenoj upati  .......................................................................................................... 9

7. Zahtev za reklamaciju ..................................................................................................................... 10

8. Rešenje po reklamaciji  .................................................................................................................... 11

3. Relacioni model podataka ................................................................................................................... 12

4. Denormalizacija ................................................................................................................................... 13

1. 2NF: Pre –  joining ............................................................................................................................ 13

2. 3NF: Pre –  joining ............................................................................................................................ 15

5. Trigeri .................................................................................................................................................. 17

6. Korisnički efinisani tipovi poataka  .................................................................................................. 20

1. Struktuirani tip ................................................................................................................................ 20

2. Distinct tip ....................................................................................................................................... 24

7. Optimizacija baze podataka. ............................................................................................................... 24

7.1. Indeksi ......................................................................................................................................... 24

7.2. Vertikalno particionisanje ........................................................................................................... 24

7.3. Storing Derivable Values tehnika optimizacije ........................................................................... 26

7.4. Hard – Coded Values tehnika optimizacije ................................................................................. 28

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 3/29

1.  Opis podsistema

Kompanija Vudim Trade d.o.o., preuzede za trgovinu i proizvodnju, osnovana je 1998.

goine u Beograu, na temeljima uspešnog poslovanja koje je postavila čuvena i naaleko

poznata prodavnica auto delova Meče (osnovana 1992. goine). Nastavljajudi uspešnu traiciju

i poslovanje Mečeta, uz istovremeno proširivanje i unapređenje svih segmenata poslovanja na

viši nivo, Vudim Trade je kao sopstvenu strategiju postavio: konstantno podizanje kvaliteta robe

i usluga, objedinjavanje iskustva i novih znanja u procesu poslovanja, gotovo svakodnevno

proširivanje asortimana.

Osnovna delatnost kompanije jeste veleprodaja i maloprodaja auto delova za evropske

tipove automobila, kao i uslužni uvoz elova za ostale tipove automobila. 

Kompanija Vudim Trade ima ugogoišnju saranju sa najvedim svetskim proizvođačima

auto delova čiji je istributer i irektni uvoznik.

Da bi se proces prodaje auto delova na veliko mogao realizovati kompanija Vudim Trade 

sklapa ugovor sa preuzedem kojem de proavati robu u kome su efinisane pojeinosti koje se

odnose na rokove i načine isporuke, način pladanja it. Kompanija ostavlja katalog proizvoda

preuzedu sa kojim je sklopila ugovor. Klijent ukoliko je zainteresovan šalje naružbenicu. 

Klijentu se izaje račun – otpemnica, okument kojim se evientira izlaz robe iz sklaišta kao ifinansi jsko zauženje kupca. Nakon što se obavi pladanje robe na način koji je efinisan u

ugovoru banka šalje službi proaje izvo o izvršenoj uplati. U slučaju a je kupac nezaovoljan

proizvoom on šalje zahtev za reklamaciju na koju u previđenom roku obija odgovor.

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 4/29

2.  Model podataka - PMOV

1.  Ugovor

Firma-Klijent   Zaposleni

SifraUgovora#

Datum

SifraZap#

JMBG

Ime   Telefon

Mail

SifraKlijenta#

Mail

Vlasnik 

 Naziv

Telefon

PIB

0,M

LK 

Ugovor 0,1

Prezime

0,M

0,1

 Način plaćanja

0,M

1,1

SifraNP#

 Naziv

BrojPrimeraka

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 5/29

2.  Katalog proizvoda

Artikal

Katalog Stavka kataloga

SifraKataloga#Datum

KataloškiBroj#

KataloškiBrojProizvođača

SifraArtikla#

 NazivArt ikla

Jedinica mereSifraJM#

 Naziv

1,1

Cena1,M

Datum#Iznos

Grupa1,1

0.M

ŠifraGrupe#   Naziv

0,M

0,M

IznosPDV

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 6/29

3.  Narudžbenica kupca

Artikal

Kolicina

Firma-Klijent

Katalog

 Narudžbenicakupca

Stavka narudžbenicekupca

0,M

SifraNarKup#   Datum

Rbr#

1,1

0.M

1,1

0,M

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 7/29

4.  Otpremnica

Artikal

 Način isporuke

ŠifraOtpKupcu #

Datum PDV

Otpremnica kupcu  Stavka otpremnice

kupcu

 Narudžbenicakupca

 Zaposleni

0,M

Otpremio

Kreirao

0,M

Količina

Rbr#

Popust

1,1

1,1

OsnovicaZaPDVUkupno

SifraNI#   Naziv

  0,M

Komenar 

0,1

1,1

1,M

0,M

0,M

1,1

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 8/29

5.  Račun 

Otpremnica kupcu

Zaposleni

Artikal

Račun kupcuStavka računa

kupcu

0,1

1,1

1,1

0,M

0,M

1,1SifraRacunaKupcu#

Kolicina

Datum

Popust

Rbr#

PDV

OsnovicaZaPDV

JedCena

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 9/29

6.  Izvod iz bake o izvršenoj upati 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 10/29

7.  Zahtev za reklamaciju

Firma-Klijent

Zaposleni

Artikal

Otpremnica kupcu

Zahtev za

reklamaciju

Stavka zahteva za

reklamaciju

0,M

Primio

Obradio0,1

0,1

1,1

1,M

1,1 0,M

SifraReklamacije# Datum

Opis

DatumPrijemaRobe

DatumPrijemaRekl

Rbr#

Količina

Račun kupcu0,1

1,1

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 11/29

8.  Rešenje po reklamaciji

Zaposleni

Artikal

Zahtev za

reklamaciju

Rešenje po reklamaciji

Stavka rešenja poreklamaciji

0,M

1,1

1,M

0,1

1,1

1,10,M

Datum

Odluka

SifraResenja#

Rbr#

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 12/29

3.  Relacioni model podataka

FirmaKlijent(ŠifraKlijenta, Vlasnik, Telefon, PIB, Naziv, Mail)

Ugovor(ŠifraUgovora, Datum, BrojPrimeraka, ŠifraZap, ŠifraKlijenta, ŠifraNP )

NačinPladanja(ŠifraNP, Naziv)

Zaposleni(ŠifraZap, JMBG, LK, Mail, Ime, Prezime, Telefon)

Katalog(ŠifraKataloga, Datum)

StavkaKataloga(ŠifraKataloga, KataloškiBroj, KataloškiBrojProizvođača, ŠifraArtikla)

Artikal(ŠifraArtikla, NazivArtikla, ŠifraGrupe, ŠifraJM)

Cena(ŠifraArtikla, Datum, Iznos, IznosPDV)

Grupa(ŠifraGrupe, Naziv)

JedinicaMere(ŠifraJM, Naziv)

NaružbenicaKupca(ŠifraKlijenta, ŠifraNarKup, Datum, ŠifraKataloga)

StavkaNaružbeniceKupca(ŠifraKlijenta, ŠifraNarKup, Rb, Količina, ŠifraArtikla)

NačinIsporuke(ŠifraNI, Naziv)

OtpremnicaKupcu(ŠifraOtpKupcu, Datum, Komentar, Kreirao, Otpremio, ŠifraNI, ŠifraKlijenta,

ŠifraNarKup)

StavkaOtpremniceKupcu(ŠifraOtpKupcu, Rbr, Ukupno, Popust, Količina, PDV, OsnovicaZaPDV,

ŠifraArtikla)

RačunKupcu(ŠifraRačunaKupcu, Datum, ŠifraOtpKupcu, ŠifraZap, Šifr aBanke, ŠifraIzvoa, Rbr )

StavkaRačunaKupcu(ŠifraRačunaKupcu, Rbr, Popust, Količina,  JedCena, PDV, OsnovicaZaPDV,

ŠifraArtikla)

Banka(ŠifraBanke, Naziv, Telefon, Mail)

IzvoOIzvršenojUplati(ŠifraBanke,Šifraizvoa, Datum, TrenutnoStanjeNaRačunu) 

StavkaIzvoaOIzvršenojUplati(ŠifraBanke, ŠifraIzvoa, Rbr, Iznos)

ZahtevZaReklamaciju(ŠifraKlijenta, ŠifraReklamacije,  Datum, Opis, DatumPrijemaRobe,

DatumPrijemaRekl, ŠifraRačunaKupcu, ŠifraOtpKupcu, Primio, Obradio)

StavkaZahtevaZaReklamaciju(ŠifraKlijenta, ŠifraReklamacije, Rbr, Količina, ŠifraArtikla)

RešenjePoReklamaciji(ŠifraRešenja, Datum, ŠifraZap, ŠifraKlijeta, ŠifraReklamacije)

StavkaRešenjaPoReklamaciji(ŠifraRešenja, Rbr, Odluka, ŠifraArtikla)

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 13/29

4.  Denormalizacija

1.  2NF: Pre – joining

Normalizovani konceptualni model:

 Narudžbenicakupca

SifraNarKup#   Datum

Firma-Klijent

SifraKlijenta#

Mail

Vlasnik 

 Naziv

Telefon

PIB

0,M

 

FirmaKlijent(ŠifraKlijenta, Vlasnik, Telefon, PIB, Naziv, Mail, ŠifraMesta, ŠifraUlice, Br  )

NaružbenicaKupca(ŠifraKlijenta, ŠifraNarKup, Datum, ŠifraKataloga)

Funkcionalne zavisnosti (Naružbenica kupca):

ŠifraKlijenta, ŠifraNarKup -> Datum, ŠifraKataloga 

Denormalizovani konceptualni model:

 Narudžbenicakupca

SifraNarKup#   Datum

Firma-Klijent

SifraKlijenta#

Mail

Vlasnik 

 Naziv

Telefon

PIB

0,M   Naziv

 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 14/29

FirmaKlijent(ŠifraKlijenta, Vlasnik, Telefon, Status, PIB, Naziv, Mail, ŠifraMesta, ŠifraUlice,

Br  )

NaružbenicaKupca(ŠifraKlijenta, ŠifraNarKup, Datum, Naziv, ŠifraKataloga)

Funkcionalne zavisnosti (Naružbenica kupca):

ŠifraKlijenta, ŠifraNarKup -> Datum, ŠifraKataloga, Naziv

ŠifraKlijenta -> Naziv

Tip trigera Kolona Potreban Šta treba a urai? 

FirmaKlijent  Insert NE

Update Naziv DA

Prilikom izmene vrednosti kolone

Naziv u tabeli FirmaKlijent, pokrede

se triger koji izmenjenu vrednost

ažurira u tabeli NaružbenicaKupca.

Delete

NaružbenicaKupca  Insert DATriger ažurira vrenost kolone Nazivna osnovu unete vrednosti kolone

ŠifraKlijenta.

Update Naziv DAZabraniti irektno ažuriranje ove

kolone.

Delete NE

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 15/29

2.  3NF: Pre – joining

Normalizovani konceptualni model:

ArtikalStavka kataloga

KataloškiBroj#

KataloškiBrojProizvođača

SifraArtikla#

 NazivArtikla

0,M

 

StavkaKataloga(ŠifraKataloga, KataloškiBroj, KataloškiBrojProizvođača, ŠifraArtikla)

Artikal(ŠifraArtikla, NazivArtikla, ŠifraGrupe, ŠifraJM)

Funkcionalne zavisnosti (Stavka kataloga):

ŠifraKataloga, KataloškiBroj -> KataloškiBrojProizvođača, ŠifraArtikla 

Denormalizovani konceptualni model:

ArtikalStavka kataloga

KataloškiBroj#

KataloškiBrojProizvođača

SifraArtikla#

 NazivArtikla

0,M

NazivArtikla

 

StavkaKataloga(ŠifraKataloga, KataloškiBroj, KataloškiBrojProizvođača, ŠifraArtikla ,

NazivArtikla)

Artikal(ŠifraArtikla, NazivArtikla, ŠifraGrupe, ŠifraJM)

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 16/29

Funkcionalne zavisnosti (Stavka kataloga):

ŠifraKataloga, KataloškiBroj -> KataloškiBrojProizvođača, ŠifraArtikla, NazivArtikla 

ŠifraArtikla -> NazivArtikla

Tabela Tip trigera  Kolona  Potreban Šta treba da uradi? 

Artikal  Insert   NE 

Update  NazivArtikla DA 

Prilikom izmene vrednosti polja

NazivArtikla u tabeli Artikal,

 pokreće se triger koji ažuriravrednost u tabeli StavkaKataloga.

Delete   NE 

StavkaKataloga

Insert  DA 

Triger ažurira vrednost koloneNazivArtikla na osnovu unete

vrednosti atributa ŠifraArtikla. 

Update 

ŠifraArtikla  DA 

Triger vrši ažuriranje koloneNazivArtikla na osnovu izmenjene

vrednosti kolone ŠifraArtikla. 

NazivArtikla DA  Zabraniti direktno ažuriranje ovekolone. 

Delete   NE 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 17/29

5.  Trigeri

Tip trigera Kolona Potreban Šta treba a urai? 

FirmaKlijent  Insert NE

Update Naziv DA

Prilikom izmene vrednosti kolone

Naziv u tabeli FirmaKlijent, pokrede

se triger koji izmenjenu vrednost

ažurira u tabeli NaružbenicaKupca.

Delete

NaružbenicaKupca  Insert DA

Triger ažurira vrenost kolone Naziv

na osnovu unete vrednosti kolone

ŠifraKlijenta.

Update Naziv DAZabraniti irektno ažuriranje ove

kolone.

Delete NE

CREATE TRIGGER "NazivKlijenta" ON [dbo].[FirmaKlijent] 

AFTER UPDATE AS IF UPDATE (Naziv) BEGIN ALTER TABLE [dbo].[NarudzbenicaKupca] DISABLE TRIGGER [NeMenjatiNazivKlijenta] UPDATE [dbo].[NarudzbenicaKupca] SET [Naziv] = (SELECT [Naziv] FROM INSERTED) WHERE SifraKlijenta = (SELECT [SifraKlijenta] FROM INSERTED) ALTER TABLE [dbo].[NarudzbenicaKupca] ENABLE TRIGGER [NeMenjatiNazivKlijenta]END 

CREATE TRIGGER "InsertNarudzbenica" ON [DBO].[NarudzbenicaKupca] AFTER INSERT AS BEGIN ALTER TABLE [dbo].[NarudzbenicaKupca] DISABLE TRIGGER [NeMenjatiNazivKlijenta] UPDATE [DBO].[NarudzbenicaKupca] SET Naziv = ( SELECT [Naziv] FROM [DBO].[FirmaKlijent] WHERE [SifraKlijenta] = (SELECT [SifraKlijenta] FROM INSERTED) 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 18/29

) FROM [DBO].[NarudzbenicaKupca] Y JOIN INSERTED I ON Y.SifraKlijenta = I.SifraKlijenta WHERE I.Naziv IS NULL ALTER TABLE [dbo].[NarudzbenicaKupca] ENABLE TRIGGER [NeMenjatiNazivKlijenta] 

END 

CREATE TRIGGER NeMenjatiNazivKlijenta ON [DBO].[NarudzbenicaKupca] 

AFTER UPDATE AS BEGIN IF UPDATE (Naziv) 

RAISERROR('NE SME SE MENJATI!', 16, -1) END 

Tabela Tip trigera  Kolona  Potreban Šta treba da uradi? 

Artikal  Insert   NE 

Update  NazivArtikla DA 

Prilikom izmene vrednosti polja

NazivArtikla u tabeli Artikal,

 pokreće se triger koji ažuriravrednost u tabeli StavkaKataloga.

Delete   NE 

StavkaKatalogaInsert  DA 

Triger ažurira vrednost koloneNazivArtikla na osnovu unete

vrednosti atributa ŠifraArtikla. 

Update 

ŠifraArtikla DA 

Triger vrši ažuriranje koloneNazivArtikla na osnovu izmenjene

vrednosti kolone ŠifraArtikla. 

NazivArtikla DA Zabraniti direktno ažuriranje ovekolone. 

Delete   NE 

CREATE TRIGGER "NazivArtiklaUKatalogu" ON [dbo].[Artikal] AFTER UPDATE AS IF UPDATE (NazivArtikla) BEGIN 

ALTER TABLE [dbo].[StavkaKataloga] DISABLE TRIGGER [NeMenjajNazivArtikla] UPDATE [dbo].[StavkaKataloga] SET [NazivArtikla] = (SELECT [NazivArtikla] FROM INSERTED) 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 19/29

WHERE SifraArtikla = (SELECT [SifraArtikla] FROM INSERTED) ALTER TABLE [dbo].[StavkaKataloga] ENABLE TRIGGER [NeMenjajNazivArtikla] END;

CREATE TRIGGER "InsertStavkaKataloga" 

ON [DBO].[StavkaKataloga] AFTER INSERT AS BEGIN ALTER TABLE [dbo].[StavkaKataloga] DISABLE TRIGGER [NeMenjajNazivArtikla] UPDATE [DBO].[StavkaKataloga] SET NazivArtikla = 

( SELECT [NazivArtikla] FROM [DBO].[Artikal] WHERE [SifraArtikla] = (SELECT [SifraArtikla] FROM INSERTED) 

) FROM [DBO].[StavkaKataloga] Y JOIN INSERTED I ON Y.SifraArtikla = I.SifraArtikla WHERE I.NazivArtikla IS NULL ALTER TABLE [dbo].[StavkaKataloga] ENABLE TRIGGER [NeMenjajNazivArtikla] 

END

CREATE TRIGGER "Update SifraArtikla" ON [DBO].[StavkaKataloga] AFTER Update AS 

IF UPDATE (SifraArtikla) BEGIN ALTER TABLE [dbo].[StavkaKataloga] DISABLE TRIGGER [NeMenjajNazivArtikla] 

UPDATE [DBO].[StavkaKataloga] SET NazivArtikla = ( SELECT [NazivArtikla] FROM [DBO].[Artikal] 

WHERE [SifraArtikla] = (SELECT [SifraArtikla] FROM INSERTED) ) FROM [DBO].[StavkaKataloga] Y 

JOIN INSERTED I ON Y.SifraArtikla = I.SifraArtikla ALTER TABLE [dbo].[StavkaKataloga] ENABLE TRIGGER [NeMenjajNazivArtikla] END

CREATE TRIGGER NeMenjajNazivArtikla 

ON [DBO].[StavkaKataloga] AFTER UPDATE AS 

BEGIN IF UPDATE (NazivArtikla) RAISERROR('NE SME SE MENJATI!', 16, -1) END 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 20/29

6.  Korisnički definisani tipovi podataka 

1.  Struktuirani tip

using System;

using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using  Microsoft.SqlServer.Server;

using System.IO;using System.Net.Mail;

[Serializable][Microsoft.SqlServer.Server. SqlUserDefinedType(Format.UserDefined, MaxByteSize = 800)]

public struct PodaciKlijent : INullable, IBinarySerialize {

public bool IsNull

{get {

return m_Null;}

}

public static PodaciKlijent Null{

get {

PodaciKlijent h = new PodaciKlijent();h.m_Null = true;

return h;}

}

private string naziv;

public string Naziv{

get { return naziv; }

set { naziv = value; this.m_Null = false; }}

private string pib;

public string Pib{

get { return pib; }set { pib = value; this.m_Null = false; }

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 21/29

  }

private string telefon;

public string Telefon{

get { return telefon; }

set { telefon = value; this.m_Null = false; }}

private string vlasnik;

public string Vlasnik

{get { return vlasnik; }set { vlasnik = value; this.m_Null = false; }

}

private string mail;

public string Mail{

get { return mail; }set { mail = value; this.m_Null = false; }

}

private bool m_Null;

public PodaciKlijent(string naziv, string pib, string telefon, string vlasnik, string 

mail){

this.naziv = naziv;

this.pib = pib;

this.telefon = telefon;this.vlasnik = vlasnik;this.mail = mail;

m_Null = false;}

public override string ToString(){

if (this.IsNull)return "null";

else {

return string.Format("{0};{1};{2};{3};{4}", naziv, pib, telefon, vlasnik,

mail);

}}

public static PodaciKlijent Parse(SqlString s){

if (s.IsNull)

return Null;else {

PodaciKlijent klijent = new PodaciKlijent();

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 22/29

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 23/29

  return -1;}

if (klijent.IsNull)return 1;

return this.ToString().CompareTo(klijent.ToString());

}

public void Write(System.IO.BinaryWriter w){

byte header = (byte)(this.IsNull ? 1 : 0);w.Write(header);

if (header == 1){

return;

}

w.Write(this.naziv);w.Write(this.pib);w.Write(this.telefon);w.Write(this.vlasnik);ValidateMail(this.mail);

w.Write(this.mail);}

public void Read(System.IO.BinaryReader r){

byte header = r.ReadByte();if (header == 1)

{this.m_Null = true;return;

}

this.m_Null = false;this.naziv = r.ReadString();this.pib = r.ReadString();

this.telefon = r.ReadString();this.vlasnik = r.ReadString();this.mail = r.ReadString();

}}

sp_configure 'clr enabled', 1

Reconfigure 

USE autoDelovi; 

CREATE ASSEMBLY PodaciKlijent_asm 

FROM 'C:\Domen.dll' WITH PERMISSION_SET = SAFE; 

CREATE TYPE dbo.PodaciKlijent EXTERNAL NAME PodaciKlijent_asm.[PodaciKlijent]; 

DROP TYPE dbo.PodaciKlijent ; DROP ASSEMBLY PodaciKlijent_asm; 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 24/29

 select *, PodaciKlijent.ToString() as Osoba_Razumljivo from FirmaKlijent 

2.  Distinct tip

CREATE TYPE [dbo].[iznosNovca] FROM [decimal](9, 2);

create table Cena ( ŠifraArtikla integer,Datum date, Iznos iznosNovca,IznosPDV iznosNovca) 

CREATE TYPE [dbo].[odgovor] FROM [varchar](50);

create table StavkaResenjaPoReklamaciji  ( ŠifraResenja integer,Rbr integer,

Odluka odgovor, SifraArtikla integer)

7.  Optimizacija baze podataka.

7.1.  Indeksi

Artikal(ŠifraArtikla, NazivArtikla, ŠifraGrupe, ŠifraJM)

CREATE INDEX Artikal_ind ON Artikal (NazivArtikla) 

Zaposleni(ŠifraZap, JMBG, LK, Mail, Ime, Prezime, Telefon, ŠifraMesta, ŠifraUlice, Br )

CREATE INDEX Zaposleni_ind ON Zaposleni (JMBG) 

7.2.  Vertikalno particionisanje

Izvršićemo vertikalno particionisanje tabele Zaposleni – ovu tabelu ćemo podeliti na dve: prvu, ukojoj će se nalaziti kolone koje se češće koriste u upitima, i drugu, u kojoj će se nalaziti detalji,tj. kolone koje se ređe koriste. 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 25/29

 

Zaposleni(ŠifraZap, JMBG, LK, Mail, Ime, Prezime, Telefon, ŠifraMesta, ŠifraUlice, Br )

Zaposleni(ŠifraZap, JMBG, Ime, Prezime)

ZaposleniDetalji(ŠifraZap, LK, Mail, Telefon, ŠifraMesta, ŠifraUlice, Br )

Pravljenje pogleda

CREATE VIEW ZAPOSLENI_VIEW AS SELECT  Z.SifraZap,  Z.JMBG,  Z.Ime, Z.Prezime, ZD.LK, ZD.Mail, ZD.Telefon,

ZD.SifraMesta, ZD.SifraUlice, ZD.Br FROM Zaposleni Z, ZaposleniDetalji ZD 

WHERE Z.SifraZap = ZD.SifraZap;

Instead of trigger 

CREATE TRIGGER InsertInView ON ZAPOSLENI_VIEW INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON IF (NOT EXISTS (SELECT Z.SifraZap 

FROM Zaposleni Z, Inserted I WHERE Z.SifraZap = I.SifraZap)) 

INSERT INTO Zaposleni SELECT SifraZap, JMBG, Ime, Prezime FROM Inserted 

IF (NOT EXISTS (SELECT ZD.SifraZap FROM ZaposleniDetalji ZD, Inserted I WHERE ZD.SifraZap = I.SifraZap)) 

INSERT INTO ZaposleniDetalji SELECT SifraZap, LK, Mail, Telefon, SifraMesta, SifraUlice, Br FROM Inserted 

END 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 26/29

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 27/29

  Delete DA

Prilikom brisanjaStavkeRacuna, okida setrigerkoji poziva proceduru zaažuriranje polja Ukupno naRacunu.

Triger1:

CREATE TRIGGER NeMenjajUkupno ON [dbo].[RacunKupcu] 

AFTER UPDATE AS BEGIN IF UPDATE ([Ukupno]) 

RAISERROR('NE SME SE MENJATI!', 16, -1) END

Triger2:

CREATE TRIGGER [dbo].[TrigerStavkaRacunaUI] ON  [dbo].[StavkaRacunaKupcu] AFTER INSERT,UPDATE 

AS declare @SifraRacunaKupcu int, 

@Ukupno decimal (18,3) 

BEGINALTER TABLE [dbo].[RacunKupcu] DISABLE TRIGGER [NeMenjajUkupno]

SET NOCOUNT ON; Select @SifraRacunaKupcu=SifraRacunaKupcu From Inserted 

EXEC sp_SumaStavkiRacuna @SifraRacunaKupcuALTER TABLE [dbo].[RacunKupcu] ENABLE TRIGGER [NeMenjajUkupno]

END

Triger3:

CREATE TRIGGER [dbo].[TrigerStavkaRacunaD] ON  [dbo].[StavkaRacunaKupcu] AFTER DELETE 

AS declare @SifraRacunaKupcu int, 

@Ukupno decimal (18,3) 

BEGINALTER TABLE [dbo].[RacunKupcu] DISABLE TRIGGER [NeMenjajUkupno]

SET NOCOUNT ON; Select @SifraRacunaKupcu=SifraRacunaKupcu From Deleted EXEC sp_SumaStavkiRacunaKupcu @SifraRacunaKupcu 

ALTER TABLE [dbo].[RacunKupcu] ENABLE TRIGGER [NeMenjajUkupno] 

END 

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 28/29

U nastavku slei kô proceure za oređivanje ukupnog iznosa računa:

CREATE PROCEDURE [dbo].[sp_SumaStavkiRacuna] @SifraRacunaKupcu int = 0AS 

BEGIN SET NOCOUNT ON; 

declare @ukupno numeric(18,0); SELECT @ukupno = 

SUM(Kolicina*JedCena) FROM StavkaRacunaKupcu WHERE SifraRacunaKupcu=@SifraRacunaKupcu; 

UPDATE RacunKupcu SET Ukupno = @ukupno WHERE RacunKupcu.SifraRacunaKupcu = @SifraRacunaKupcu END

7.4.  Hard – Coded Values tehnika optimizacije

Ova tehnika podrazumeva da se vrednosti referencirane tabele izraze upotrebom

aplikacionog koa, pri čemu referencirana tabela nestaje, ok se u referencirajudu tabelu

dodaje atribut koji zamenjuje referenciranu tabelu.

Firma-Klijent   Zaposleni

SifraUgovora#

Datum

0,M

1,1

Ugovor 0,1

0,M

0,1

 Način plaćanja

0,M

1,1

SifraNP#

 Naziv

BrojPrimeraka

 

Ugovor(ŠifraUgovora, Datum, BrojPrimeraka, ŠifraZap, ŠifraKlijenta, ŠifraNP )

NačinPladanja(ŠifraNP, Naziv)

8/12/2019 Opis Problema

http://slidepdf.com/reader/full/opis-problema 29/29

Ako se uzme u obzir a relacija Način pladanja ima samo ve n–torke, s obzirom a način

pladanja može biti preko uplatnice, e-uplatnice, postFin-om, virmanom može se izvršiti Har

 – Coe Values optimizacija, pri čemu se obija sleedi konceptualni model:

Firma-Klijent   Zaposleni

SifraUgovora#

Datum

0,M

1,1

Ugovor 0,1

0,M

0,1

BrojPrimeraka

 NačinPlaćanja

 

Ugovor(ŠifraUgovora, Datum, BrojPrimeraka, NačinPladanja, ŠifraZap, ŠifraK lijenta )