Əlaqəli sorğu dilləri

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

giriş

Əlaqəli Sorğu Dilləri – İndiyə qədər biz verilənlər bazasının nə olduğunu, verilənlər bazasının xüsusiyyətlərinin nə olduğunu, tələblərin necə toplanacağını və onları ER diaqramlarına necə yerləşdirməyi, onları cədvəllərə və onların sütunlarına necə çevirməyi, məhdudiyyətləri təyin etməyi və s. gördük. Bir dəfə. bizdə verilənlər bazası hazır olan istifadəçilər onlardan istifadə etməyə başlayacaqlar. Bəs onlar verilənlər bazasına necə daxil olacaqlar? Çox vaxt onlar bəzi proqramlardan istifadə edərək məlumatlara daxil olurlar. Bu proqramlar verilənlər bazası ilə SQL vasitəsilə əlaqə saxlayacaq və DBMS proqramın və SQL-in toxunulmazlığının idarə edilməsinə cavabdehdir. SQL verilənlər bazası ilə qarşılıqlı əlaqə yaratmaq üçün öz sorğu metodlarına malikdir. Bəs bu sorğular verilənlər bazasında necə işləyir? Bu sorğular riyaziyyatda olan əlaqə cəbrinə bənzəyir. Verilənlər bazasında bizdə var masaları əlaqəli cəbrdə iştirak edir.

Əlaqəli sorğu dilləri

Münasibət sorğu dilləri istifadəçi istəklərini pozmaq və istəkləri yerinə yetirmək üçün DBMS-ə təlimat vermək üçün əlaqəli cəbrdən istifadə edir. İstifadəçinin verilənlər bazası ilə ünsiyyət qurduğu dildir. Bu əlaqəli sorğu dilləri prosedur və ya qeyri-prosedur ola bilər.

Prosessual sorğu dili

Prosedur sorğu dilində istifadəçi tələbini yerinə yetirmək üçün DBMS-ə ardıcıllıqla müxtəlif əməliyyatlar aparmağı tapşıran bir sıra sorğular olacaqdır. Misal üçün, get_CGPA prosedurda hər fənn üzrə tələbə qiymətlərini almaq, ümumi qiymətləri hesablamaq və sonra ümumi ballarına əsasən CGPA-ya qərar vermək üçün müxtəlif sorğular olacaqdır. Bu prosedur sorğu dili verilənlər bazasından verilənlər bazasından nəyin tələb olunduğunu və onları verilənlər bazasından necə əldə etməyi izah edir. Münasibət cəbri prosedur sorğu dilidir.

Qeyri-Prosessual Sorğu Dili

Qeyri-prosedur sorğuların verilənlər bazasından nəticə əldə etmək üçün bir və ya daha çox cədvəldə tək bir sorğusu olacaqdır. Məsələn, Tələbə cədvəlində tək şəxsiyyət vəsiqəsi olan tələbənin adını və ünvanını əldə edin. Relational Calculus cədvəllərlə nə edəcəyini bildirən, ancaq bunu necə həyata keçirəcəyini bildirməyən prosedur dildir.

Bu sorğu dillərində əsasən verilənlər bazasındakı cədvəllərdə sorğular olacaqdır. İlişkisel verilənlər bazasında bir cədvəl əlaqə olaraq bilinir. Cədvəlin qeydləri / satırları cədvəl adlanır. Cədvəlin sütunları atribut kimi də tanınır. Bütün bu adlar əlaqəli verilənlər bazasında bir-birinin əvəzinə istifadə olunur.

Münasibət cəbri

Münasibət cəbri prosedur sorğu dilidir. Bir və ya daha çox münasibət / cədvəl tələb edir və əməliyyatı yerinə yetirir və nəticə verir. Bu nəticə yeni bir cədvəl və ya münasibət olaraq da qəbul edilir. Fərz edək ki, verilmiş şəxsiyyət vəsiqəsi üçün tələbə adını, ünvanını və sinfini almalıyıq. Bu vəziyyətdə bir əlaqəli cəbr nə edəcəkdir, adı, ünvanını və sinfini TƏLƏBƏ cədvəlindən giriş identifikatoru üçün süzgəcdən keçirir. Riyazi baxımdan, əlaqəli cəbr verilmiş şəxsiyyət üçün TƏLƏBƏ cədvəlinin alt hissəsini yaratmışdır.

