Referencijalni integritet, uvod u SQL, ogranicenja ... podataka/Predavanja/05 - BP -...

38
Integritet podataka SQL upitni jezik Kreiranje objekata u bazi podataka Referencijalni integritet, uvod u SQL, ograniˇ cenja, kreiranje tablica 6. tjedan T. Cari´ c, T. Erdeli´ c Zavod za inteligentne transportne sustave Fakultet prometnih znanosti Sveuˇ ciliˇ ste u Zagrebu Baze podataka T. Cari´ c, T. Erdeli´ c ITS::Baze podataka (6. tjedan )1/38

Transcript of Referencijalni integritet, uvod u SQL, ogranicenja ... podataka/Predavanja/05 - BP -...

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Referencijalni integritet, uvod u SQL,ogranicenja, kreiranje tablica

6. tjedan

T. Caric, T. Erdelic

Zavod za inteligentne transportne sustaveFakultet prometnih znanosti

Sveuciliste u Zagrebu

Baze podataka

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )1/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Pregled 1. poglavlja

Integritet podatakaPravila integriteta podatakaReferencijalni integritet

SQL upitni jezik

Kreiranje objekata u bazi podataka

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )2/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Integritet podataka

I Integritetom podataka osigurava se njihova suvislost idosljednost uporabe

I Pravila integriteta: ogranicenja na pojavljivanje vrijednostiatributa i njihovo medusobno povezivanje

I Domena se definira za svaki atribut entiteta i predstavlja skupvrijednosti koje odredeni atribut moze poprimiti

I Referencijalni integritet osigurava logicnu vezu i pravila odnosaizmedu podataka u povezanim tablicama

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )3/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Referencijalni integritet

Referencijalni integritetReferencijalni integritet osigurava logicnu vezu i pravila odnosaizmedu podataka u povezanim tablicama.

I U tablici ne moze postojati vrijednost stranog kljuca za kojune postoji jednaka vrijednost primarnog kljuca u osnovnojtablici

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )4/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Referencijalni integritet

I Referencijalni integritet definira pravilaI UnosaI BrisanjaI Promjene (azuriranja podataka)

I Kako bi se osigurala dosljednost (konzistentnost) podataka ubazi podataka

I Projektant baze definira ponasanje bazeI Trazena akcija se odbija i u bazi se na dogadaju nikakve

promjeneI Akcija se dopusta, ali se uz nju pokrecu akcije koje moraju

uspostaviti konzistentnost baze podataka

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )5/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Unos podataka

I Unos podataka - zabranjen je unos podatka u tablicu, snekom vrijednosti stranog kljuca, ako u osnovnoj tablici nepostoji ista vrijednost primarnog kljuca (restricted)

I PRIMJER: Ne moze se u tablicu Student dodati redak kojikao vrijednost atributa MjestoId koja je ujedno i strani kljucpoprima vrijednost koje nema u tablici Mjesto

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )6/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Brisanje podataka

I Ograniceno (restricted)I Brisanje reda sa odredenom vrijednoscu primarnog kljuca

dozvoljeno je samo ako se ta vrijednost ne pojavljuje u drugojtablici kao strani kljuc

I PRIMJER: Ne moze se ukloniti pojedini redak iz tabliceMjesto, ako u tablici Student postoje njegove reference.

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )7/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Brisanje podataka

I Stupnjevano ili kaskadno brisanje (cascade)I Brisanje podatka sa odredenom vrijednosti primarnog kljuca

izaziva brisanje svih podataka u drugoj tablici gdje se tavrijednost primarnog kljuca pojavljuje kao strani kljuc

I PRIMJER: Brisanjem redka iz tablice mjesto sa Id-em 2izbrisali bi se svi redci u tablici student koji referenciraju tajredak iz tablice Mjesto

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )8/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Brisanje podatakaI Nuliranje (nullifies)

I Brisanjem odredene vrijednosti primarnog kljuca, najprije sesve iste vrijednosti stranog kljuca postavljaju na NULLvrijednost, a onda se iz osnovne tablice brise ta vrijednostprimarnog kljuca

I PRIMJER: Brisanjem pojedinog redka iz tablice Mjesto,najprije se sve vrijednosti stranog kljuca koje referenciraju tajredak postavljaju na NULL, a potom se uklanja zeljeni podatakiz tablice Mjesto

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )9/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podatakaPravila integriteta podatakaReferencijalni integritet

