1 algjebra relacionale & sql ligjerata 2. 2 algjebra relacionale algjebra relacionale perdoret...
TRANSCRIPT
1
Algjebra Relacionale & SQL
Ligjerata 2
2
Algjebra Relacionale
• Algjebra Relacionale perdoret per te definuar menyren se si relacionet (tabelat) mund te operojne dhe dhe manipulojne me te dhena.
• Ajo perdor bazat e SQL me bazen e te dhenave relacionale, dhe ilustron operacionet bazike duke perdore DML.
• Kjo algjeber i paraqet operacionet themelore (duke involvuar tabelat) dhe operatcionet binare (duke perdore disa tabela).
3
SQL
• Structured Query Language (SQL)– Eshte e Standardizuar nga ANSI– Perkrahet nga RDBMS-te moderne
• Kommandat jane te perfshira ne tri grupe– Data Definition Language (DLL)
• Krijojne tabelat , etj
– Data Manipulation Language (DML)• Modifikoojne te dhenat
– Data Control Language• Kontrollojne se qka duan te perdorin – pranimet dhe
nderprerjen e privilegjet
4
Operacionet
SelekcionimiProjektimi
5
Selection
• Seleksionimi ose operacioni selekton rreshtat prej tabeles qe paraqitet me kushtin:
< kusht > < emri i tabeles>
• Shembull: course = ‘CM’ Students
Studentsstud# name course100 Faton PH stud# name
course200 Agim CM 200 Agim CM300 Bujar CM 300 Bujar CM
6
Projeksioni• Projekcioni ose eshte operacion i cili selekton
listen e kolonave nga tabela. < lista e kolones > < emriitabeles >
• shembulli: stud#, name Students
Studentsstud# name course stud# name100 Faton PH 100 Faton 200 Agim CM 200 Agim300 Bujar CM 300 Bujar
7
Selekcionimi / Projektimi
• Selekcionimi dhe projektimi zakonisht kombinohen:
stud#, name ( course = ‘CM’ Students)
Studentsstud# name course100 Faton PH stud# name200 Agim CM 200 Agim300 Bujar CM 300 Bujar
8
Operacionet Binare
Cartesian ProductTheta JoinInner Join
Natural JoinOuter JoinsSemi Joins
9
Produkti Cartesian
• Çdo rresht në relacionin e parë (R) me çdo rresht në lidhje të dytë (S):
R X S
10
Produkti Cartesian - ShembullStudents Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 300 Bujar CM
Students X Courses =stud# Students.name course course# Courses.name100 Faton PH PH Pharmacy100 Faton PH CM Computing200 Agim CM PH Pharmacy200 Agim CM CM Computing300 Bujar CM PH Pharmacy300 Bujar CM CM Computing
11
Theta Join
• Produkti Kartezian me kusht aplikohet:
R ⋈ <kushti> S
12
Theta Join - Shembull
Students Courses
stud# name course course# name
100 Faton PH PH Pharmacy
200 Agim CM CM Computing
300 Bujar CM
Students ⋈ stud# = 200 Courses
stud# Students.name course course# Courses.name
200 Agim CM PH Pharmacy
200 Agim CM CM Computing
13
Inner Join (Equijoin) brendshem
• Theta join ku <kushti> eshte (=) per qelesin primar dhe qelesin e jashtem
R ⋈ <R.primary_key = S.foreign_key> S
14
Inner Join - Shembull
Students Courses
stud# name course course# name
100 Faton PH PH Pharmacy
200 Agim CM CM Computing
300 Bujar CM
Students ⋈ course = course# Courses
stud# Students.name course course# Courses.name
100 Faton PH PH Pharmacy
200 Agim CM CM Computing
300 Bujar CM CM Computing
15
Natural Join
• Inner join jep te dhena te teperta (ne shembullin e meparshem: course and course#). Për të hequr këtë dyfishim:
< stud#, Students.name, course, Courses.name >
(Students ⋈ <course = course#> Courses)OseR1= Students ⋈ <course = course#> Courses
R2= < stud#, Students.name, course, Courses.name > R1
Rezultati quhet natural join i Students dhe Courses
16
Natural Join - Shembull
Students Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 300 Bujar CM
R1= Students ⋈ <course = course#> CoursesR2= < stud#, Students.name, course, Courses.name > R1stud# Students.name course Courses.name
100 Faton PH Pharmacy200 Agim CM Computing300 Bujar CM Computing
17
Outer Joins
• Inner join + rreshat e tabeles qe nuk e plotesojne <kushtin>
• Left Outer Join: R <R.primary_key = S.foreign_key> S Të gjitha rreshtave nga R ruhen dhe rreshtat tjere e S janëte mbushur me NULL
• Right Outer Join: R <R.primary_key = S.foreign_key> S
Të gjitha rreshtave nga S ruhen dhe rreshtave qe nuk e plotesojne kushtin në R janë te mbushura me NULL
18
Left Outer Join - ShembullStudents Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 400 Petrit EN CH Chemistry
Students <course = course#> Courses
stud# Students.name course course# Courses.name
100 Faton PH PH Pharmacy200 Agim CM CM Computing400 Petrit EN NULL NULL
19
Right Outer Join - ShembullStudents Coursesstud# name course course# name100 Faton PH PH Pharmacy200 Agim CM CM Computing 400 Petrit EN CH Chemistry
Students <course = course#> Courses
stud# Students.name course course# Courses.name
100 Faton PH PH Pharmacy200 Agim CM CM ComputingNULL NULL NULL CH Chemistry
20
Kombinimi i operacioneve dhe JOIN
Students Coursesstud# name address course course# name100 Faton Aberdeen PH PH Pharmacy200 Agim Dundee CM CM Computing 300 Bujar Aberdeen CM
Si te paraqiten emrat e studenteve (nga Aberdeen) dhe emrat e kursev ete Si te paraqiten emrat e studenteve (nga Aberdeen) dhe emrat e kursev ete tyretyre
R1= Students ⋈ <course=course#> CoursesR2= <address=“Aberdeen”> R1R3= <Students.name, Course.name> R2
Students.name Courses.nameFaton PharmacyBujar Computing
21
Disa Operacione te tjera
Unioni
Intersekcioni
Diferenca
22
Unioni
• Takes the set of rows in each table and combines them, eliminating duplicates
• Participating relations must be compatible, ie have the same number of columns, and the same column names, domains, and data types
R S R SA Ba1 b1a2 b2
A Ba2 b2a3 b3
A Ba1 b1a2 b2a3 b3
23
Intersection
• Takes the set of rows that are common to each relation
• Participating relations must be compatible
R S R SA Ba1 b1a2 b2
A Ba2 b2a3 b3
A Ba2 b2
24
Difference
• Takes the set of rows in the first relation but not the second
• Participating relations must be compatible
R S R - SA Ba1 b1a2 b2
A Ba2 b2a3 b3
A Ba1 b1
25
Ushtrimi -
Employee WorkLoad Projectempid name empid* projid* duration projid name
E100 Faton E100 P001 17 P001 DB
E200 Agim E200 P001 12 P002Access
E300 Bujar E300 P002 15 P003 SQL
E400 Petrit
Përcaktoni rezultatin e operacioneve për:
• Natural join ndermjet Employee dhe WorkLoad
• Left outer join ndermjet Employee dhe WorkLoad
• Right outer join ndermjet WorkLoad dhe Project
26
Algjebra Relacionale Te shkruarit e oeracioneve
ne SQL
27
Unary Operations
Selection
course = ‘Computing’ Students
In SQL:
Select *
From Students
Where course = ‘Computing’;
Projection
stud#, name Students
In SQL:
Select stud#, name
From Students;
Selection & Projection
stud#, name ( course = ‘Computing’ Students)
In SQL:
Select stud#, name
From students
Where course = ‘Computing’;
28
Binary Operations/Joins
Cartesian Product: Students X Courses
In SQL:
Select *
From Students, Courses;
Theta Join: Students ⋈ <stud# =200> Courses
In SQL:
Select *
From Students, Courses
Where stud# = 200;
29
Binary Operations/Joins
Inner Join (Equijoin): Students ⋈ <course=course#> Courses
In SQL:
Select *
From Students, Courses
Where course=course#;
Natural Join:
R1= Students ⋈ <course = course#> Courses
R2= < stud#, Students.name, course, Courses.name > R1
In SQL:
Select stud#, Students.name, course, Courses.name
From Students, Courses
Where course=course#;
30
Outer Joins
Left Outer JoinStudents <course = course#> CoursesIn SQL:Select * From Students, CoursesWhere course = course#(+)
Right Outer JoinStudents <course = course#> CoursesIn SQL:Select * From Students, CoursesWhere course(+) = course#
31
Combination of Unary and Join Operations
R1= Students ⋈ <course=course#> Courses
R2= <address=“Aberdeen”> R1
R3= <Students.name, Course.name> R2
In SQL:
Select Students.name, Courses.name
From Students, Courses
Where course=course#
AND address=“Aberdeen”;
32
Set Operations
Union: R S
In SQL:
Select * From R
Union
Select * From S;
Intersection: R S
In SQL:
Select * From R
Intersect
Select * From S;
Difference: R - S
In SQL:
Select * From R
Minus
Select * From S;
33
SQL Operators
Between, In, Like, Not
34
SQL Operators
SELECT *FROM BookWHERE catno BETWEEN 200 AND 400;
SELECT *FROM ProductWHERE prod_desc BETWEEN ‘C’ AND ‘S’;
SELECT *FROM BookWHERE catno NOT BETWEEN 200 AND 400;
35
SQL Operators
SELECT Catno
FROM Loan
WHERE Date-Returned IS NULL;
SELECT Catno
FROM Loan
WHERE Date-Returned IS NOT NULL;
36
SQL Operators
SELECT Name
FROM Member
WHERE memno IN (100, 200, 300, 400);
SELECT Name
FROM Member
WHERE memno NOT IN (100, 200, 300, 400);
37
SQL OperatorsSELECT Name
FROM Member
WHERE address NOT LIKE ‘%Aberdeen%’;
SELECT Name
FROM Member
WHERE Name LIKE ‘_ES%’;
Note: In MS Access, use * and # instead of % and _
38
Selecting Distinct Values
Studentstud# name address100 Faton Aberdeen200 Agim Dundee300 Bujar Aberdeen
SELECT Distinct address
FROM Student;
address
Aberdeen
Dundee
39
Exercise
Employee(empid, name)
Project(projid, name)
WorkLoad(empid*, projid*, duration)
List the names of employees working on project
name ‘Databases’.
40