DBMS-də ekvivalentlik qaydası

Yuxarıda gördüyümüz kimi, hər iki ifadənin eyni qeydlər qrupunu yaratması halında, hər hansı bir əlaqəli ifadənin ekvivalenti olduğu deyilir. İki ifadə bərabər olduqda, onları bir-birinin əvəzinə istifadə edə bilərik. yəni; daha yaxşı performans verən ifadədən birini istifadə edə bilərik.

Fərqli əməliyyat növləri üçün fərqli ekvivalent ifadəyə sahib ola bilərik. Ekvivalentlik qaydası operatorların hər biri üçün ekvivalentlik ifadəsinin necə yazılacağını müəyyənləşdirir. Onları aşağıda görək.

Seçim əməliyyatları

Cədvəldə bir-birinin içərisinə ilmə vuran çoxsaylı seçim əməliyyatımız olduqda, onları istənilən qaydada yaza bilərik. Yəni,

σθ1 (-2 (T)) = σθ2 (-1 (T)), burada T cədvəl, θ isə filtr şərtidir.

Bu, seçim əməliyyatında θ1 və θ2 əmrinin nəticəni təsir etməməsini nəzərdə tutur. İstənilən qaydada istifadə edilə bilər. Yəni seçmə əməliyyatının şərtləri dəyişdiricidir.

Məsələn, DESIGN_18 sinifində oxuyan 01 yaşındakı şagirdləri geri alın.

SELECT * FROM (SELECT * 
			      FROM STUDENT WHERE AGE = 18) t 
		WHERE CLASS_ID = ‘DESIGN_01’;

or
SELECT * FROM (SELECT * 
			  FROM STUDENT WHERE CLASS_ID = ‘DESIGN_01’) t 
		WHERE AGE =18;

(Hər iki sorğu eynidir və eyni nəticə verir.)

Əslində, münasibət ifadələri bu formada ekvivalentlik münasibətinin bir hissəsi kimi yazılır. Yuxarıdakı sorğu daha yaxşı başa düşmək üçün yazılmışdır. İrəliləyək, ekvivalentlik qaydasını əlaqəli ifadə baxımından anlamağa çalışaq. Yuxarıdakı sorğu üçün əlaqəli ifadə aşağıdakı kimi yazıla bilər:

σ YAŞ = 18 (σCLASS_ID = 'DESIGN_01' (TƏLƏBƏ)) = σCLASS_ID = 'DESIGN_01' (σ YAŞ = 18 (TƏLƏBƏ))

Məlumatların köməyi ilə bunu görək. Aşağıda masaları filtrləmə şərtini dəyişdirərək seçmə əməliyyatını göstərin. Aralıq cədvəllərin fərqli qeydləri olsa da, yekun nəticə eynidir.

Bağlı seçim

Çoxsaylı filtr şərtləri ilə seçim əməliyyatımız olduqda, onları seçim əməliyyatı sırasına bölə bilərik. Yəni,

σ θ1 və θ2 (T)) = σ θ1 (σθ2 (T))

Məsələn, DESIGN_18 sinifində oxuyan 01 yaşındakı şagirdləri geri alın.

σ YAŞ = 18 VƏ SINF_İD = 'DİZAYN_01' (TƏLƏBƏ) = σ YAŞ = 18 (σCLASS_ID = 'DİZAYN_01' (TƏLƏBƏ))

Proyeksiya əməliyyatının ardıcıllığı

Proyeksiya əməliyyatının ardıcıllığı olduqda, yalnız son proyeksiya tələb olunur və proqnozların qalan hissəsi laqeyd edilə bilər. Münasibət ifadəsi baxımından aşağıdakı kimi yazmaq olar:

∏Col_list1 (∏Col_list2 (… (∏Col_listN (T))….)) = ∏Col_list1 (T)

∏ STD_ID, STD_NAME (∏STD_ID, STD_NAME, AGE, ADDRESS (∏STD_ID, STD_NAME, AGE, ADDRESS, CLASS_ID, SKILLS

(STUDENT))) = ∏STD_ID, STD_NAME (STUDENT)

 

 

Yəni seçəcəyimiz son sütunlar dəsti, sorğu boyu fərqli sütunların hamısını seçmək əvəzinə yalnız tələb olunur.

Kartezyen məhsulu və Qoşulma ilə seçim