Münasibət cəbrində əməliyyatları göstərən operatorlar olacaqdır. Bu cəbr tək münasibətdə tətbiq edilə bilər - adlanır birtərəfli və ya iki masada tətbiq edilə bilər - adlanır binar. Münasibət üzərində əməliyyatlar tətbiq edilərkən, əlaqənin yaranan alt hissəsi yeni münasibət olaraq da bilinir. Bəzi əməliyyatlarla əlaqəli bir neçə addım ola bilər. Vasitəçi səviyyədəki əlaqələrin alt qrupları münasibət olaraq da bilinir. Aşağıda fərqli əməliyyatlar gördükdə daha yaxşı başa düşəcəyik.

DBMS-də əlaqəli Cəbr 6 əsas əməliyyata malikdir. Bu əsas əməliyyatlar üzərində müəyyən edilmiş bir neçə başqa əməliyyat var.

(Σ) seçin

Seçin (σ) - Bu unary əlaqəli bir əməliyyatdır. Bu əməliyyat şərtləri ödəyən əlaqənin üfüqi alt hissəsini (cərgələrin alt hissəsini) çəkir. Məlumatı əlaqədən süzmək üçün <,>, <=,> =, = və! = Kimi operatorlardan istifadə edə bilərsiniz. Müxtəlif filtrasiya şərtlərini birləşdirmək üçün məntiqi AND, OR və NOT operatorlarından da istifadə edə bilər. Bu əməliyyat aşağıdakı kimi təqdim edilə bilər:

σ p (r)

Σ seçilmiş əməliyyat üçün simvol olduğu halda, r əlaqə / cədvəl, p isə məntiqi düstur və ya alt dəsti əldə etmək üçün süzmə şərtləridir. Aşağıdakı bir nümunəyə baxaq:

σSTD_NAME = "Ceyms" (TƏLƏBƏ) 

Yuxarıdakı münasibət cəbri nə edir? TƏLƏBƏ cədvəlindən Tələbə adından 'James' kimi qeyd / taple seçir.

σdept_id = 20 VƏ əmək haqqı> = 10000 (İŞÇİ) - Şöbə ID = 20 olan və əmək haqqı 10000-dən çox olan işçilərlə İşçilər cədvəlindən qeydləri seçir.

Layihə (∏)

Layihə (∏) - Bu unary operatordur və yuxarıdakı əməliyyata bənzəyir. Göstərilən şərtlərə əsasən əlaqənin alt hissəsini yaradır. Burada münasibət - şaquli alt əlaqədən yalnız seçilmiş sütunları / atributları seçir. Yuxarıdakı seçim əməliyyatı əlaqənin alt hissəsini yaradır, lakin əlaqədəki bütün xüsusiyyətlər üçün. Aşağıdakı kimi göstərilir:

a1, a2, a3 (r)

Burada ∏ proyeksiya üçün operator, r münasibət və a1, a2, a3 münasibətlərin nəticələnən alt hissəsində göstəriləcək atributlarıdır.

std_adı, ünvan, kurs (TƏLƏBƏ) - Bu TƏLƏBƏ cədvəlindən bütün qeydləri, ancaq seçilmiş sütunları - std_name, ünvanı və kursu seçəcəkdir. Fərz edək ki, müəyyən tələbə üçün yalnız bu 3 sütunu seçməliyik, sonra həm layihə, həm də əməliyyatları birləşdirməliyik.

STD_ID, ünvan, kurs (σ STD_NAME = "Ceyms"(TƏLƏBƏ)) - bu 'James' üçün qeyd seçir və yalnız std_ID, ünvanı və kurs sütunlarını göstərir. Burada iki unary operatorun birləşdirildiyini görə bilərik və iki əməliyyatı yerinə yetirir. Əvvəlcə 'James' üçün TƏLƏBƏ cədvəlindən toplu seçir. TƏLƏBƏ nin nəticələnən alt qrupu da vasitəçi münasibət kimi qəbul edilir. Ancaq müvəqqəti və bu əməliyyatın sonuna qədər mövcuddur. Daha sonra bu müvəqqəti əlaqədən 3 sütunu süzür.

Yenidən adlandırın (ρ)

Yenidən adlandırın (ρ) - Bu, əlaqələrin cədvəllərini və sütunlarını yenidən adlandırmaq üçün istifadə olunan unary operatorudur. Özünü birləşdirmə əməliyyatını həyata keçirdiyimiz zaman iki eyni cədvəli fərqləndirməliyik. Bu halda masalardakı operatorun adını dəyişmək şəkilə girir. İki və ya daha çox cədvələ qoşulduqda və bu cədvəllərin sütun adları eyni olduqda, onları fərqləndirmək üçün sütunların adını dəyişdirmək həmişə yaxşıdır. Bu Kartezyen məhsulu əməliyyatını həyata keçirdiyimiz zaman baş verir.

