Datu bāzu pārvaldības sistēmas







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