İki cədvəldə Kartezyen məhsulu və nəticədə seçim şərtimiz olduqda onu filtr şərtli təbii birləşmə ilə əvəz edə bilərik.

σ θ1 (T X S) = T ∞ θ1S

σ e.DEPT_ID = d.DEPT_ID (EMP X DEPT) = EMP ∞ e.DEPT_ID = d.DEPT_ID DEPT

 

 

yəni; EMP və DEPT-dəki Kartezyen məhsulu, birləşmədən asılı olmayaraq hər iki cədvəlin qeydlərini birləşdirəcəkdir. Üzərinə qoşulma şərti olan bir seçim əməliyyatı tətbiq edildikdə, yalnız eyni DEPT_ID olan qeydləri seçir. Eyni, hər iki cədvəldən yalnız DEPT_ID-ə əsaslanan uyğun qeydləri seçdiyi təbii birləşmə ilə edilə bilər.

Eynilə, bir şərtlə iki cədvəldə təbii birləşmə və başqa bir şərtlə üzərində bir seçim əməliyyatı olduqda, şərtləri təbii birləşməyə birləşdirə bilərik.

σ θ1 (T ∞ θ2S) = T ∞ θ1 AND θ2S

σ AGE = 23 (EMP∞ e.DEPT_ID = d.DEPT_ID DEPT) = EMP ∞ AGE =23 AND e.DEPT_ID = d.DEPT_ID DEPT

 

yəni; EMP və DEPT-də təbii birləşmə DEPT_ID-ə əsaslanaraq yerinə yetirildikdə və nəticə AGE = 23 üçün süzüləndə DEPT_ID və AGE = 23 şərtlərində təbii birləşmənin yerinə yetirilməsi ilə eyni nəticə veriləcəkdir.

Təbii Qoşulma ilə Join Qoşulun

Tables birləşmə ilə iki cədvəldə təbii birləşmə olduqda, cədvəllərin sırasının heç bir əhəmiyyəti yoxdur. Yəni, hər hansı bir sıra ilə dəyişdirilə bilən cədvəllərə sahib ola bilərik.

 

T ∞ θ2 S = S ∞ θ2 T

EMP ∞ e.DEPT_ID = d.DEPT_ID DEPT = DEPT ∞ e.DEPT_ID = d.DEPT_ID EMP

Bu düz irəli

Assosiativ Təbii Qoşulmalar

Bu yuxarıdakı qaydanın inkişaf etdirilməsidir. Təbii birləşmələrin üç və ya daha çox cədvəldə yerinə yetirildiyi zaman, iki cədvəlin istənilən birləşməsində yerinə yetirilə biləcəyini bildirir. Yəni təbii birləşmələr assosiativdir.

(R ∞ S)  ∞ T = R ∞ (S ∞ T)

(EMP ∞ DEPT)  ∞ PROJECT = EMP ∞ (DEPT ∞ PROJECT)

Eynilə, teta birləşmələri də assosiativdir.
(R ∞θ1 S)  ∞ Θ2 AND θ3 T = R ∞ θ1 AND θ3 (S ∞ θ2 T)
	(EMP ∞ e.DEPT_ID = d.DEPT_ID DEPT)  ∞d.PROJ_ID = p.PROJ_ID AND e.PROJ_ID = p.PROJ_ID PROJECT = EMP ∞ e.DEPT_ID = d.DEPT_ID AND e.PROJ_ID = p.PROJ_ID (DEPT ∞d.PROJ_ID = p.PROJ_ID PROJECT)

 Paylayıcı Seçim Əməliyyatı

Teta birləşmə (təbii birləşmə) ilə seçim əməliyyatı aşağıdakı kimi paylayıcıdır:

  • Seçmə şərtlərinin bütün sütunlarında yalnız bir cədvəl olduqda, aşağıdakı kimi teta birləşməsi ilə seçimi yenidən yaza bilərik:

σ θ1 (T ∞ θ2S) = (σ θ1 T) ∞ θ2S
	σ AGE = 18 (EMP ∞ e.DEPT_ID = d.DEPT_ID DEPT) = (σ AGE = 23 EMP) ∞ e.DEPT_ID = d.DEPT_ID DEPT

 