ρ R(E)

Ρ adını dəyişmə operatoru olduğu yerdə, E mövcud münasibət adıdır və R yeni əlaqə adıdır.

ρ TƏLƏBƏ (STD_TABLE) - STD_TABLE cədvəlini TƏLƏBƏ olaraq dəyişdirir

Cədvəlin sütunlarını dəyişdirmək üçün başqa bir nümunə görək. TƏLƏBƏ cədvəlində ID, NAME və ADDRESS sütunları varsa və STD_ID, STD_NAME, STD_ADDRESS olaraq dəyişdirilməlidirsə, aşağıdakı kimi yazmalıyıq.

ρ STD_ID, STD_NAME, STD_ADDRESS(TƏLƏBƏ) - Adların cədvəldə göründüyü sırada sütunların adını dəyişdirəcəkdir

Kartezyen məhsulu (X)

Kartezyen məhsulu (X): - Bu ikili operator. İki əlaqənin əlaqələrini bir əlaqəyə birləşdirir.

 RXS

Burada R və S iki münasibətdir və X operatordur. R əlaqəsinin m, S münasibətinin isə n əlaqəsi varsa, nəticə əlaqəsi olacaqdır mn yerlər. Məsələn, EMPLOYEE (5 kanal) və DEPT münasibətləri (3 liman) üzərində kartezyen məhsulu həyata keçirsək, onda 15 limanla yeni qarışıq əldə edəcəyik.

ƏMƏKDAŞLAR X DEPTİL

Bu operator sadəcə hər cədvəlin qapıları arasında bir cüt yaratacaq. yəni; ƏMƏKDAŞ cədvəlindəki hər bir işçi DEPT cədvəlindəki hər şöbə ilə uyğunlaşdırılacaqdır. Aşağıdakı diaqram kartezyen məhsulunun nəticəsini əks etdirir.

Pin

Birlik (U)

Birlik (U) - İki münasibət əlaqələrini birləşdirən ikili operatordur. İlə işarələnir

R ABŞ

R və S əlaqələr, U isə operatordur.

DİZAYN_EMPLOYEE TESTING_EMPLOYEE

DESIGN_EMPLOYEE və TESTING_EMPLOYEE iki münasibətdir.

Kartezyen məhsulundan fərqlidir:

  • Kartezyen məhsulu, iki əlaqənin xüsusiyyətlərini bir əlaqəyə birləşdirir, Birlik isə iki əlaqənin əlaqələrini bir əlaqəyə birləşdirir.
  • Birlikdə hər iki münasibət eyni sayda sütuna sahib olmalıdır. Tutaq ki, dizayn və sınaq şöbəsində işləyən işçiləri siyahıya salmalıyıq. Sonra işçi masasında birliyi edəcəyik. Eyni masada birləşmə olduğundan eyni sayda atribut var. Kartezyen məhsulu atribut və ya sıra sayına cəmlənmir. Atributları kor-koranə birləşdirir.
  • Birlikdə hər iki münasibət eyni qaydada eyni xüsusiyyətlərə malik olmalıdır. Yuxarıda göstərilən nümunədə həmkarlar ittifaqı işçilərlə münasibətdə olduğu üçün eyni qaydada eyni növ xüsusiyyətə malikdir.

Hər iki münasibətdə eyni sayda əlaqələndiriciyə ehtiyac yoxdur. Birləşmə nəticəsində təkrar təkərlər varsa, o zaman yalnız bir qapaq saxlayır. Əgər hər hansı bir münasibətdə bir qapaq varsa, bu əlaqəni yeni münasibətdə saxlayır. Yuxarıdakı nümunədə dizayn şöbəsindəki işçilərin sayının test şöbəsindəki işçilərlə eyni olmaması lazımdır. Aşağıdakı diaqram da eyni şeyi göstərir. Cədvəl məlumatlarını cədvəldə göründükləri sırada birləşdirdiyini müşahidə edə bilərik.

Pin

Sütunların sırası və ya sütunların sayı fərqli olsaydı, hər iki cədvələ qoşula bilməzdik.

Set-fərq (-)

Fərqlilik (-) - Bu ikili operator. Bu operator bir əlaqədə olan, lakin başqa münasibətdə olmayan əlaqələndiricilərlə yeni bir əlaqə yaradır. Bu '-'symbol ilə qeyd olunur.