Azuriranje podataka

I Azuriranje podatakaI Ograniceno (restricted) - azuriranje vrijednosti primarnog

kljuca dozvoljeno je samo ako se ta vrijednost ne pojavljuje udrugoj tablici kao strani kljuc

I Stupnjevito ili kaskadno azuriranje (cascade) - azuriranjevrijednosti primarnog kljuca izaziva azuriranje svih podataka udrugoj tablici gdje se ta vrijednost primarnog kljuca pojavljujekao strani kljuc

I Nuliranje (nullifies) - azuriranjem odredene vrijednostiprimarnog kljuca, najprije se sve iste vrijednosti stranog kljucapostavljaju na NULL vrijednost, a onda se u osnovnoj tablicimijenja vrijednost primarnog kljuca

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )10/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Pregled 2. poglavlja

Integritet podataka

SQL upitni jezikUvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Kreiranje objekata u bazi podataka

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )11/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Pocetak SQL

I SQL je nastao 1974 u IBM Research Laboratoryu podnazivom SEQUEL (Structured English Query Language)

I SEQUEL je kasnije preimenovan u SQL (Structured QueryLanguage)

I Razlog: jedna zrakoplovna kompanija u to vrijeme je imalazasticen brend SEQUEL

I Cilj jezika je bilo priblizavanje relacijskih baza korisnicima te jezbog toga koncept jezika intuitivan

I SQL je bio nadmocan naspram svih dotadasnjih jezika za radsa bazama podataka, te je zbog toga prihvacen

I SQL spada u neproceduralne jezike 4 generacijeI Opisuje sto zelimo dobiti kao rezultat, a ne kako doci do njegaI U DBMS je ugraden optimizator upita koji pronalazi

najefikasniji nacin izvrsavanja upitaT. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )12/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Standardi SQL

I SQL je standardni jezik relacijskih baza podataka (databaselanguage)

I Postojeci standardi suI 1986. god. - SQL-86 ili SQL1 (prva verzija standarda - ANSI)I 1992. god. - SQL-92 ili SQL2

I Poboljsani dinamicki upiti, dodani kursori i izvjestaji ogreskama...

I 1999. god. - SQL:1999I Dodani rekurzivni upiti, okidaci, kontrola toka i neke

objekto-orijentirane znacajkeI 2003. god. - SQL:2003

I Dodana podrska za XMLI 2006. god. - SQL:2006I 2008. god. - SQL:2008I 2011. god. - SQL:2011

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )13/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Cilj standardizacije SQL

I Cilj standardizacijeI Prenosivost definicija baza podataka izmedu razlicitih

implementacija DBMS-a (MySQL, SQL Server, Oracle. . . )I Stvarnost je takva da implementacije nisu kompatibilne u

potpunostiI Problem kompatibilnosti

I Razne tvrte kao npr. Microsoft i Oracle rade svoje varijacijeSQL-a te ga dodatno prosiruju

I Oracle prosirenje - PL/SQLI Microsoft prosirenje - Transact-SQL (T-SQL)

I Razlozi nekompatibilnostiI Velicina SQL standarda (cesto se ne implementira do kraja)I Standard ne specificira nekoliko kljucnih podrucja kao sto je

indeksiranjeI U nekim dijelovima je dvosmislen, nije precizan pa ga se

razlicito tumaciT. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )14/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Podjela SQL

I SQL se dijeli naI Jezik za definiciju strukture - DDL (Data Definition

Language)I Definira strukturu objekata u bazi podatakaI Primjeri DDL naredbi su

I CREATEI ALTERI DROP

I Jezik za manipulaciju podacima - DML (DataManipulation Language)

I Naredbe vrse manipulaciju podacima (dohvacanje, azuriranje)I Primjeri DML naredbi su

I SELECTI UPDATEI INSERT

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )15/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

SQL objekti

I U tablici su prikazani SQL objekti s kojima cemo raditi unutarovog kolegija

Baza podataka DatabaseRelacija (tablica) Table

Atribut (stupac, kolona) ColumnSinonim (alias) Alias

Ogranicenje ConstraintIndeks Index

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )16/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

