baze podataka - seminarski rad
DESCRIPTION
Baze podataka seminarski radTRANSCRIPT
UNIVERZITET U BIHAU
UNIVERZITET U BIHAU
TEHNIKI FAKULTETOdsjek: Elektrotehniki
Smjer : Informatika
Baze podataka
Seminarski rad
Tema:Web forumProf.drnn nn Asist.dipl.ing.n Biha, 2007. godine
UVOD U BAZE PODATAKA
Osnovni pojmovi vezani uz baze podataka
Baze podataka predstavljaju viu razinu rada s podacima u odnosu na klasine programske jezike.Rije je o tehnologiji koja je nastala s namjerom da se uklone slabosti tradicionalne automatske obrade podataka iz 60-tih i 70-tih godina 20. stoljea. Ta tehnologija osigurala je veu produktivnost,
kvalitetu i pouzdanost u razvoju aplikacija koje se svode na pohranjivanje i pretraivanje podataka u raunaru.
Baza podataka, DBMS, model podataka
Baza podataka je skup meusobno povezanih podataka, pohranjenih u vanjskoj memoriji raunara.Podaci su istovremeno dostupni raznim korisnicima i aplikacijskim programima. Ubacivanje, promjena,
brisanje i itanje podataka obavlja se posredstvom zajednikog softvera. Korisnici i aplikacije pritom ne moraju poznavati detalje fizikog prikaza podataka, ve se referenciraju na logiku strukturu baze.
Sustav za upravljanje bazom podataka (Data Base Management System - DBMS) je posluitelj(server) baze podataka.On oblikuje fiziki prikaz baze u skladu s traenom logikom strukturom.
Takoer,on obavlja u ime klijenata sve operacije s podacima. Dalje,on je u stanju podrati razne baze,od kojih svaka moe imati svoju logiku strukturu,no u skladu s istim modelom. Isto tako,brine se za sigurnost podataka, te automatizira administrativne poslove s bazom.
Podaci u bazi su logiki organizirani u skladu s nekim modelom podataka.Model podataka je skup pravila koja odreduju kako moe izgledati logika struktura baze.Model ini osnovu za koncipiranje, projektiranje i implementiranje baze. Dosadanji DBMS-i obino su podravali neki od sljedeih modela:
Relacijski model. Zasnovan na matematikom pojmu relacije. I podaci i veze medu podacima prikazuju se pravokutnim tabelama.
Mreni model. Baza je predoena usmjerenim grafom.vorovi su tipovi zapisa, a lukovi definiraju veze meu tipovima zapisa.
Hijerarhijski model. Specijalni sluaj mrenog. Baza je predoena jednim stablom ili skupom stabala.vorovi su tipovi zapisa,a hijerarhijski odnos nadreeni-podreeni izraava veze meu
tipovima zapisa.
Objektni model. Inspiriran je objektno-orijentiranim programskim jezicima. Baza je skup trajno pohranjenih objekata koji se sastoje od svojih internih podataka i metoda (operacija) za rukovanje s tim podacima. Svaki objekt pripada nekoj klasi. Izmeu klasa se uspostavljaju veze nasljeivanja, agregacije, odnosno meusobnog koritenja operacija. Hijerarhijski i mreni model bili su u uptrebi u 60-tim i 70-tim godinama 20. stoljea. Kreiranje baze podataka
Naredba za kreiranje baze podataka je Create database ime_baze; za na primjer e biti.
mySQL> Create database webforum;
Query OK, 1 row affected (0.00 sec)
Da bi kreirali tabele u bazi podataka,moramo je prvo koristiti bazu u kojoj elimo praviti tabele a to se radi preko naredbe use database ime_baze; u naem sluaju je :mySQL > Use database webforum;
Database changed;Poslije ovoga moemo kreirati tabele za nau bazu podataka.
Kreiranje tabela
U naoj bazi emo imati 7 tabela:
-forum
-tip_forum
-tema
-poruka
-odgovor_na_poruku
-korisnik
-tip_korisnikSad emo kreirati svaku tabelu pojedinano:
-Kreiranje tabele forum :
create table forum(
forumid int(10) NOT NULL auto_increment,
forum_ime varchar(30) NOT NULL,
PRIMARY KEY (forumid)
);
-Kreiranje tabele tip_forum:
create table tip_forum (
tip_forumid int(10) NOT NULL auto_increment,
forumid int(10) NOT NULL,
tip_forum_naziv varchar(50) NOT NULL,
PRIMARY KEY (tip_forumid)
);
-Kreiranje tabele tema :
create table tema(
temaid int(10) NOT NULL auto_increment,
tip_forumid int(10) NOT NULL,
tema_naziv varchar(50) NOT NULL,
datum_postavljanja date NOT NULL,
PRIMARY KEY (temaid)
);
-Kreiranje tabele poruka :create table poruka(
porukaid int(10) NOT NULL auto_increment,
temaid int(10) NOT NULL,
naslov_poruke varchar(100) NOT NULL,
poruka text NOT NULL,
poruku_postavio varchar(30) NOT NULL,
datum_postavljanja date NOT NULL,
PRIMARY KEY (porukaid)
);
-Kreiranje tabele odgovor_na_poruku:
create table odgovor_na_poruku(
odgovor_na_porukuid int(10) NOT NULL auto_increment,,
porukaid int(10) NOT NULL auto_increment,,
odgovor text NOT NULL,
datum_odgovora date NOT NULL,
PRIMARY KEY(odgovor_na_porukuid)
);
-Kreiranje tabele korisnik:create table korisnik(
korisnikid int(10) NOT NULL auto_increment,
forumid int(10) NOT NULL,
ime_korisnik varchar(20) NOT NULL,
prezime_korisnik varchar(20) NOT NULL
nickname varchar(20) NOT NULL,
email varchar (50) NOT NULL,
PRIMARY KEY (korisnikid)
);
-Kreiranje tabele tip_korisnik:
create table tip_korisnik(
korisnikid int(10) NOT NULL,
tip varchar(30) NOT NULL
);
Nakon toga naa baza e izgledati :
Slika 1 : Tabele u bazi webforum
Sad emo prikazati izgled jedne od tabela,a ostale su sline :
Slika 2 : Izgled tabele forum u mySQL-u
Opis tabela
Tabela forum:
forumid predstavlja primarni klju,tipa je int,nemoe biti 0 i automatski se poveava za 1
forum_ime predstavlja ime foruma i tipa je varchar s ogranienjem na 30 znakova
Tabela tip_forum:
tip_forumid predstavlja primarni klju,tipa je int,nemoe biti 0 i automatski se poveava za 1
forumid predstavlja strani klju za povezivanje s tabelom forum i tipa je int
tip_forum_naziv predstavlja ime tipa foruma npr (Informatika,nauka,povijest )
Tabela tema:
temaid predstavlja primarni klju,tipa je int,nemoe biti 0 i automatski se poveava za 1
tip_forumid- predstavlja strain klju za povezivanje s tabelom tip_forum,tipa je int
tema_naziv predstavlja naziv teme ( Npr : Programiranje .)
datum postavljanja predstavlja datum postavljanja teme
Tabela poruka:
porukaid- predstavlja primarni klju,tipa je int,nemoe biti 0 i automatski se poveava za 1
temaid- predstavlja strani klju za povezivanje s tabelom tema i tipa je int
naslov_poruke predstavlja naslov poruke
poruka predstavlja poruku , tj sadraj poruke
poruku_postavio oznaava ko je postavio poruku
datum_postavljanja pokazuje nam kad je poruka postavljena
Tabela odgovor_na_poruku:
porukaid - predstavlja primarni klju,tipa je int,nemoe biti 0 i automatski se poveava za 1
odgovor predstavlja odgovor na porukudatum_odgovora oznaava kad je odgovoreno na poruku
Tabela korisnik:
korisnikid - predstavlja primarni klju,tipa je int,nemoe biti 0 i automatski se poveava za 1
forumid - predstavlja strani klju za povezivanje s tabelom forum i tipa je int
ime_korisnik predstavlja ime korisnika ,tipa je varchar
prezime_korisnik predstavlja prezime korisnika ,tipa je varchar
nickname predstavlja nadimak svakog korisnika na forumu
email e-mail adresa korisnika
Tabela tip_korisnik:
korisnikid - predstavlja strani klju za povezivanje s tabelom korisnik i tipa je int
tip predstavlja tip korisnika
Tip korisnika u veini sluajeva , na web forumima imamo 3 vrste korisnika Administratori,moderatori i obini korisnici ,a razlikuju se po tome to imaju razliite access-e tj doputenja na forumu npr ( administratori mogu mjenjati sve na forumu dok moderatori i obini korisnici ne mogu postavljati teme ,mjenjati teme o sve ostalo , moderatori samo ureivati forum a obini korisnici mogu samo pisati poruke ).
PRIMARY KEY je jedinstven,to znai da se svaka vrijednost primarnog kljua pojavljuje samo jednom.
AUTOINCREMENT u Mysql-u postoji mehanizam koji svakom novom retku u tablici automatski dodaje novu vrijednos i u tom redu nesmije biti vrijednost nula .
Slika 3 : ER model web forum-aAko je tipa N:M uvijek se prikazuju posebnom relacijom koja ukljuuje primarne atribute oba entiteta te jo moda dodatne koje sama veza ima.U naem sluaju je to korisnik i odgovor_na_poruku i to emo rjeiti ubacivanjem tabele poslano_primljeno koja e izgledati:
create table poslano_primljeno ( odgovor_na_porukuid int(10) NOT NULL , korisnikid int(10) NOT NULL
);
RAD SA BAZOM(ubacivanje,brisanje,izmjena podataka)Unosa podataka u bazu sastoji od dva koraka: prvi je prikupljanje podataka kroz formu, a drugi pohrana tih podataka u bazi.
Za unos podataka koristimo INSERT naredbu.
Slika 4: Ubacivanje podatakaKao to vidimo na primjeru , npr insert forum (forum_ime)values(INFORMATIKA);
s ovim smo u tabelu forum ubacili novu forum_ime pod nazivom informatika.
Ako hoemo da ubacimo nekog korisnika ,uradiemo to ovako :
insert into korisnik (forum_id,ime_korisnik,prezime_korisnik,nickname,email, values (1,sanel,beganovic,bega,[email protected]); tj u tabelu korisnik na mjesto forum_id stavljamo 1 , na mjesto ime stavljamo sanel,na mjesto prezime beganovic,na mjesto nickname stavljamo bega i na mjesto e mail stavljamo [email protected]. a ako zelimo tom korisniku da dodamo privilegiju da bude administrator to radimo ovako :insert into tip_korisnik(korisnikid,tip)values(1,ADMINISTRATOR);
Ako hocemo da pregledamo ta imamo u tabeli korisnik to radimo jednostavnim upitom
select * from korisnik;
* - znaci da sve izlista iz tabele a FROM oznaava iz koje tabele izlistavamo)
Slika 5 : Izlistavanje sadrzaja tabele
Ako elimo da izmjenimo neke podatke koristimo naredbu UPDATE :
Slika6 :Mjenjanje podataka
Na primjeru vidimo da smo promjenili ime s update korisnik set ime_korisnik=AMIR tj naredba update upotrebljava se da bi se neki podaci obnovili a SET se koristi da se promjeni eljeni naziv u tabeli u ovom sluaju ime_korisnik se iz Adnan promjenilo u Amir.
Ako zelimo da obriemo neki podatak iz tabele ,npr
delete from korisnik where korisnikid=6;
to moemo vidjeti na sljedeoj slici ,da smo obrisali korisnika pod rednim brojem 6
Slika 7: Brisanje podataka iz baze
Opis koritenih naredbi:SELECT naredba slui selektiranju zapisa iz jedne ili vie tablica i njihovom prikazu
CREATE-slui za stvaranje baze podataka ili tabela
USE-za koritenje date baze
SHOW-za prikaz svih baza na naem lokalnom server
INSERT INTO-za unos podataka u bazu
VALUES- njome naznaujemo da slijedi lista vrijednosti koja se pohranjuje u tabeluDELETE FROM naredba za brisanje podataka
WHERE- slui za naznaivanje da nakon njega slijede uvjeti pomou kojih odreujemo (ograniavamo) skup podataka nad kojima e se obaviti neka operacija
UPDATE-koristi se za izmjenu podatakaDESCRIBE-daje opis zadane tabele
BACKUP :-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version5.0.37-community-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
--
-- Create schema webforum
--
CREATE DATABASE IF NOT EXISTS webforum;
USE webforum;
--
-- Definition of table `forum`
--
DROP TABLE IF EXISTS `forum`;
CREATE TABLE `forum` (
`forumid` int(10) NOT NULL auto_increment,
`forum_ime` varchar(30) NOT NULL,
PRIMARY KEY (`forumid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `forum`
--
/*!40000 ALTER TABLE `forum` DISABLE KEYS */;
INSERT INTO `forum` (`forumid`,`forum_ime`) VALUES
(5,'INFORMATIKA');
/*!40000 ALTER TABLE `forum` ENABLE KEYS */;
--
-- Definition of table `korisnik`
--
DROP TABLE IF EXISTS `korisnik`;
CREATE TABLE `korisnik` (
`korisnikid` int(10) NOT NULL auto_increment,
`forumid` int(10) NOT NULL,
`ime_korisnik` varchar(20) NOT NULL,
`prezime_korisnik` varchar(20) NOT NULL,
`nickname` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
PRIMARY KEY (`korisnikid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `korisnik`
--
/*!40000 ALTER TABLE `korisnik` DISABLE KEYS */;
/*!40000 ALTER TABLE `korisnik` ENABLE KEYS */;
--
-- Definition of table `odgovor_na_poruku`
--
DROP TABLE IF EXISTS `odgovor_na_poruku`;
CREATE TABLE `odgovor_na_poruku` (
`porukaid` int(10) NOT NULL,
`odgovor` text NOT NULL,
`datum_odgovora` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `odgovor_na_poruku`
--
/*!40000 ALTER TABLE `odgovor_na_poruku` DISABLE KEYS */;
/*!40000 ALTER TABLE `odgovor_na_poruku` ENABLE KEYS */;
--
-- Definition of table `poruka`
--
DROP TABLE IF EXISTS `poruka`;
CREATE TABLE `poruka` (
`porukaid` int(10) NOT NULL auto_increment,
`temaid` int(10) NOT NULL,
`naslov_poruke` varchar(100) NOT NULL,
`poruka` text NOT NULL,
`poruku_postavio` varchar(30) NOT NULL,
`datum_postavljanja` date NOT NULL,
PRIMARY KEY (`porukaid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `poruka`
--
/*!40000 ALTER TABLE `poruka` DISABLE KEYS */;
/*!40000 ALTER TABLE `poruka` ENABLE KEYS */;
--
-- Definition of table `poslano_primljeno`
--
DROP TABLE IF EXISTS `poslano_primljeno`;
CREATE TABLE `poslano_primljeno` (
`odgovor_na_porukuid` int(10) NOT NULL,
`korisnikid` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `poslano_primljeno`
--
/*!40000 ALTER TABLE `poslano_primljeno` DISABLE KEYS */;
/*!40000 ALTER TABLE `poslano_primljeno` ENABLE KEYS */;
--
-- Definition of table `tema`
--
DROP TABLE IF EXISTS `tema`;
CREATE TABLE `tema` (
`temaid` int(10) NOT NULL auto_increment,
`tip_forumid` int(10) NOT NULL,
`tema_naziv` varchar(50) NOT NULL,
`datum_postavljanja` date NOT NULL,
PRIMARY KEY (`temaid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tema`
--
/*!40000 ALTER TABLE `tema` DISABLE KEYS */;
/*!40000 ALTER TABLE `tema` ENABLE KEYS */;
--
-- Definition of table `tip_forum`
--
DROP TABLE IF EXISTS `tip_forum`;
CREATE TABLE `tip_forum` (
`tip_forumid` int(10) NOT NULL auto_increment,
`forum_id` int(10) NOT NULL,
`tip_forum_naziv` varchar(50) NOT NULL,
PRIMARY KEY (`tip_forumid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tip_forum`
--
/*!40000 ALTER TABLE `tip_forum` DISABLE KEYS */;
/*!40000 ALTER TABLE `tip_forum` ENABLE KEYS */;
--
-- Definition of table `tip_korisnik`
--
DROP TABLE IF EXISTS `tip_korisnik`;
CREATE TABLE `tip_korisnik` (
`korisnikid` int(10) NOT NULL,
`tip` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tip_korisnik`
--
/*!40000 ALTER TABLE `tip_korisnik` DISABLE KEYS */;
INSERT INTO `tip_korisnik` (`korisnikid`,`tip`) VALUES
(1,'ADMINISTRATOR'),
(1,'ADMINISTRATOR'),
(1,'ADMINISTRATOR');
/*!40000 ALTER TABLE `tip_korisnik` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
Sadraj :
Uvod.2
Osnovni pojmovi vezani uz baze podataka..2
Baza podataka,DBMS,model podataka...2
Kreiranje baze podataka...3
Kreiranje tabela....3
Opis tabela...6
Rad sa bazom...8
Opis koritenih naredbi10
Backup.10
PAGE 2