R - S

R və S əlaqələrdir.

Fərz edək ki, Dizayn şöbəsində çalışan, lakin testdə olmayan işçiləri götürmək istəyirik.

                DESIGN_EMPLOYEE -TESTING_EMPLOYEE

Pin

Yuxarıda göstərilən əsas əməliyyatlara əsaslanan əlavə əlaqəli əməliyyatlar mövcuddur. Bəziləri bunlardır:

Qovşağı seçin

Qovşağı təyin edin - Bu əməliyyat ikili bir əməliyyatdır. Hər iki münasibətdə olan əlaqələndiricilərlə münasibətlə nəticələnir. '∩' ilə işarələnir.

                R.S

R və S əlaqələrdir. Həm R-də, həm də S-də mövcud olan bütün kanalları seçir və yeni bir münasibətlə nəticələnir.

Fərz edək ki, həm dizayn, həm də sınaq şöbəsində çalışan işçiləri tapmalıyıq. Yuxarıdakı nümunədəki kimi kanallarımız varsa, yeni nəticə münasibətində heç bir qapı olmayacaqdır. Tutaq ki, aşağıda göstərilənlər var və set fərqindən sonra yeni əlaqəni görək.

Pin

Bu çoxluq kəsişməsi çoxluq əməliyyatlarının birləşməsi kimi də yazıla bilər.

R ∩ S   R- (RS)

yəni; RS-i yalnız R-də mövcud olan qapaqları əldə etmək üçün qiymətləndirir və sonra yalnız R-də mövcud olan qeydləri alır, lakin RS-in yeni əlaqəsində deyil.

Yuxarıdakı işçilərin nümunəsində,

DESIGN_EMPLOYEE - (DESIGN_EMPLOYEE - TESTING_EMPLOYEE)

Əvvəlcə yalnız dizayn işçiləri olan işçiləri filtrləyir - (104, Kathy). Bu nəticə daha sonra dizayn işçisi ilə fərqi tapmaq üçün istifadə olunur. Bu dizayn işçiləri olan işçiləri tapacaq, lakin yeni bir nəticə vermir - (100, James). Beləliklə həm dizayner, həm də sınaqdan keçirən nəticə toplu verir. Burada görə bilərik ki, əsas əlaqəli operator iki dəfə təyin olunmuş kəsişməni əldə etmək üçün istifadə olunur. Bu səbəbdən bu əməliyyat əsas əməliyyat deyildir.

tapşırıq

Tapşırıq - Adından da göründüyü kimi, təyinat operatoru ''əlaqəli əməliyyatın nəticəsini müvəqqəti əlaqəli dəyişənə təyin etmək üçün istifadə olunur. Bu, əlaqəli əməliyyatda birdən çox addım olduqda və hər şeyi tək bir ifadə ilə idarə etmək çətin olduqda faydalıdır. Nəticələrin müvəqqəti əlaqəyə verilməsi və sonrakı əməliyyatda bu müvəqqəti əlaqədən istifadə edilməsi işi asan və asanlaşdırır.

TS - müvəqqəti T əlaqəsinə təyin olunmuş S əlaqəsini göstərir

Münasibət əməliyyatı a1, a2 (σ p (E)) seçim və proyeksiya ilə aşağıdakı kimi bölmək olar.

T  σ p (E)

                S a1, a2 (T)

Tələbə 'James' üçün STD_ID, ADDRESS və COURSE almaq üçün proyeksiyadakı yuxarıdakı nümunəmiz aşağıdakı kimi yenidən yazıla bilər.

STD_ID, ünvan, kurs (σ STD_NAME = "Ceyms"(TƏLƏBƏ))

T σ STD_NAME = "Ceyms"(TƏLƏBƏ)

S STD_ID, ünvan, kurs (T)

Təbii Qoşulma

Təbii qoşulma - Yuxarıda gördüyümüz kimi, kartezyen məhsulu sadəcə iki əlaqənin xüsusiyyətlərini bir-birinə birləşdirir. Ancaq yeni əlaqənin düzgün əlaqələndiriciləri olmayacaq. Yalnız qapaq birləşmələrinə malikdir. Düzgün kranları əldə etmək üçün kartezyen məhsulu üzrə seçim əməliyyatından istifadə etməliyik. Bu əməliyyat dəsti - kartezyen məhsulu və ardından seçim - təbii birləşmə adlanan bir əlaqəyə birləşdirilir. İlə işarələnir 

