четвртак, 15. септембар 2016.

Kreiranje baze podataka i druge aktivnosti s istom


Kao što smo već rekli u prethodnom postu, pogledaj ovde; baza podataka je organizovana kolekcija podataka za brzo pretraživanje i pristup; koja zajedno sa sistemom za održavanje i administraciju, organizovanje i memorisanje tih podataka čine sistem baze podataka. To jednostavno shvatite kao skup objekata između kojih postoji nekakav odnos. Baze podataka su mnogo više nego što programeri smatraju ali i rad sa bazama podataka je višestruk. To znači da postoji više načina da radite istu stvar sa bazom podataka. Najjednostavniji način da kreirate bazu podataka u Microsoft SQL Serveru jeste da to uradite preko Microsoft SQL Server Manager Studio-a u njegovom grafičkom okruženju. Čim pokrenete SSMS i uspešno se ulogujete; sa vaše leve strane će te videti Object Explorer. Desnim tasterom miša kliknite čvor Databases i odaberite New Database. U Database name; unesite naziv baze podataka koju hoćete da kreirate i ako hoćete da sve ostane po default-u kreiranja baze podataka; jednostavno pritisnite OK i SSMS će kreirati novu bazu podataka. Ukoliko ne vidite vašu kreiranu bazu podataka u direktorijumu Database u Object Explorer-u, kliknite desnim tasterom miša na direktorijum Database i kliknite na Refresh. Imajte u vidu da će te često morati koristiti Refresh u Object Explorer-u da bi ste videli promene kad ih kreirate.

( New Database Dialog Form, Microsoft SQL Server Manager Studio )

Prvu stvar koju trebate shvatiti da kad kreirate serversku bazu podataka, ona se često ne sastoji od samo jedne datoteke poput lokalne baze podataka ili Microsoft Access baze podataka. Već se uglavnom vaša baza podataka sastoji od najmanje dve datoteke zbog mogućnosti da vaše datoteke čuvate na više hard diskova. U jednoj datoteci se čuvaju svi vaši podaci koje skladištite, objekti ali i meta podaci i tu datoteku označavamo sa *.mdf ekstenzijom dok druga datoteka je datoteka dnevnika transakcija, i njena oznaka je *.ldf. U datoteku transakcija, ili kako je još zovu log datoteka; se upisuje svaka izmena baze podataka i u slučaju pada sistema ona je od najveće koristi jer čuva podatke od gubljenja. Vi u principu možete praviti više baza podataka ili sve vaše podatke smestiti u jednu bazu podataka. To uglavnom zavisi kakve podatke skladištite i da li ti podaci idu jedni sa drugim. Ponekad je poželjno da smestite sve podatke u samo jednu bazu podataka a ponekad ne. Kad kreirate bazu podataka za vežbanje i učenje, prihvatiti default vrednosti je u redu ali ako hoćete da planirano pravite bazu podataka onda sami trebate da zadate vrednosti za početnu veličinu baze podataka, za njen rast ili čak da je ograničite do koje veličine baza podataka može da bude maksimum. Poželjno je da uvek zadate najveću moguću veličinu koju očekujete da će vaši podaci dostići.

Kako da definišem svoje vrednosti bazi podataka koju hoću da kreiram?


Kada desnim tasterom miša kliknete na čvor Database i odaberete New Database, otvorićete vam se dialog forma u kojoj možete pored naziva baze podataka zadati i druge vrednosti. Kad zadajete ime bazi podataka, vaš naziv bazi podataka se zadaje isto kako kad imenujete neku promenjivu u programiranju. Sva pravila za naziv promenjive se odnosi i za naziv baze podataka. Znači ne možete u nazivu baze podataka da koristite specijalne karaktere; takođe vam ne preporučujem da u nazivu baze podataka koristite razmake. Kad vi zadajete ime nekoj bazi podataka to je logičko ime i ono se često koristi isto i za datoteke na fizičkom uređaju koje čine vašu bazu podataka. Često ime baze podataka i ime log datoteke imaju isti naziv iako vi sva tri naziva možete navesti različito. U opciji Owner podešavate vlasnika baze podataka i njegova administratorska prava. Ako ostavite <default> vrednost, vlasnik baze je Windows korisnik koji je kreira. Takođe, možete promeniti lokaciju gde držite datoteke baze podataka, početnu vrednost i maksimalnu vrednost. Što se tiče rasta vaše baze podataka, taj rast možete podesiti vrednošću u MB ili u procentima. Rast datoteka baze podataka može biti ista ali praksa je da je datoteka transakcija nešto manja i često je ograničena i kad baza podataka to nije.