Daha az qeyd ilə masalara qoşulmaq həmişə səmərəlidir. Əvvəlcə SEÇİM əməliyyatının yerinə yetirilməsi əlaqədə birləşdiriləcək qeydlərin sayını azaldacaq və nəticədə performansı artıracaqdır. Bu yuxarıdakı qaydanın nəticəsidir.

  • Θ1 şərtində yalnız T və θ2 sütunlarında yalnız S və θ sütunlarında hər iki cədvəlin sütunları olduqda, aşağıdakı kimi ekvivalentlik qaydasına sahib ola bilərik.

σ θ1 AND θ2 (T ∞ θ S) = (σ θ1 T) ∞ θ (σ θ2S)
	σ AGE=23 AND DEPT_NAME = ‘DESIGN’ (EMP ∞ e.DEPT_ID = d.DEPT_ID DEPT) = (σ AGE=23 EMP) ∞ e.DEPT_ID = d.DEPT_ID (σ DEPT_NAME = ‘DESIGN’ DEPT)

Theta üzərində paylayıcı proyeksiya buyurun

Seçim əməliyyatı kimi, proyeksiya əməliyyatı da paylayıcıdır.
CT və CS müvafiq olaraq T və S sütunları olsun. Sonra teta birləşdikdən sonra T və S sütunlarının seçilməsi ayrı cədvəllərin sütunlarının seçilməsinə və sonra birləşmələrinə bərabərdir.

∏ CT U CS (T ∞ θ S) = ∏ CT (T) ∞ θ∏ CS (S)
∏ EMP_ID, EMP_NAME, DEPT_ID, DEPT_NAME (EMP∞ DEPT_ID DEPT) = ∏ EMP_ID, EMP_NAME (EMP) ∞ DEPT_ID ∏ DEPT_ID, DEPT_NAME (DEPT)

  • CT və CS müvafiq olaraq T və S sütunları olsun və son nəticədə seçilsin. CT1 və CS2 sırasıyla T və S sütunları olsun və teta birləşməsində istifadə edilsin, lakin CT və CS-də deyil. Sonra teta birləşdikdən sonra T və S sütunlarının seçilməsi ayrı cədvəllərin sütunlarının seçilməsinə və sonra birləşmələrinə bərabərdir.

∏ CT U CS (T ∞ θ S) = ∏ CT U CS ((∏ CT U CT1 T) ∞ θ (∏ CS U CS1 T))
∏ EMP_ID, EMP_NAME, DEPT_ID, DEPT_NAME (EMP ∞ θ DEPT) = ∏ EMP_ID, EMP_NAME, DEPT_ID, DEPT_NAME ((∏EMP_ID, EMP_NAME, SALARY EMP) ∞ θ (∏DEPT_ID, DEPT_NAME, NUM_PROJ DEPT))
SELECT EMP_ID, EMP_NAME, DEPT_ID, DEPT_NAME
FROM ((SELECT * FROM EMP e, DEPT d
		WHERE e.DEPT_ID = d.DEPT_ID AND SALARY >=30000 AND NUM_PROJ>10));

Bərabərdir:
SELECT EMP_ID, EMP_NAME, DEPT_ID, DEPT_NAME
FROM (
	(SELECT EMP_ID, EMP_NAME, SALARY, DEPT_ID FROM EMP) e,
	(SELECT DEPT_ID, DEPT_NAME, NUM_PROJ FROM DEPT) d
WHERE e.DEPT_ID = d.DEPT_ID AND SALARY >=30000 AND NUM_PROJ>10) ;

Kommutativ Dəst Əməliyyatı

Bu qayda UNION və INTERSECTION kimi set operatorlarında istifadə olunan cədvəllərin bir-birinin əvəzinə istifadə edilə biləcəyini bildirir. yəni;

TUS = SUT
T ∩S = S ∩T

Məsələn:

DESIGN_EMP U TEST_EMP = TEST_EMP U DESIGN_EMP
DESIGN_EMP ∩ TEST_EMP = TEST_EMP ∩ DESIGN_EMP

Assosiativ Set Əməliyyatı

Bu qayda, birdən çox cədvəldə UNION və ya INTERSETION əməliyyatının ardıcıllığı olduqda və sonra hər dəfə iki cədvəlin birləşməsini seçərək əvvəldən sona və ya sondan əvvələ qədər qiymətləndirilə biləcəyini bildirir. yəni;

RU (SUT) = (RUS) UT
R ∩ (S ∩ T) = (R ∩ S) ∩ T