RS

Tutaq ki, 10-cu şöbədə çalışan işçiləri seçmək istəyirik. Sonra işçilərimizdə və DEPT-də kartezyen məhsulunu yerinə yetirəcəyik və hər iki münasibətdə 10-a uyğun DEPT_ID tapacağıq. Eyni şey təbii birləşmə ilə edilir

σ EMPLOYEE.DEPT_ID = DEPT> DEPT_ID VƏ EMPLOYEE.DEPT_ID = 10(İŞÇİ X DEPT)           

Eyni, təbii birləşmə kimi istifadə edilə bilər      ƏMƏKDAŞLAR ∞ DEPTİ

Pin

Yuxarıdakı nümunədən son münasibətdə yalnız hər iki əlaqədən uyğun gələn məlumatların saxlanıldığını görürük. Tutaq ki, mövcud olub-olmamasından asılı olmayaraq birinci əlaqədəki bütün məlumatları və ikinci əlaqədəki müvafiq məlumatları saxlamaq istəyirik. Bu vəziyyətdə xarici qoşulma istifadə edirik. Bu qoşulma, qapaqların bütün birləşmələrinin düzgün şəkildə göstərilməsini təmin edir. Kartezyen məhsulundan fərqli olaraq, bu qoşulma, əgər onlar üçün uyğun bir uyğunluq varsa və hər hansı bir uyğunluq yoxdursa, bu atributa null əlavə edildikdə, hər iki cədvəldən bir qapaq yaratdığınızdan əmin olun. Aşağıdakı xarici birləşmə növlərində onları görək.

Xarici birləşmələrin üç növü var

Sol Xarici Qoşulma

Sol xarici birləşmə - Bu əməliyyatda, sol tərəfdəki əlaqədəki bütün qapaqlar saxlanılır. Sağ əlaqədəki bütün uyğun xüsusiyyətlər dəyərlərlə göstərilir və dəyəri olmayanlar NULL olaraq göstərilir.

DEPT və EMPLOYEE cədvəlindəki sol xarici birləşmə nümunəsinin aşağıda DEPT_ID = 10 uyğun birləşməsini dəyərlərlə birləşdirir. Ancaq DEPT_ID = 30-da hələ heç bir işçi yoxdur. Bu səbəbdən həmin işçilər üçün NULL göstərilir. Beləliklə, bu xarici birləşmə iki əlaqəni birləşdirmək üçün kartezyen məhsulundan daha mənalı olur.

Pin

Sağ xarici birləşmə

Sağ xarici birləşmə - Bu, sol xarici birləşmənin əksinədir. Burada sağ tərəfdəki bütün atributlar saxlanılır və sol əl münasibətlərindəki uyğun xüsusiyyət tapılıb göstərilir. Uyğunluq tapılmadıqda null göstərilir. Aşağıdakı kimi başa düşmək üçün eyni yuxarıdakı nümunə yenidən yazılmışdır:

Pin

Hər iki halda da sifariş və sütun fərqinə diqqət yetirin.

Tam Xarici Qoşulma

Tam xarici qoşulma - Bu həm sol, həm də sağ xarici birləşmənin birləşməsidir. Hər iki əlaqədən olan bütün xüsusiyyətləri göstərir. Əgər uyğun gələn atribut başqa münasibətdə varsa, o zaman göstəriləcək, əks halda bu atributlar sıfır kimi göstərilir.

Pin

Yuxarıda göstərilən diaqram özünü izah edir.

Bölmə

Bölmə - Bu əməliyyat 'cümləsi ilə tapıntıları tapmaq üçün istifadə olunurhamı üçün '. '÷' ilə işarələnir. Tutaq ki, bütün şöbələrdə çalışan bütün işçiləri görmək istəyirik. Bunu tapmaq üçün hansı addımlar atılır?

  • Əvvəlcə bütün şöbənin kimliyini tapırıq -  T1 ∏DEPT_ID (BÖLMƏ)
  • Növbəti addım bütün işçilərin və onların şöbələrinin siyahısıdır - T2 ∏ EMP_ID, DEPT_ID (İŞÇİ)

Üçüncü addımda T2-dəki işçiləri bütün şöbənin şəxsiyyət sənədləri ilə T1-də tapacağıq. Bu bölmə əməliyyatından istifadə edərək əldə edilir - T2 ÷ T1

Pin

Crack Sistemi Dizayn Müsahibələri
Translate »
1