4.1Krijimi I objekteve te Database
4.2Modifikimi I odjekteve te Database
4.3Fshirja e objekteve te Database
4.1Krijimi I objekteve te Database
Per organizimin e nje Databaze marrin pjese objekte te ndyshme, te cilat ndahen ne dy grupe te medha , objekte fizike dhe llogjike. Objektet fizike I referohen organizimit te te dhenave ne hard-disk (paisje fizike). Objektet fizike te nje database jane filet dhe filegroups. Objektet logjike te nje database jane tabelat,kolonat ,view. Objekti I pare qe duhet per te krijuar ne nje database vete databaza. Databaze engine databazat e sistemit dhe databazat e krijuar nga perdoruesit. Nje perdorues I autorizuar mund te krijoje databaza kurse databazat e sistemit gjenerohen gjate instalimit te dadabase system.
Databazat e sistemit jane :
1-master
2-tempdb
3-model
4-resource
Krijimi I nje Databaze
Dy jane metodat per krijimin e nje database. Metoda e pare perdor Object Explorer ne SQL Server Management Studio 2008. Metoda e dyte eshte duke perdorur komandat Transact-SQL, CREATE DATABASE. Kjo komande ka formen e pergjithshme :
CREATE DATABASE db_name
[ON [PRIMARY] { file_spec1} ,...]
[LOG ON {file_spec2} ,...]
[COLLATE collation_name]
[FOR {ATTACH | ATTACH_REBUILD_LOG } ]
Ushtrimi 1
USE master;
CREATE DATABASE sample;
Ushtrimi 1 krijon njedatabaze me emrin “sample”. Kjo forme e krijimit te nje database krijon nje database me opsionet default. Sistemi krijon dy objekte fizike(dy file).Emri llogjik I skedarit qe ruan te dhenat eshte “sample” dhe madhesia fillestare eshte 2MB. Ne menyre anologjike krijohet skedari qe ruan log me emrin “sample_log” me madhesi 1MB. Te gjitha propertite e databases se re te krijuar varen nga databaza e sistemit “model”.
Ushtrimi 2 krijon nje database dhe specifikon ne menyre eksplicite disa parametra te DB.
Ushtrimi 2
USE master;
CREATE DATABASE projects
ON (NAME=projects_dat,
FILENAME = 'C:\projects.mdf',
SIZE = 10,
MAXSIZE = 100,
FILEGROWTH = 5)
LOG ON
(NAME=projects_log,
FILENAME = 'C:\projects.ldf',
SIZE = 40,
MAXSIZE = 100,
FILEGROWTH = 10);
Krijimi I nje Database Snapshot
Komanda CREATE DATABASE mund te perdoret gjithashtu per krijimin e nje database snapshot mbi nje database ekzistuese. Nje database snapshot eshte identike me databazen nga e cila krijohet ne mometin qe eshte bere snapshot.
Sintaksa per krijimin e nje snapshot eshte:
CREATE DATABASE database_snapshot_name
ON (NAME = logical_file_name,
FILENAME = 'os_file_name') [ ,...n ]
AS SNAPSHOT OF source_database_name
Sic mund te shihet, nqs duam te krijojme nje database snapshot, duhet te shtojme klauzolen “AS SNAPSHOT OF” ne komanden “CREATE DATABASE”. Ushtrimi 3 krijon nje snapshot te databases AdventureWorks dhe e ruan ate ne direktorine C:\temp data.
(Kjo direktori duhet te krijohet paraprakisht).
USE master;
CREATE DATABASE AdventurWorks_snapshot
ON (NAME = 'AdventureWorks_Data' ,
FILENAME = 'C:\temp\snapshot_DB.mdf')
AS SNAPSHOT OF AdventureWorks;
Nje database snapshot(nqs eshte krijuar me pare) eshte nje kopje qe vetem mund te lexohet(read-only) e databases korresponduese ne dhe reflekton gjendjen ne kohen kur databaza u kopiua.
“Attaching” dhe “Detaching” Databazat
Te gjitha databazat mund te behen “detached” dhe me pas “attached” ne te njejten ose ne nje database system tjeter. “Detached” dhe me pas “attached” mund te behet nqs ne duam ta levizim databazen.
Ne mund ta “detach” nje database me ane te procedures se sistemit sp_detach_db.(Databaza qe do behet “detach” duhet te jete ne “single-user mode”)
Per te “attached” nje database mund te perdoret procedura e sistemit “sp_attach_db”.
Krijimi I tabeles: Forma bazike
Komanda CREATE TABLE krijon nje tabele te re me gjithe tippet e te dhenave perkatese per cdo kolone te saj. Forma e komandes CREATE TABLE eshte si me poshte:
CREATE TABLE table_name
(col_name1 type1 [NOT NULL| NULL]
[{, col_name2 type2 [NOT NULL| NULL]} ...])
table_name eshte emir I tabeles se re.
constraint I pare qe duhet te vendoset per nje kolone eshte ekzistenca e vleres NULL. Nqs NOT NULL specifikohet vendosja e vlerave NULL per ate kolon nuk lejohet.
Tabelat temporale jane tip tabelash qe ruhen ne databazen tempdb dhe fshihen ne menyre automatike ne momentin qe perfundon sesioni perkates.
Ushtrimi 4 tregon krijimin e tabelave ne tabelen “Sample”
Example 4
USE sample;
CREATE TABLE employee (emp_no INTEGER NOT NULL,
emp_fname CHAR(20) NOT NULL,
emp_lname CHAR(20) NOT NULL,
dept_no CHAR(4) NULL);
CREATE TABLE department(dept_no CHAR(4) NOT NULL,
dept_name CHAR(25) NOT NULL,
location CHAR(30) NULL);
CREATE TABLE project (project_no CHAR(4) NOT NULL,
project_name CHAR(15) NOT NULL,
budget FLOAT NULL);
CREATE TABLE works_on (emp_no INTEGER NOT NULL,
project_no CHAR(4) NOT NULL,
job CHAR (15) NULL,
enter_date DATE NULL);
Pervec tipit te te dhenave dhe vleredhenies NULL, kolonat kane gjitheshtu opsionet e meposhteme.
c DEFAULT
c IDENTITY
Opsioni “DEFAULT” ne percaktimin e kolones jep vleren qe merr automatikisht kolona nqs gjate insert nuk eshte specifikuar vlere.
Nje kolone me opsionin “IDENTITY” lejon qe kolona te kete sitip te dhenash vetem integer, te cilat zakonisht vendosen ne menyre implicite nga sistemi. Ne rastin kur percaktohet nga sistemi atehere opsioni “IDENTITY” ka nje vlere fillestare dhe vleren inkrementale.
Krijimi I Tabeles dhe integriteti
Nje nga vetite me te mira qe nje DBMS mund te ofroje eshte menyra e mirembajtjes se integritetit te te dhenave. “Constraints”, te cilat perdoren per te kontrolluar modifikimin ose ruajtjen e te dhenave quhen “integrity constraints”
Perfitimet me te medha nga mirembajtja e te dhenave me ane te “integrity constraints” jane:
1)Rrit cilesine e te dhenave
2)Zvogelon kohen e programimit
3)Mirembajtje me e lehte
“integrity constraints” Ndahen ne dy grupe :
1) Integrity constraints te deklaruar
2) Integrity constraints procedurial qe mbahen me ane te triggers
1)Integrity constraints te deklaruar ndahen ne keto nengrupe:
a) DEFAULT
b) UNIQUE
c) PRIMARY KEY
d) CHECK
e) FOREIGN KEY
Shprehja UNIQUE ka formen si me poshte
[CONSTRAINT c_name]
UNIQUE [CLUSTERED | NONCLUSTERED] ({ col_name1} ,...)
Opsioni CONSTRAINT I vendos emrin ne menyre eksplicite. Opsioni CLUSTERED ose NONCLUSTERED I referohet faktit qe RDBMS gjithmone gjenerone indekse per kolonat qe jane unique, vlera Default eshte NONCLUSTERED
Ushtrimi 6 iluatron shprehjen DEFAULT dhe UNIQUE .
Example 5.6
USE sample;
CREATE TABLE projects (project_no CHAR(4) DEFAULT 'p1',
project_name CHAR(15) NOT NULL,
budget FLOAT NULL
CONSTRAINT unique_no UNIQUE (project_no));
Cdo vlere e ne kolonen project_no eshte unike, perfshi vleren NULL.
Shprehja PRIMARY KEY
primary key i nje tabele mund te jete nje kolone ose nje grup kolonash vlerat e te cilave jane te ndryshme ne cdo rresht.
PRIMARY KEY ka formen e meposhteme:
[CONSTRAINT c_name]
PRIMARY KEY [CLUSTERED | NONCLUSTERED] ({col_name1} ,...)
USE sample;
CREATE TABLE employee (emp_no INTEGER NOT NULL,
emp_fname CHAR(20) NOT NULL,
emp_lname CHAR(20) NOT NULL,
dept_no CHAR(4) NULL,
CONSTRAINT prim_empl PRIMARY KEY (emp_no));
USE sample;
CREATE TABLE employee
(emp_no INTEGER NOT NULL CONSTRAINT prim_empl PRIMARY KEY,
emp_fname CHAR(20) NOT NULL,
emp_lname CHAR(20) NOT NULL,
dept_no CHAR(4) NULL);
Shprehja CHECK
Shprehja “check constraints” specifikon kushtet qe duhet te plotesoje nje kolone per tu ruajtur . Cdo rresht qe ruhet ne tabele ose cdo rresht qe modifikon vleren e kolones duhet te plotesoje kriterin.
Shprehja CHECK eshte:
[CONSTRAINT c_name]
CHECK [NOT FOR REPLICATION] expression
expression
Duhet te ktheje nje vlere Booleane(true ose false) dhe mund ti referohet cdo kolone ne tabelen korrente, por jo tabelave te tjera.
Ushtrimi 9
USE sample;
CREATE TABLE customer
(cust_no INTEGER NOT NULL,
cust_group CHAR(3) NULL,
CHECK (cust_group IN ('c1', 'c2', 'c10')));
Shprehja FOREIGN KEY
“Foreign key” eshte nje kolone ose nje grup kolonash ne nje tabele vlerat e te cilave perputhen me vlerat e “primary key ” ne nje tabele tjeter.Cdo “foreign key” ka forme si me poshte:
[CONSTRAINT c_name]
[[FOREIGN KEY] ({col_name1} ,...)]
REFERENCES table_name ({col_name2},...)
[ON DELETE {NO ACTION| CASCADE | SET NULL | SET DEFAULT}]
[ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]
USE sample;
CREATE TABLE works_on (emp_no INTEGER NOT NULL,
project_no CHAR(4) NOT NULL,
job CHAR (15) NULL,
enter_date DATE NULL,
CONSTRAINT prim_works PRIMARY KEY(emp_no, project_no),
CONSTRAINT foreign_works FOREIGN KEY(emp_no)
REFERENCES employee (emp_no));
Integriteti Referencial
Nje integritet referencial detyron rregulla per ruajtjen dhe modifikimin e te dhenave ne tabelen qe ka “foreign key” dhe korresponduesja “primary key”
Opsionet ON DELETE dhe ON UPDATE
USE sample;
CREATE TABLE works_on1
(emp_no INTEGER NOT NULL,
project_no CHAR(4) NOT NULL,
job CHAR (15) NULL,
enter_date DATE NULL,
CONSTRAINT prim_works1 PRIMARY KEY(emp_no, project_no),
CONSTRAINT foreign1_works1 FOREIGN KEY(emp_no)
REFERENCES employee(emp_no) ON DELETE CASCADE,
CONSTRAINT foreign2_works1 FOREIGN KEY(project_no)
REFERENCES project(project_no) ON UPDATE CASCADE);
Cdo fshirje rreshti ne tabelen “employee” do te shkaktonte fshirjen e te gjithe rreshtave ne tabelen “works_on1” qe kane vleren korresponduese te kolones emp_no.Ne menyre te ngjashme, cdo modifikim I vleres ne kolonen project_no te tabeles project do te shkaktonte te njejtin modifikim ne te gjithe vlerat korresponduese ne kolonen project_no te tabeles works_on1.
Krijimi I objekteve te tjere
CREATE VIEW
CREATE INDEX
CREATE PROCEDURE
CREATE TRIGGER
Krijimi I SYNONYM
USE sample;
CREATE SYNONYM prod
FOR AdventureWorks.Production.Product;
Tipi I te dhenave Alias
Nje tip te dhenash Alias eshte nje tip special I cili percaktohet nga perdoruesit duke perdorur tippet ekzistuesete te dhenave.Keto tipe mund te perdoren me shprehjen CREATE TABLE dhe kane formen e pergjithshme:
CREATE TYPE [ type_schema_name. ] type_name
{ [ FROM base_type [ ( precision [ , scale ] ) ] [ NULL | NOT NULL ] ]
| [ EXTERNAL NAME assembly_name [ .class_name ] ]
USE sample;
CREATE TYPE zip
FROM SMALLINT NOT NULL;
USE sample;
CREATE TABLE customer
(cust_no INT NOT NULL,
cust_name CHAR(20) NOT NULL,
city CHAR(20),
zip_code ZIP,
CHECK (zip_code BETWEEN 601 AND 99950)),
Modifikimi I objekteve te Database
Gjuha Transact-SQL suporton modifikimet e structures te objekteve si meposhte:
1 Database
2 Table
3 Stored procedure
4 View
5 Schema
6 Trigger
Modifikimi I nje databaze
Shtimi ose heqja e fileve te databases, Log Fileve ose Filegroups.
USE master;
GO
ALTER DATABASE projects
ADD FILE (NAME=projects_dat1,
FILENAME = 'C:\projects1.mdf', SIZE = 10,
MAXSIZE = 100, FILEGROWTH = 5);
Modifikimi I nje tabele
Shtimi ose heqja e nje kolone
USE sample;
ALTER TABLE employee
ADD telephone_no CHAR(12) NULL;
USE sample;
ALTER TABLE employee
DROP COLUMN telephone_no;
Modifikimi I kolones
USE sample;
ALTER TABLE department
ALTER COLUMN location CHAR(25) NOT NULL;
Shtimi ose heqja e Constraints
USE sample;
CREATE TABLE sales
(order_no INTEGER NOT NULL,
order_date DATE NOT NULL,
ship_date DATE NOT NULL);
ALTER TABLE sales
ADD CONSTRAINT order_check CHECK(order_date <= ship_date);
Fshirja e objekteve te Databazes
DROP object_type object_name
DROP DATABASE database1
DROP TABLE table_name1
Pervec DATABASE dhe TABLE, objektet ne komanden DROP mund te jene:
1 TYPE
2 SYNONYM
3 PROCEDURE
4 INDEX
5 VIEW
6 TRIGGER
7 SCHEMA