SQL imenovanje objekata

I Imena objekata koje se kreiraju ne mogu biti jednaka SQLkljucnim rjecima (SELECT, UPDATE, FROM, ...)

I Ime moze sadrzavati najvise 128 znakovaI Prvi znak mora biti slovo ili ’ ’I Unutar i na kraju imena mogu se koristiti i brojke

I PRIMJERI Student, student, student11, stu1dent => ISPRAVNOI Mjesec.2012, st*udent, 11student, => NE ISPRAVNO

I SQL je neosjetljiv (case insensitive) na velika i mala slovaizmedu kljucnih rjeci i imena objekata

I SeLect * From STUDENT = SELECT * FROM StudeNt

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )17/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Pravila imenovanje objekata

I Pravila imenovanja se uvode zbog urednosti pisanja SQL kodaI Nisu obavezna, ali postoje nepisana pravila kako bi se lakse

snalazili po svom i tudem SQL koduI Pravila

I Naziv tablice – se pise u jednini bez hrvatskih slova (c, c. . . )I Student, Vozac, Automobil, Vlak, ...

I Primarni kljuc – se oznacava sa Id ili Id + naziv tabliceI U tablici Student primarni kljuc treba biti Id ili IdStudent

I Strani kljuc – pise se na nacin da se prvo napise ime tablicena koju se referencira + Id

I Ako u tablici Student imamo strani kljuc na tablicu Mjestostrani kljuc treba imenovati sa MjestoId

I SQL kljucne rijeci – pisu se velikim slovima

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )18/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Koristenje komentara unutar SQL

I Postoje dvije vrste komentaraI Blok komentari - komentiraju vise linija koda (/* ... */)

/∗ Ovo j ev i s e l i n i j s k i komentar ∗/

I Linijski komentari - komentiraju samo 1 liniju koda (−− ...)

−−Ovo j e komentarSELECT ∗ FROM City −−Ovo j e komentar

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )19/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Citanje sintaksnih dijagrama

I Svaka osnovna naredba koju naucimo prikazati ce sesintaksnim dijagramima gdje sljedece opcije oznacavaju

| - razdvaja ponudene opcije{ } - uokviruju stavke koje su obavezne[ ] - uokviruju stavke koje nisu obavezne

[, . . . n] - stavka koja se nalazi ispred zareza moze seponoviti jednom ili vise puta

Rijeci napisane velikim slovima - kljucne SQL rijeci itreba ih pisati tocno tako

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )20/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Tipovi podataka

Tip podatkaTip podatka odreduje koju vrstu podatka odredeni atribut mozesadrzavati te operacije koje se mogu vrsiti na tom skupuvrijednosti.

I Predefinirani tipovi podatakaI Egzaktni brojeviI Aproksimirani brojeviI Vremenski i datumskiI ZnakovniI BinarniI Ostali

I Korisnicki definirani tipovi – njima se necemo baviti

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )21/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Egzaktni brojevi

I Egzaktni brojevi su oni koji se mogu zapisati u racunalu tocnoonakvi kakvi jesu

I DBMS interno jednu od vrijednosti iz raspona obicno krajnjukoristi za pohranu NULL vrijednosti

Podatkovni tip Raspon vrijednosti Zauzece memorijebigint −263 do 263 − 1 8B

int −231 do 231 − 1 4Bsmallint −215 do 215 − 1 4Btinyint 0 do 255 1B

bit 1 ili 0 (TRUE ili FALSE) 2B

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )22/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Egzaktni brojevi

I Osim spomenutih u egzaktne brojeve spadaju jos numeric,decimal, money i smallmoney tipovi podataka

I Podatkovnim tipom decimal(m,n) zapisuju se brojevi sadecimalnim zarezom

I m - predstavlja ukupan broj znamenkiI n - predstavlja broj znamenki iza decimalnog zarezaI NPR. DECIMAL(10,3) - predstavlja decimalni broj sa najvise

15 znamenki, od toga se najvise 3 znamenke mogu nalaziti izadecimalnog zareza

I Decimal tip podatka brojeve pohranjuje bez numerickepogreske za razliku od broja sa plivajucim zarezom - float

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )23/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Aproksimirani brojevi

I Aproksimirani brojevi su brojevi kojima spremamo pribliznoprikazive vrijednosti

