Baze podataka – projektiranje i normiranje
praktični primjer
Videoteka - model praktičnog primjera Nak Nakon on obav obavlj ljen enog og usmj usmjer eren enog og razg razgov ovor oraa s naru naruči čite telj ljem em info inform rmac acij ijsk skog og sust sustav avaa Videoteka, napravljene su slijedeće bilješke: Videoteka upisuje članove koji posuđuju na određeni period kasete period kasete različitih naslova . Članovi su opisani imenom, prezimenom, kućnom adresom i brojem telefona . Član se ne može upisati ako nisu poznati ovi atributi, radi vraćanja zaboravljenih kaseta. Na svaku kasetu je snimljen samo jedan naslov ( film ). Naslov je opisan nazivom djela ( filma), žanrom, trajanjem u minutama , kratkim sadržajem te akterima , kao što su producent, svakoj oj kaseti se vodi vodi evide evidenci ncija ja njenog njenog stanja reži režiser ser,, glavni glavni i ostal ostalii glumci glumci . O svak (istrošenosti), radi planiranja zamjena. Kasete se izdaju za trajanje od jednog do više dana, a najam se naplaćuje na dan vraćanja, po jedinstvenoj cijeni Kuna/dan. Članovi često žele izabrati jedan izabrati jedan od naslova njihovih omiljenih glumaca. Među imenicama (tiskanim masnim podvučenim kurzivom), tražimo imena entiteta ili (imenice tiskane masnim kurzivom) su kandidadti za atribute, a glagoli sugeriraju metode ( SQL upit ). Entitetski kandidati:
Članovi # Identifikator člana * Ime * Prezime * Poštanski broj * Mjesto * Ulica i Kućni broj * Telefon o Datum Rodjenja o Spol Naslovi # Identifikator naslova * Naslov o Trajanje minuta o Žanr o Opis Kasete # Identifikator kasete * Naslov * Stanje
Uvod u informacijske sustave
1
Baze podataka – projektiranje i normiranje
praktični primjer
Akteri # Identifikator aktera o Ime * Prezime PosudbaKaseta # Identifikator člana # Identifikator kasete # Datum izdavanja o Planirani datum vraćanja o Stvarni datum vraćanja
Uvod u informacijske sustave
2
Baze podataka – projektiranje i normiranje
praktični primjer
Analizom entiteta, zaključujemo na relacije:
Clanovi # * * $
ClanID Ime Prezime PostaID
* * o o o $
Ulica Kbr KbrDodatak Kat DatumRodjenja Spol
Max dužina Int4 – Autoident 4 varchar(30) 30 varchar(30) 30 Int4 - Strani ključ – ref: 4 Poste varchar(50) 50 Int2 2 varchar(10) 10 Int2 2 smalldatetime 4 Int1 – Strani ključ ref: 1 Spolovi
Total:
Prosječna dužina 4 7 8 4 12 2 1 2 4 1
137
45
Max dužina 4 30
Prosječna dužina 4 9
35
13
Max dužina 1 30
Prosječna dužina 1 6
31
7
Max dužina 4 80 2 1 1024
Prosječna dužina 4 16 2 1 250
1111
273
Max
Prosječna
Poste # *
PostaID Posta
Int4 varchar(30)
Total:
Spolovi # *
SpolID Spol
Int1 varchar(30)
Total:
Naslovi # * o $ o
NaslovID Naslov TrajanjeMin ZanrID Opis
Int4 – Autoident varchar(80) Int2 Int1 varchar(1024)
Total:
Zanrovi Uvod u informacijske sustave
3
Baze podataka – projektiranje i normiranje
# *
ZanrID Zanr
Int1 varchar(30)
Total:
praktični primjer
dužina 1 30
dužina 1 6
31
7
Max dužina 4 4 1
Prosječna dužina 4 4 1
9
9
Max dužina 1 30
Prosječna dužina 1 10
31
11
Max dužina 4 30 30 255
Prosječna dužina 4 10 10 60
219
84
Max dužina 4 4 1
Prosječna dužina 4 4 1
9
9
Max dužina 1 30
Prosječna dužina 1 12
Kasete # $ $
KasetaID NaslovID StanjeKaseteID
Int4 - Autoident Int4 – ref: Naslovi Int1
Total:
StanjeKaseta # *
StanjeKaseteID StanjeKasete
Int1 varchar(30)
Total:
Akteri # o * o
AkterID Ime Prezime Opis
Int4 – Autoident varchar(30) varchar(30) varchar(255)
Total:
AkteriUloge #$ #$ #$
AkterID NaslovID UlogaID
Int4 ref: Akteri Int4 ref: Naslovi Int1 ref: Uloge
Total:
Uloge # *
UlogaID Uloga
Int1 varchar(30) Uvod u informacijske sustave
4
Baze podataka – projektiranje i normiranje
praktični primjer
Total:
31
13
PosudbeKaseta #$ #$ # o o
KasetaID ClanID DatumIzdavanja PlaniraniDatumVracanja DatumVracanja
Int4 ref: Kasete Int4 ref:Clanovi smalldatetime smalldatetime smalldatetime
Total:
Max dužina 4 4 4 4 4
Prosječna dužina 4 4 4 4 4
20
20
Objašnjenje: -
varchar(n) je varijabilni tekst maksimalne dužine n znakova, s tim da stvarno zauzeti prostor odgovara broju stvarno unijetih znakova (+ m byte-ove za zapis dužine teksta). Int1 – 1 byte-ni cio broj, 0 ... 255 ili –128 ...0 ... 127, ovisno bazi Int2 – 2 byte-ni cio broj, -32786 ...0 ... 32767 Int4 – 4 byte-ni cio broj ( -2**31 ...0 ... 2**31 –1 ) Autoident – baza generira broj kod insertiranja zapisa smalldatetime – zapis datuma, način zapisa ovisi o bazi, rezolucija reda minuta, ( kod MS SQL Server 2000, 4 byte) * - Obvezan unos, Null vrijednost nije dopuštena $ - Strani ključ ref – Referentna tablica o – unos nije obvezan, dopuštena je Null vrjednost # - dio primarnog ključa, unos obvezan
Maksimalna i očekivana dužina služe kao podloga za izračunavanje potrebnog prostora za pohranu tablica.
Uvod u informacijske sustave
5
Baze podataka – projektiranje i normiranje
praktični primjer
Model entiteti – veze ( MS SQL Server 2000)
Uvod u informacijske sustave
6
Baze podataka – projektiranje i normiranje
praktični primjer
Funkcije ( metode )
Članovi - Upis novog člana - Promjena podataka člana - Brisanje člana - Traženje Naslovi - Upis novog naslova - Promjena podatakao o naslovu - Brisanje naslova - Traženje Kasete - Upis nove kopije - Promjena stanja kopije - Traženje Akteri - Upis - Promjena - Brisanje - Traženje Izdavanje – vraćanje kaseta - Izdavanje - Vraćanje
Uvod u informacijske sustave
7
Baze podataka – projektiranje i normiranje
praktični primjer
Impementacija objekata baze podataka – primjer dviju tablica ( Microsoft SQL Server 2000 ): CREATE TABLE [dbo].[Akteri] ( [AkterID] [int] IDENTITY (1, 1) NOT NULL , [Ime] [varchar] (30) NULL , [Prezime] [varchar] (30) NOT NULL , [DatumRodjenja] [smalldatetime] NULL ) ON [PRIMARY] CREATE TABLE [dbo].[Clanovi] ( [ClanID] [int] IDENTITY (1, 1) NOT NULL , [Ime] [varchar] (30) NOT NULL , [Prezime] [varchar] (30) NOT NULL , [DatumRodjenja] [smalldatetime] NULL , [JMBG] [bigint] NULL , [PostaID] [int] NOT NULL , [Ulica] [varchar] (50) NOT NULL , [Kbr] [smallint] NOT NULL , [KbrDodatak] [varchar] (10)NULL , [Kat] [smallint] NULL , [TelefonOperater] [smallint] NULL , [TelefonBroj] [int] NOT NULL , [email] [varchar] (100) NULL ) ON [PRIMARY] ALTER TABLE [dbo].[Akteri] WITH NOCHECK ADD CONSTRAINT [PK_Akteri] PRIMARY KEY CLUSTERED ( [AkterID] ) ON [PRIMARY] ALTER TABLE [dbo].[Clanovi] WITH NOCHECK ADD CONSTRAINT [PK_Clanovi] PRIMARY KEY CLUSTERED ( [ClanID] ) ON [PRIMARY]
Uvod u informacijske sustave
8