Məsələn:

(DESIGN_EMP U TEST_EMP) U QC_EMP = DESIGN_EMP U (TEST_EMP U QC_EMP)
(DESIGN_EMP ∩ TEST_EMP) ∩ QC_EMP = DESIGN_EMP ∩ (TEST_EMP ∩ QC_EMP)

Set Operatorlar üzərində paylayıcı seçim əməliyyatı

Bu qayda iki hissədən ibarətdir:

  • Birinci qayda, Set operatorunu tətbiq etdikdən sonra qeydləri seçmək, Set operatorunu fərdi seçim əməliyyatında tətbiq etməklə eyni olduğunu söyləyir.

σ θ (TUS) = σ θ (T) U σ θ (S)
σ θ (T ∩ S) = σ θ (T) ∩ σ θ (S)
σ θ (T - S) = σ θ (T) - σ θ (S)

Məsələn:

σ θ (DESIGN_EMP U TEST_EMP) = σ θ (DİZAYN_EMP) U σ θ (TEST_EMP)
θ θ (DESIGN_EMP ∩ TEST_EMP) = σ θ (DESIGN_EMP) ∩ σ θ (TEST_EMP)
σ θ (DESIGN_EMP - TEST_EMP) = σ θ (DESIGN_EMP) - σ θ (TEST_EMP)

  • İkinci qayda, müəyyən edilmiş operatoru tətbiq etdikdən sonra seçim şərtinin birinci masaya tətbiq edilməsinin əvvəlcə seçim masasının birinci masada tətbiq edilməsi və sonra təyin olunmuş operatorun tətbiq edilməsi ilə eyni olduğunu bildirir.

σ θ (TUS) = σ θ (T) ABŞ
σ θ (T ∩ S) = σ θ (T) ∩ S
σ θ (T - S) = σ θ (T) - S

Or

σ θ (DESIGN_EMP U TEST_EMP) = σ θ (DESIGN_EMP) U TEST_EMP
σ θ (DESIGN_EMP ∩ TEST_EMP) = σ θ (DESIGN_EMP) və TEST_EMP
σ θ (DESIGN_EMP - TEST_EMP) = σ θ (DESIGN_EMP) - TEST_EMP

Birlik operatoru üzərində paylayıcı proyeksiya

Bu qayda, UNION operatorunu tətbiq etdikdən sonra sütunların proyeksiyasını fərdi cədvəllərin sütunlarını proqnozlaşdırmaq və sonra UNION operatorunu tətbiq etməklə eynidir.

∏ CT U CS (TUS) = ∏ CT (T) U ∏ CS (S)

Məsələn:

∏ EMP_NAME (DESIGN_EMP U TEST_EMP) = ∏ EMP_NAME (DESIGN_EMP) U ∏ EMP_NAME (TEST_EMP)

Mürəkkəb bir sorğu olduqda, prosessor təhlil edəcək və yuxarıda hansı qaydanın tətbiq edilə biləcəyini görəcək, beləliklə işləmə səmərəli və asanlaşacaqdır. Sorğunu qiymətləndirərkən qeyd edilməli olan bəzi əsas məqamlar bunlardır

  • Sorğuların az sayda qeyd ilə icrası həmişə səmərəlidir. Beləliklə, seçmə əməliyyatını mümkün qədər tez yerinə yetirin, beləliklə sorğudakı qeydlərin sayını azaltsın.
    Məsələn, DESIGN_01 sinifində oxuyan tələbə adlarını alın. Bu iki yolla edilə bilər. Əvvəlcə Tələbə cədvəlindən bütün tələbə adlarını və sinifləri götürün və yalnız DESIGN_01 tələbələri seçmək üçün filtri tətbiq edin. Fərz edək ki, tələbə masasında 100 tələbəmiz var və yalnız 10 nəfər DESIGN_01 sinifindədir. Sonra sorğunun altında əvvəlcə 100 tələbə üçün tələbə adı və CLASS_ID alınacaq, sonra 10 dizayn tələbəsini seçmək üçün filtr tətbiq olunacaq. Bu halda sorğunun qiyməti daha çoxdur. Bundan əlavə, 100 tələbə üçün STD_NAME və CLASS_ID müvəqqəti nəticəsini saxlamaq üçün daha çox yerə ehtiyac var.