Kako da promenim ime baze podataka?

Logičko ime vaše baze podataka možete najjednostavnije promeniti u Object Explorer-u kao što menjate ime bilo kojem fajlu u File Explorer-u; samo što treba da imate u vidu da promenom logičkog imena vaše baze podataka niste promenili i ime datoteka na hard disku.

Kako da izbrišem bazu podataka?

Najjednostavniji način da obrišete bazu podataka je da u Object Explorer-u kliknete na čvor Databases, zatim desnim klikom na vašu bazu podataka i onda na Delete.

Kako da kreirate, zadate neke vrednosti, preimenujete i obrišete bazu podataka na najjednostavniji način možete pogledati i na video-u.


( SQL Tutorial - 4. Create, Rename And Delete Database Using SSMS )

Kako da kreiram, promenim naziv i obrišem datoteku koristeći T-SQL jezik?

Mnogo je lakše raditi sa bazom podataka u grafičkom okruženju, ali često kao programer nećete imati tu privilegiju; administratori servera i baza podataka to ne dozvoljavaju; dok poznavanje T-SQL jezika se podrazumeva da znate i radi programiranja ali i radi pravljenja SQL skripti. T-SQL skraćeno od Transact-SQL; gde SQL je skraćenica za Strucured Query Language je strukturno upitni jezik i lako se uči. Iskusnim programerima ali i administratorima baza podataka je ponekad čak lakše koristiti T-SQL za rad sa bazama podataka nego grafičko okruženje. Otvorite SSMS i kliknite na File, zatim na New i na Query with Current Connection ili na dugme New Query na ToolBar-u. Otvoriće vam se SQL Editor. Zatim unesite sledeći T-SQL kod.

-- My first T-SQL

-- Create Database Files

USE master; 
GO
CREATE DATABASE Students 
ON  
( NAME = Sales_dat, 
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.RABBIT\MSSQL\DATA\students.mdf', 
    SIZE = 100MB, 
    MAXSIZE = UNLIMITED, 
    FILEGROWTH = 100MB ) 
LOG ON 
( NAME = Sales_log, 
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.RABBIT\MSSQL\DATA\studentslog.ldf', 
    SIZE = 50MB, 
    MAXSIZE = UNLIMITED, 
    FILEGROWTH = 80MB ) ; 
GO

Obratite pažnju da naziv putanje gde se nalaze datoteke baze podataka Students nije ista kao što je kod vas, osim ako ste i vi vašu instancu servera nazvali RABBIT. Ukoliko niste uopšte zadavali ime vašem serveru putanja je verovatno sledeća:

'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\students.mdf'

Prvo što možete primeniti u ovom kodu je da se komentari pišu oznakom -- . Takođe možete zaključiti da se kreiranje baze podataka izvršava T-SQL naredbom:

CREATE DATABASE naziv_baze_podataka

S obzirom da podešavamo naše vrednosti za bazu podataka koju kreiramo, svojstva upisujemo u malim zagradama ( ) odvojena zarezom. Inače da smo hteli da kreiramo bazu podataka po defaultu za kreiranje baze podataka, to smo mogli uraditi i ovako.

USE master; 
GO
CREATE DATABASE Students 

Kad imate pravilno ispisan kod u SQL Editor-u, kod se izvršava tako što selektujete deo koda koji hoćete da se izvrši i pritisnete dugme  ! Execute. Selektujte kod i izvršite ga i SSMS će vam kreirati bazu podataka sa vrednostima koje ste naveli. U Object Explorer kliknite na Refresh da bi ste videli bazu Students kreiranu. Ukoliko ste uspeli da sve uradite uspešno, dodajte ispod napisanog koda sledeći kod:

-- Rename Database Files

USE master; 
GO 
ALTER DATABASE Students 
Modify Name = School; 
GO

Kad selektujete sledeći kod i izvršite, promeniće te ime vaše baze podataka iz Students u School. Obratite pažnju da je ta promena samo vezana za logički naziv vaše baze podataka. Što znači da se datoteke vaše baze podataka i dalje zovu isto kao pre. Za menjanje vrednosti ili modifikacije na bazama podataka uvek koristimo ključnu reč T-SQL jezika:

ALTER DATABASE naziv_baze_podataka

I ako želite da obrišete bazu podataka tada se koristi sledeća naredba:

DROP DATABASE naziv_baze_podataka

Znači ako hoćete da izbrišete bazu koja koristi logičko ime School vi morate navesti izmenjeno logičko ime baze podataka.

-- Delete Database Files

USE master; 
GO 
DROP DATABASE School; 
GO

Sav T-SQL kod koji ste napisali možete da sačuvate u tektualnoj datoteci sa egzistencijom *.sql i da ga koristite kad god hoćete. Datoteku sa T-SQL kodom često koristimo kada hoćemo da sa našeg servera prebacimo našu bazu podataka na neki drugi server, npr. u školi. Kako izgleda rad sa navedenim kodom možete pogledati i na video-u:


( SQL Tutorial - 5. Create, Rename And Delete Database Using T-SQL )

Kako da attach-ujem ili detach-ujem već napravljenu bazu podataka na svoj server?

Kad počnete učiti baze podataka, često vam je potrebna već neka napravljena baza podataka poput AdvantureWorks ili Northwind da bi ste proučavali kako su ove baze podataka napravljene ili da ih koristite za vaše vežbanje u vašim programima. Zato ove baze podataka zovemo Sample Database i definitivno ove baze trebate imati. Možete obe skinuti sa mog bloga; ovde. Uključivanjem već postojeće baze podataka na naš server radimo tako što u Object Explorer-u kliknemo desnim tasterom miša na čvor Database i zatim kliknemo na Attach… Ubacimo putanju sa našim datotekama baze podataka koju hoćemo da uključimo u naš server i pritisnemo OK. Ali obratite pažnju da će te na taj način dobiti grešku jer morate SSMS pokrenuti kao Run As Administrator. Isključivanje baze podataka sa vašeg servera je definitivno bolja opcija nego da brišete bazu podataka. To radite tako što kliknete na bazu podataka na vašem serveru i zatim kliknete na Detach. Najbolje pogledajte na video-u kako to sve funkcioniše:


( SQL Tutorial - 6. Attach And Detach Database Using SSMS )

Kako da kreiram kompletnu bazu podataka uz pomoć SQL skripta?

Ukoliko imate neku bazu podataka sa podacima konvertovanu u SQL skriptu, to je mnogo bolji način da kreirate istu bazu podataka sa svim njenim podacima nego da imate kreiranu ili čak rezervnu kopiju neke baze podataka. Razlog? Iskustvo. Zamislite da ste arhivirali 5 godina truda i rada sa bazom podataka i posle ne možete da koristite arhivu jer sadrži neku grešku za koju vi niste ni znali da postoji jer je sve arhivirano bez prijave i jedne greške. Jednostavno arhive često stradaju i zbog bad sector-a na hard disku. Zato je po mom nekom ličnom mišljenju da s vremena na vreme treba da kreirate SQL skriptu sa svim podacima vaše baze podataka. Pogledajte u sledećem video-u kako je lako kreirati Northwind bazu podataka kad ste je sačuvali kao SQL skriptu. Neki od vas poštovani čitaoci mog bloga možete pomisliti ko će pisati hiljade linija T-SQL koda koliko sadrži skripta Northwind baze podataka? Za velike baze podataka koriste se razni alati za generisanje SQL skripte. Ovog čarobnjaka imate i u SSMS-u.    


( SQL Tutorial - 7. Import The Database Using SQL Script )