Podatkovni tip Raspon vrijednosti Memorijafloat[(n)] −1, 79 ∗ 10308 do 1, 79 ∗ 10308 4B-8B

real −3, 40 ∗ 10308 do 3, 40 ∗ 10308 4B

I n - broj bitova potrebnih da se spremi mantisa i od njegazavisi potrosnja memorije

I Ako je n specificiran njegova vrijednost mora biti izmedu 1 i53, a ako nije predefinirana vrijednost je 53

I Ako je n u rasponu od 1-24 tada se trosi 4B, a ako je od25-53 8B memorije

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )24/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Vremenski i datumski tipovi

I Vremenski i datumski tipovi zapisuju vrijeme i datum u bazupodataka u dogovorenom formatu

Podatkovni tip Raspon vrijednosti Memorijadate od 1.1.1 do 31.12.9999 3B

datetime od 1.1.1753 do 31.12.9999 8B

I Format zapisa datuma je ’YYYY-MM-DD’ i kao takav seuvijek prikazuje

I Interno DBMS datum zapisuje u obliku cijelog broja kojipredstavlja broj dana proteklih od 31.12.1899.

I Takav zapis omogucava operacije + i − sa datumima gdje jerezultat uvijek broj dana

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )25/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Znakovni tipovi podataka

I Znakovni tipovi podataka su oni u koje se zapisuju tekst

Podatkovni tip Raspon Kodiranje Memorijachar[(n)] 1 do 8000 ASCII n * B

varchar[(n|max)] 1 do 8000 ASCII n + 2Bnchar[(n)] 1 do 4000 UNICODE n * 2B

nvarchar[(n|max)] 1 do 4000 UNICODE n * 2 + 2B

I n - oznacava maksimalnu duljinu znakova fiksne ili varijabilneduzine

I char i nchar - oznacavaju znakovni niz fiksne velicineI varchar i nvarchar - oznacavaju niz znakova varijabilne duzine

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )26/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Binarni podatkovni tipovi

I Binarni podatkovni tipovi sluze za spremanje slika, filmova,dokumenata itd.

Podatkovni tip Raspon vrijednosti Memorijabinary[(n)] Fiksno od 1 do 8000B nB

varbinary[(n|max)] Varijabilno od 1 do 8000B n + 2Bimage Varijabilno do 2.147.483.647B

I max kod varbinary tipa podatka omogucava spremanje do2GB podataka

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )27/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

UvodSQL objekti, imenovanje, rezervirane rijeci, komentariTipovi podataka

Ostali tipovi

I Ostali tipovi spodataka sluze za spremanje XML datoteka,spremanje globalnog indetifikatora. . .cursor - Koristi se za varijable ili za izlazne parametre

uskladistenih procedura koji sadrze referencu nakursor

uniqueidentifier - Globalni jedinstveni indetifikator koji se josnaziva GUID

xml - Tip podatka u koji se spremaju XML podacitable - Ovaj tip podatka koristi se za privremeno spremanje

rezultirajuceg skupa za kasnije koristenje. Najcesce seu njega sprema rezultat tablicnih funkcija

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )28/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Pregled 3. poglavlja

Integritet podataka

SQL upitni jezik

Kreiranje objekata u bazi podatakaKreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )29/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Kreiranje baze podataka

I Prvi korak u implementaciji relacijske sheme je kreiranje bazepodataka

CREATE DATABASE { NazivBazePodataka }

I Moze se sa dodatnim opcijama podesiti gdje da se kreira bazai kakve ce joj biti karaktersitike

I Brisanje baze podataka se radi sljedecom naredbom

DROP DATABASE { NazivBazePodataka }

I Specificno kod izvrsavanja SQL koda je da DBMS nikad nepita ”Da li ste sigurni da zelite izbrisati cijelu bazupodataka?” - on samo brisanje nepovratno napravi tako daoko toga treba biti oprezan

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )30/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Kreiranje tablica

I Svaka tablica sastoji se od svog naziva i stupaca, a za svakistupac se bira

I NazivI Tip podatkaI Ogranicenja

I Primarni i strani kljuc, obaveznost unosa, predefiniranavrijednost, jedinstvenost i provjera

