Kaspars Cikmačs
3Dz1
DatZB 95014
Datu bāzu pārvaldības sistēmas
Praktiskais darbs
Rīga, 1998.g.
Saturs
Saturs................................................................................................................................................
Uzdevums.........................................................................................................................................
Uzdevuma nosaukums...............................................................................................................
Uzdevuma nostādne..................................................................................................................
Atskaites forma..........................................................................................................................
Uzdevuma risinājums.............................................................................................................
ER-modelis.....................................................................................................................................
SQL realizācija..........................................................................................................................
Tabulu definīcijas......................................................................................................................
Relāciju shēmas........................................................................................................................
PRECES........................................................................................................................................
PIEGADATAJI..............................................................................................................................
SOLDPRECES.............................................................................................................................
Funkcionālo atkarību grafi..........................................................................................
Lietotāju skatu izveide.....................................................................................................
Datu ievads..................................................................................................................................
Datubāzes administrēšana............................................................................................
Normālformas.........................................................................................................................
Uzdevums
Uzdevuma nosaukums
Veikals
Uzdevuma nostādne
Veikalā ir ziņas par esošajām precēm, par
piegādātājiem, par pārdotajām precēm..
Jāizveido datubāze:
·
Vajag sniegt izziņas par precēm, par preču pārdošanu
(vēsture ar statistiku)
·
Vajag mainīt informāciju
·
Vajag administrēt datu bāzi
Atskaites forma
Jābūt ER-diagrammai, relāciju shēmām,
funkcionālo atkarību grafiem, jāuzrāda rezultējošās normālformas (vai jāpamato
atkāpes no tām). Jābūt SQL realizācijai.
Uzdevuma risinājums
Izveidoju 3 tabulas:
PRECES
Šeit glabājas visas preces un to identifikatori
(kodi). Tabula satur arī datus par preces skaitu noliktavā, iepirkuma cenu,
pārdošanas cenu, nosaukumu, tās piegādātāju.
PIEGĀDĀTĀJI
Šeit glabājas informācija par visiem
piegādātājiem. Tabula satur piegādātāja identifikatoru (kodu), piegādātāja
nosaukumu, adresi, telefonu, kontakpersonas vārdu, uzvārdu.
PĀRDOTĀS PRECES
Šeit glabājas informācija par visā pārdotajām
precēm. Tabula satur darijuma identifikatoru (kodu), preces kodu, skaitu un
cenu par kuru pārdots.
ER-modelis
SQL realizācija
Tabulu definīcijas
create table preces
( preckods num(3) not null,
name varchar(20)
not null,
piegkods num(3)
not null,
iecena
decimal(4,2),
cena decimal(4,2),
primary key
(preckods) )
create table piegadataji
( piegkods num(3)
not null,
name varchar(20)
not null,
adr varchar(20),
phone varchar(10),
person
varchar(20),
primary key
(piegkods) )
create table soldpreces
( darnr num(3) not
null,
preckods num(3)
not null,
skaits integer,
cena num(3),
datums timestamp
primary key
(darnr) )
Relāciju shēmas
PRECES
Lauks
|
Null?
|
Datu
tips
|
Paskaidrojums
|
PRECKODS
|
NOT NULL
|
Num (3)
|
Preces kods (identifikātors)
|
NAME
|
NOT NULL
|
VarChar(20)
|
Preces nosaukums
|
PIEGKODS
|
NOT NULL
|
Num(3)
|
Piegādātāja kods
(identifikātors)
|
IECENA
|
|
Decimal(4,2)
|
Preces iepirkuma cena
|
CENA
|
|
Decimal(4,2)
|
Preces pārdošanas cena
|
PIEGADATAJI
Lauks
|
Null?
|
Datu
tips
|
Paskaidrojums
|
PIEGKODS
|
NOT NULL
|
Num (3)
|
Piegādātāja kods
(identifikātors)
|
NAME
|
NOT NULL
|
VarChar(20)
|
Piegādātāja nosaukums (firma)
|
ADR
|
|
VarChar(20)
|
Piegādātāja adrese
|
PHONE
|
|
VarChar(10)
|
Piegādātāja telefona numurs
|
PERSON
|
|
VarChar(20)
|
Kontaktpersonas vārds, uzvārds
|
SOLDPRECES
Lauks
|
Null?
|
Datu
tips
|
Paskaidrojums
|
DARNR
|
NOT NULL
|
Num (3)
|
Darijuma numurs (ident.)
|
PRECKODS
|
NOT NULL
|
Num(3)
|
Preces kods (identifikātors)
|
SKAITS
|
|
Integer
|
Pārdoto preču skaits
|
CENA
|
|
Decimal(4,2)
|
Cena par kuru prece pārdota
|
DATUMS
|
|
TimeStamp
|
Darijuma datums
|
Funkcionālo atkarību grafi
Lietotāju skatu izveide
·
Skats ALL_SOLD attēlo informāciju par visām
pārdotajām precēm.
create view all_sold as select
s.darnr as DarijNR,
p.name as PrecesNosaukums,
i.name as Piegadatajs,
s.skaits as Skaits,
s.cena as Cena,
(s.cena*s.skaits) as Summa,
s.datums as Kad
from
preces as p,
soldpreces as s,
piegadataji as i
where p.preckods=s.preckods and
p.piegkods=i.piegkods
db2 => select * from all_sold
DARIJNR PRECESNOSAUKUMS PIEGADATAJS SKAITS
CENA SUMMA DATUMS
------- --------------- ----------- ------- ------
-----.--------------
1. sviests Piena kombinats 5
0.40 2.00 1998-06-02-13.23...
2. sviests Piena kombinats 5
0.40 2.00 1998-06-05-20.00...
3. piens Piena kombinats 2
0.41 0.82 1998-06-07-20.00...
4. maize XL maiznieks 34
0.20 6.80 1997-03-07-12.00...
5. bulcina XL maiznieks 23
0.11 2.53 1998-05-07-13.10...
6. bulcina XL maiznieks 14
0.11 1.54 1998-05-07-16.10...
7. piens Piena kombinats 4
0.22 0.88 1998-05-07-17.14...
7 record(s)
selected.
·
Skats ALL_PRECES attēlo informāciju par visām
precēm.
create view all_preces as select
p.preckods
as Kods,
p.name
as Nosaukums,
i.name
as Piegadatajs,
p.iecena
as IepirkumaCena,
p.cena
as IeteicamaCena
from
preces
as p, piegadataji as i
where i.piegkods=p.piegkods
db2 => select * from all_preces
KODS
NOSAUKUMS
PIEGADATAJS IEPIRKUMACENA
IETEICAMACENA
----- -------------------- --------------------
------------- -------------
1. sviests Piena kombinats 0.24 0.40
2. maize XL maiznieks 0.14 0.22
3. piens Piena kombinats 0.12 0.19
4. kefirs Piena kombinats 0.13 0.15
5. bulcina XL maiznieks 0.07 0.11
5 record(s)
selected.
·
Skats SOLD1998 attēlo informāciju par visām
precēm, kuras ir pārdotas 1998. gadā
create
view sold1998 as select
darnr,
p.name as prece,
skaits,
s.cena Cena
s.cena*s.skaits as Summa,
datums
from
soldpreces as s, prece as p
where
datums>'1998-01-01-00.00.00.000000'
and p.preckods=s.preckods
db2 => select * from sold1998
DARNR PRECE
SKAITS CENA SUMMA DATUMS
----- -------------------- ----------- ------ -----------------
----------------
1. sviests 5 0.40 2.00 1998-06-02-13.23
2. sviests 5 0.40 2.00 1998-06-05-20.00
3. piens 2 0.41 0.82 1998-06-07-20.00
5. bulcina 23 0.11 2.53 1998-05-07-13.10
6. bulcina 14 0.11 1.54 1998-05-07-16.10
7. piens 4 0.22 0.88 1998-05-07-17.14
6 record(s) selected.
·
Skats TOTAL1998 parāda 1998. gadā gūtos
ienākumus no preču pārdošanas
create
view total1998 as select
sum(skaits*cena)
as total
from
soldpreces
where
datums>'1998-01-01-00.00.00.000000'
Izvads:
db2 => select * from total1998
TOTAL
---------------------------------
9.77
1 record(s) selected.
·
Skats SUMBYPIEG parāda pa kādu summu ir
pārdotas katra piegādātāja preces
create view sumbypieg as select
i.name,
sum(skaits*s.cena)
as summa
from
piegadataji
as i,
preces
as p,
soldpreces
as s
where
s.preckods=p.preckods
and
p.piegkods=i.piegkods
group by i.name
Datu ievads
·
Preču
ievade
insert into preces
( preckods, name, piegkods, iecena,
cena)
values
( 1,'sviests',1,0.24,0.40)
·
Piegādātāju
ievade
insert into piegadataji
( piegkods, name, adr, phone, person)
values
( 1,'Piena kombinats',’Piena iela
4’,’9252177’,’Inga Grinberga’)
·
Preces
pārdošanas darijuma ievade
insert into soldpreces
( darnr, preckods, skaits, cena,
datums)
values
( 1, 1, 5, 0.40, '1998-06-05-20.00.00')
Informācijas mainīšana
update preces set name='sviests' where preckods=1
Ieraksta dzēšana
delete from preces where preckods=3
Tabulas dzēšana
drop table piegadataji
Izziņas
·
Pārdotās preces
db2 => select * from all_sold
DARIJNR PRECESNOSAUKUMS PIEGADATAJS SKAITS
CENA SUMMA DATUMS
------- --------------- ----------- ------- ------
-----.--------------
1. sviests Piena kombinats 5
0.40 2.00 1998-06-02-13.23...
2. sviests Piena kombinats 5
0.40 2.00 1998-06-05-20.00...
3. piens Piena kombinats 2
0.41 0.82 1998-06-07-20.00...
4. maize XL maiznieks 34
0.20 6.80 1997-03-07-12.00...
5. bulcina XL maiznieks 23
0.11 2.53 1998-05-07-13.10...
6. bulcina XL maiznieks 14
0.11 1.54 1998-05-07-16.10...
7. piens Piena kombinats 4
0.22 0.88 1998-05-07-17.14...
7 record(s)
selected.
·
Preces
db2 => select * from all_preces
KODS
NOSAUKUMS
PIEGADATAJS IEPIRKUMACENA
IETEICAMACENA
----- -------------------- --------------------
------------- -------------
1. sviests Piena kombinats 0.24 0.40
2. maize XL maiznieks 0.14 0.22
3. piens Piena kombinats 0.12 0.19
4. kefirs Piena kombinats 0.13 0.15
5. bulcina XL maiznieks 0.07
0.11
5 record(s)
selected.
·
Pārdotās preces 1998
gadā
db2 => select * from sold1998
DARNR PRECE
SKAITS CENA SUMMA DATUMS
----- -------------------- ----------- ------
----------------- ----------------
1. sviests 5 0.40 2.00 1998-06-02-13.23
2. sviests 5 0.40 2.00 1998-06-05-20.00
3. piens 2 0.41 0.82 1998-06-07-20.00
5. bulcina 23 0.11 2.53 1998-05-07-13.10
6. bulcina 14 0.11 1.54 1998-05-07-16.10
7. piens 4 0.22 0.88 1998-05-07-17.14
6 record(s) selected.
·
1998. gada ienākumi
no pārdotajām precēm.
db2 => select * from total1998
TOTAL
---------------------------------
9.77
1 record(s) selected.
·
Iegūtās summas
sagrupētas pēc to piegādātāja
db2 => select * from sumbypieg
NAME SUMMA
--------------------
-----------------------
Piena kombinats 5.70
XL maiznieks 10.87
2 record(s) selected.
·
Iegūtā peļņa no
katra darījuma
db2 => select p.iecena, s.cena, s.cena-p.iecena as
pelna, p.name from preces as p, soldpreces as s where p.preckods=s.preckods
IECENA CENA PELNA
NAME
------ ------ -------
--------------------
0.24 0.40 0.16 sviests
0.24 0.40 0.16 sviests
0.12 0.41 0.29 piens
0.14 0.20 0.06 maize
0.07 0.11 0.04 bulcina
0.07 0.11 0.04 bulcina
0.12 0.22 0.10 piens
7 record(s) selected.
·
Kopējā peļņa
db2 => select sum(s.cena-p.iecena) as koppelna from preces as p, soldpreces as
KOPPELNA
---------------------------------
0.85
1 record(s) selected.
Datubāzes administrēšana
piešķirt tiesības
apskatīt tabulas
GRANT SELECT ON PRECES TO USTR
GRANT SELECT ON ALL_SOLD TO USTR
GRANT SELECT ON PIEGADATAJI TO USTR
apskatīt
visas manis veidotas tabulas, skatus:
select tabname from syscat.tables where
tabschema='SD50014'
Normālformas
Tabulas PRECES, PIEGADATAJI,
SOLDPRECES ir trešajā normālformā, jo izpildās trešās normālformas definīcija:
IR 1 NF, jo visi atribūti ir
atkarīgi no primārās atslēgas, tabulas nesatur atkārtojošos grupu.
IR 2 NF, jo ir 1 NF un
neviens nav atkarīgs tikai uz daļu no primārās atslēgas.
IR 3 NF, jo ir 2 NF un
tabulas satur netranzitīvas atkarības. (Neviens
no relāciju shēmas neprimārajiem atribūtiem nav tranzitīvi atkarīgs no katras
iespējamās atslēgas).
Nav komentāru:
Ierakstīt komentāru