baze podataka - seminarski rad

18
UNIVERZITET U BIHAĆU TEHNIČKI FAKULTET Odsjek: Elektrotehnički Smjer : Informatika Baze podataka Seminarski rad Tema:Web forum

Upload: arlein

Post on 10-Nov-2015

108 views

Category:

Documents


4 download

DESCRIPTION

Baze podataka seminarski rad

TRANSCRIPT

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