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
SifraKlijenta#
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#
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#
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 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 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 )