∏STD_NAME (σ CLASS_ID = 'DESIGN_01' (∏STD_NAME, CLASS_ID (STUDENT)))

İkinci metod DESIGN_01 sinifində oxuyan şagirdlərin süzülməsidir. Sonra bu qeydlər siyahısından tələbə adlarını seçin. Burada əvvəlcə DESIGN_01 tələbəni filtrləyir. Bu səbəbdən yalnız 10 tələbə qeydini seçir. Daha sonra yalnız tələb olunan sütunu - STD_NAME seçir. İlk addımda qeydlərin sayını azaltdığına görə bu daha səmərəli bir üsuldur.

∏STD_NAME (σ CLASS_ID = 'DESIGN_01' (TƏLƏBƏ))

  • Fərqli birləşmə ilə bir sorğuda iştirak edən bir çox cədvəl olduqda, sorğunu fərqli işarələrə böldükdən sonra sorğunu bir ardıcıllıqla yerinə yetirmək daha yaxşıdır. Bu vəziyyətdə 12 qaydadan yuxarı tətbiq edə bilərik.
    Fərz edək ki, DİZAYN şöbəsində işləyən və 23 yaşı olan işçilərin təfərrüatlarını əldə etməliyik. Sorğu aşağıdakı kimi yazıla bilər:

σ YAŞ = 23 VƏ DEPT_NAME = 'DİZAYN' (EMP ∞ e.DEPT_ID = d.DEPT_ID DEPT)

Lakin sonda tələb olunan qeydləri seçmək sona qədər çox sayda məlumata sahib olacaqdır. Buna görə əvvəlcə hər cədvəldəki qeydlərin sayını süzgəcdən keçirtmək daha yaxşıdır, sonra qoşulma tətbiq etmək daha yaxşıdır. Buna görə ilk vəzifə EMP qeydlərini süzmək və sonra DEPT qeydlərini süzmək, sonra onlara qoşulmaqdır. Bu hərəkətlər ardıcıllıqla həyata keçiriləcəkdir.

 (σ YAŞ = 23 EMP) ∞ e.DEPT_ID = d.DEPT_ID (σ DEPT_NAME = 'DESIGN' DEPT)

  • Nəticədə yalnız bir neçə sütun dəstinin göstərilməsi lazım olduqda proyeksiya əməliyyatını mümkün qədər tez itələyin. Bu seçim əməliyyatını itələməyə bənzəyir. Sorğunun əvvəlində seçim və proyeksiyaya sahib olmaq müvəqqəti cədvəllərdəki lazımsız qeydlərin və xüsusiyyətlərin sayını azaldır. Bu vəzifəni yerinə yetirmək üçün 12 ekvivalentlik qaydasından hər hansı birini istifadə edə bilərik.

∏ EMP_ID, EMP_NAME, DEPT_ID, DEPT_NAME (EMP∞ DEPT_ID DEPT) = ∏ EMP_ID, EMP_NAME (EMP) ∞ DEPT_ID ∏ DEPT_ID, DEPT_NAME (DEPT)

  • İkidən çox cədvələ qoşularkən birləşdirmə qaydasını istifadə edə bilərik ki, əvvəlcə daha kiçik cədvələ qoşula bilək, buna görə müvəqqəti cədvəlin ölçüsü kiçikdir.
    Tutaq ki, 10000, 20, 50 qeydləri olan EMP, DEPT və PROJ masalarımız var. Hər işçi üçün EMP_NAME, DEPT_NAME və PROJ_NAME-nı almalı olduğumuzu düşünək. Sonra sorğu belə olardı:

EMP ∞DEPT_ID DEPT ∞ PROJ_ID PROJASI

Burada başdan sona və ya sondan əvvələ qiymətləndirməyə başlaya bilərik. Ancaq başlanğıcdan başlayaraq çox böyük bir cədvəl var, EMP. Beləliklə yaradılan vasitəçi müvəqqəti cədvələ qoşulma qeydlərini tutmaq üçün geniş yerə ehtiyac olacaqdır. Buna görə sondan əvvələ qədər qiymətləndirmək daha yaxşıdır. Bu, qiymətləndirmək üçün birləşmə qaydasından istifadə edir.

(EMP ∞DEPT_ID DEPT) ∞ PROJ_ID PROJESİ

EMP EDEPT_ID (DEPT, PROJ_ID PROJ)

 

Translate »