CREATE TABLE {NazivTablice}(

{NazivStupca} {TipPodatka} { [ NOT ] | NULL } ,{NazivStupca} {TipPodatka} { [ NOT ] | NULL } ,{ . . . } { . . . } { . . . }

)

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )31/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Kreiranje tablice sa primarnim kljucem

I Kreiranje tablice sa primarnim kljucemCREATE TABLE Drzava (

Id int PRIMARY KEY NOT NULL ,Naziv nvarchar ( 5 0 ) NOT NULL

)

I Kreiranje tablice sa slozenim primarnim kljucemCREATE TABLE PredmetStudent (

StudentId int NOT NULL ,PredmetId int NOT NULL ,CONSTRAINT PK_PredmetStudent

PRIMARY KEY ( StudentId , PredmetId ))

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )32/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Kreiranje tablice sa stranim kljucem

I Kreiranje tablice sa stranim kljucem

CREATE TABLE Grad (Id int PRIMARY KEY NOT NULL ,Naziv nvarchar ( 5 0 ) NOT NULL ,DrzavaId int NOT NULL ,CONSTRAINT FK_Grad_Drzava FOREIGN KEY

( DrzavaId ) REFERENCES Drzava ( Id ))

I Obaveznost unosa atributaI NOT NULL – kada je vrijednost atributa obavezna za unosI NULL – ako atribut moze poprimiti NULL vrijednost

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )33/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Kreiranje tablice sa ostalim ogranicenjima

I Kreiranje tablice sa ogranicenjima podataka: predefiniranavrijednost, jedinstvenost i provjera

I UNIQUE – jedinstvenost vrijednostiI Kada se postavi ovo ogranicenje svaka vrijednost u stupcu

mora biti jedinstvena ili ce tokom dodavanja novog redkaDBMS javiti da se ogranicenje krsi

I CHECK– provjera vrijednostiI Ovo ogranicenje provjerava da li novo dodana vrijednost

zadovoljava postavljeni uvjet.I DEFAULT – predefinirana vrijednost

I Ovo ogranicenje se postavlja kada zelimo za vrijednostatributa postaviti predfefinirane vrijednost - svaki puta kada sedoda novi redak ako eksplicitno nije naglasena vrijednostatributa poprimit ce predefiniranu vrijednost

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )34/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Kreiranje tablice sa ostalim ogranicenjima

CREATE TABLE Student (Id int PRIMARY KEY NOT NULL ,Ime nvarchar (max) NOT NULL ,Prezime nvarchar (max) NOT NULL ,JMBAG char (11) NOT NULL ,Redovni bit NOT NULL

CONSTRAINT DF_Redovni DEFAULT (1) ,DatumRodjenja datetime NOT NULL ,

CONSTRAINT UQ_Student_JMBAGUNIQUE ( JMBAG ),

CONSTRAINT CH_Student_DatumRodjenjaCHECK ( DatumRodjenja > ’1900.01.01 ’)

)

I CHECK - sa njim uz tip podataka definiramo domenu atributa

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )35/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Azuriranje tablica

I Kada se jednom kreira relacijska shema moguce ju je mjenjatiI Mjenjanje strukture se obicno radi zbog normalizacije ili

denormalizacije baze podatakaI Dodavanje novog stupca se radi na sljedeci nacin

ALTER TABLE {NazivTablice}ADD {NazivStupca} {Tip} { [ NOT ] | NULL}

I Brisanje stupca se radi na sljedeci nacin

ALTER TABLE {NazivTablice}DROP COLUMN {NazivStupca}

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )36/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Brisanje tablica

I Za brisanje tablice se koristi naredba DROP kao i za brisanjesvih drugih objekata u bazi podataka

I Kod brisanja tablice je potrebno provjeriti da li tablica koja sebrise ima svojih referenci na druge objekte

I Ako tablica ima svoje reference DBMS ce sprijeciti njezinobrisanje

I Brisanjem tablice brisu se i svi podaci iz nje

DROP TABLE {NazivTablice}

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )37/38

Integritet podatakaSQL upitni jezik

Kreiranje objekata u bazi podataka

Kreiranje baze podatakaKreiranje tablicaAzuriranje tablicaBrisanje tablica

Pitanja

T. Caric, T. Erdelic ITS::Baze podataka (6. tjedan )38/38