Başlanğıc Səviyyəsi üçün Müraciət edən SQL Developerlər üçün mümkün Müsahibə Sualları
Tihomir Babic
Tihomir Xorvatiya – Zaqrebdən olan maliyyə və data analitiklikdən databaza sahəsinə keşmiş dizaynerdir. Onun maliyyə xidmətləri sahəsində olduqca geniş təcrübəsi var və bu da ona data sahəsinə olan marağını maliyyə biliyi ilə birləşdirməyə icazə verir. Dataya yönəlməmişdən əvvəl o bir musiqi qrupunda gitara çalır və müğənnilik edirdi. Bundan əlavə LGBT-ni dəstəkləyən CroL.hr adlı xəbər saytı üçün məqalə yazır və yaxın zamanlarda ilk romanını yazmağı planlayır.
Heç indiyə kimi SQL üçün başlanğıc level bir vakansiya üçün müsahibədə iştirak etmisiniz? Bu pozisyaya baş vurmağı düşünürsüz? Bu məqalə sizə SQL üçün nəzərdə tutlmuş vakansiyaların müsahibələrində verilmə ehtimalı yüksək olan suallar haqqında məlumat verəcək.
Çox güman ki, SQL və prqramlaşdırma ilə qısa tanışlıqdan sonra növbəti mərhələnin nə olduğunu düşünürsüz, bəlkə də heç bu fikirdə deyilsiz! Bilirsiz ki öyrəndiklərinizi praktiakda istifadə etməsəniz bir müddət sonra artıq onları unutmağa başlayacaqsınız. Təbiki öyrəndiklərinizi yadda saxlanmağın ən yaxşı yolu odur ki tez zamanda SQL developer olaraq işləməyə başlamaqdır. Amma ola bilsin ki, müsahibədə sizi nə tip sualların gözlədiyini bilmirisiniz və buna görə də bir çox işə müraciət etmirsiniz. Düzdü təkcə sizə veriləcək sualları bilməyin sizə o qədər də böyük faydası yoxdur deməli sizə lazım olan şey cavabları bilməkdir. Mən sizə başlanğıc səviyyə SQL developer vakansiyası üçün verilə biləcək sualları göstərəcəm və ən əsası da o suallara necə cavab verməli olduğunuzu izah edəcəm.
Gəlin sual və cavablara baxmağa başlayaq!
Sual 1: Əlaqəli Data Model nədir? Bir neçə məntiqi data modelləri izah edin.
Əlaqəli Data Model
Əlaqəli data model ən çox istifadə edilən data model növüdür. 1969-cu ildə Edgar F. Codd tərəfindən kəşf edilib. Əlaqəli data modeli əlaqələrin riyazi konsepsiyasına arxalanır. Əlaqəli databazanın istifadə edilməsinin əsas məqsədi məlumatların uyğunsuz şəkildə artmasının qarşısını almaq, məlumatların bütövlüyünü təmin etmək və məlumat sorğularının sürətlə cavablandırılmasını təmin etməkdir.
Databaza anlayışına əsasən əlaqəli databaza modeli datanın cədvəldə əlaqəli şəkildə toplanması kimi qəbul edilir. Və təbiki hər bir cədvəlin öz dəyəri olur, ümumiyyətlə isə hər bir cədvəlin 3 əsas komponenti var – sətirlər, sütunlar və dəyər.
Sütunlar başqa adla xüsusiyyətlər adlanır, əsas məzmun ondadır ki bu adlandırmalar datanı hər hansı bir xüsusiyyətə görə bölüşdürür. Onu da qetd etmək lazımdır ki hər bir sütundan sadəcə 1 ədəd ola bilər yəni eyni adda iki sütunun qurulmasına cədvəl icazə vermir.
Hər bir sətir isə hər hansı bir xüsusiyyətin sadəcə başvermə halıdır. Buna görə də sətirlər başqa adla qeydlər adlanır.
Dəyər isə sütun və sətirin kəsişməsindən əmələ gəlir.
Şəbəkə modeli
Şəbəkə modeli də birbaşqa məhşur modeldir. Bu model Charles Bachman tərəfindən 1969-cu ildə iyerarxik data modelinin inkişaf etdirilməsi ilə ərsəyə gəlib. Şəbəkə modeli obyektin növünü gövdə və əlaqə növlərini isə qövslər şəklində göstərən qrafiklərlə göstərilir.
İyerarxik Data modeli
Əlaqə modelinə oxşasa da bu modeldə ağac formasında olan görünüşü qrafiklər əvəz edir. Əlaqəli modeldə olduğu kimi burda da oyektin növü gövdələrlə göstərilsə də, əlaqələr “sahiblər-üzvlər” arasındakı əlaqə şəklində göstərir.
Obyekt-Əlaqəli databaza
Bu model əlaqəli modelə oxşayır və yaradılma səbəbi də bilavasitə obyekt yönümlü proqramlaşdırma dilləri - Java, C++, Visual Basic, .Net, və C# ilə bağlıdır. Bu model datanı müxtəlif data növlərinə aid olan və müxtlif methodlarla toplanmış obyektlər toplusu olaraq görür. Hər bir obyektin öz sinifi var. Hər bir sinif arasında vərəsəlik və məcmu əlaqəsi qurulmuşdur.
Bunlardan başqa sənəd, ulduz sxemi, əlaqələndirici, XML databazaları və digər növlərdə data modelləri var. Amma təbiki sizin onların hamısını bilməyə ehtiyacınız yoxdur. Əlaqəli databaza modeli ən çox istifadə edilən modeldir və bu model əlaqəli datbaza ilə işləyən SQL developerlərin işinə də rahatlıqla uyğunlaşdırıla bilir. Bir SQL developerin müsahibə üçün yuxarıda sayılan 4 data modeli bilməsi kifayətdir.
Sual 2: ƏDİS nədir?
DİS – “Databazanın İdarə edilməsi Sistemidir”. Bu tip proqram təminatı databaza ilə istifadəçi arasında əlaqəni yaradır. DİS databazanı istifadə edən şəxslərin verdikləri təlimatlar əsasında işləyir. Bu proqram təminatının vasitəsi ilə datanı bazaya daxil etmək, toplamaq, və ya sorğu əsasında çıxarmaq olur. DİS-də dediyimiz məntiqə uyğun olaraq ƏDİS - “Əlaqəli Databazanın İdarə edilməsi Sistemidir” və xüsusi olaraq əlaqəli databaza ilə işləmək üçün yaradılmış DİS-dir. Əlaqəli databazanın məntiqinə uyğun olaraq ƏDİS datanı sütun və sətirlərdən ibarət cədvəl formasında saxlayır. Ən məhşur ƏDİS-lər Microsoft SQL Server, Oracle Database, MySQL, və IBM DB2-dir.
Sual 3: KƏD nədir və hansı komponentləri var?
SQL proqramçısı, xüsusi ilə də başlanğıc səviyyəsində olanlar, müsahibəsində yaxşı nəticə göstərmək üçün KƏD haqqında məlumatlı olmalıdır. KƏD – komponentlərararası əlaqə diaqramıdır və bu databazadakı qurumlar arasındakı əlaqələri göstərir. Həmçinin bu diaqramlar databazanın dizaynı üçün də geniş istifadə edilir. QƏD-in 3 əsas komponenti var:
- Komponent
- Əlaqə
- Xüsusiyyət
Komponent
Geniş izahı ilə baxsaq komponent haqqında data toplanıla bilən hər hansı birşey ola bilər. Bu sizin haqqında data toplamaq istədiyiniz biznes prosesinə daxil olan hər hansı bir obyekt və ya konsepsiya ola bilər. Məsələn, şirkətin işçiləri var, və hər bir işçinin öz şəxsi idetifikasiya nömrəsi, işlədiyi departamenti və istehsal etdiyi müəyyən məhsul var. Bu bir biznes prosesidir və bu nümunədə işçi, departament, və məhsul komponentdir. Hər bir komponentin öz xüsusiyyətləri var. Müxtəlif komponentlər birlikdə komponent dəstlərini əmələ gətirir. Komponent dəstləri oxşar xüsusiyyətlər daşıyan müxtəlif komponentlərin birləşməsi kimi qəbul edilə bilər.
Əlaqə
Əlaqə hər hansı bir komponentin digər komponent və ya komponentlərlə necə əlaqələndiyini və birləşdiyini göstərir. Yuxarıda göstərilən nümunədəki işçi və identifikasiya nömrəsi komponentdir. Hər bir işçinin yalnız bir identifikasiya nömrəsi ola bilər və də əksinə - hər bir identifikasiya nömrəsi yalnız bir şəxsə verilə bilər. Hər bir identifikasiya nömrəsi unikaldır, buna görə də bu birinbirə əlaqəsi adlanır. Belə əlaqələrə databazalarda elə də çox rast gəlinmir. Əgər bir identifikasiya nömrəsi bir işçiyə verilibsə və ya əksinə, onda identifikasiya nömrələri üçün əlavə komponent yaratmağa ehtiyac yoxdur. Bu hər bir işçinin xüsusiyyəti olaraq əlavə edilə bilər. Digər bir nümunə isə işçi və departament nümunəsidir. Onlar arasındakı əlaqə isə belədir – hər bir işçi yalnız bir departamentdə işləyə bilər amma bir departamentdə bir və daha çox işçi ola bilər. İşçilər və məhsullar arasındakı əlaqə də belədir – bir işçi birdən çox məhsul istehsal edə bilər və ya bir məhsul birdən çox insan tərəfindən hazırlana bilər. Bu cür əlaqə çoxunçoxa əlaqəsi adlanır.
Xüsusiyyət
Xüsusiyyət hər hansı bir komponentin və ya əlaqənin xüsusi bir dəyərlə göstərilmiş xassəsidir. Bir qrup xüsusiyyət birlikdə bir komponenti və ya əlaqəni izah edir. Məsələn əgər işçiləri komponent olaraq qəbul etsək, onlar ad, soyad, doğum tarixi və bu cür digər xüsusiyyətlərlə izah eiləcəklər. Bir departamentin xüsusiyyətləri – departamantin adı, departamentin başçısı, işçilərinin sayı ola bilər. Bir məhsul komponent kimi qəbul edilirsə onu izah edən xüsusiyyətlər bunlar ola bilər: identifikasiya kodu, məhsulun adı, məhsulun rəngi, məhsulun qiyməti və s.
Sual 4: Databazanın normallaşdırılması nə deməkdir? Normal formalar deyiləndə nə nəzərdə tutulur? İzah edin.
Normallaşdırma datanın əlaqəli databazada uyöunsuzluqların aradan qaldırılması və datanın əlaqəliliyinin artırılmasl üçün datanın strukturlaşdırılması prosesidir. Əsas məqsəd efektiv, etibarlı və çevik databaza yaratmaqdır. Normallaşdırma aşağıda qeyd edilən qaydalara əsasasında həyata keçirilir. Databaza addətən 3NF qaydasına uyğun gələndə normallaşdırılmış qəbul edilir.
- Birinci Normal Form (1NF)
- İkinci Normal Form (1NF)
- Üçüncü Normal Form (1NF)
Birinci Normal Form (1NF)
1NF-in tələbi odur ki hər bir xüsusiyyətin (Cədvəlin sütünlarının) yalnız bir və atomik dəyəri olsun. Belə qəbul edilir ki 1NF-in əsas məqsədi eyni dəyərə sahib bir neçə datasetlərin olmadığına əmin olmaqdı.
İkinci Normal Form (1NF)
Datanın 2NF-də olması üçün ilk olaraq 1NF-də olması tələb olunur. 2NF tələb edir ki xüsusiyyət cədvəldəki yalnız bir əsas açara bağlı olsun. Əsas açar hər bir sətri izah edən əsas və yeganə xüsusiyyət və ya xüsusiyyətlər toplusudur. Əsas məzmun burdadır ki hər bir əsas açar yalnız bir sətirə uyğun gələ bilər.
Üçüncü Normal Form (1NF)
3NF, əlbəttə ki, verilənlər bazasının 1NF və 2NF-də olmasını tələb edir. Əlavə oalraq, ötürücü asılılığa yol verilmir, yəni əsas açar olmayan bütün atributlar tam müstəqil olması tələb olunur. Yəni əsas açarla bağlı olan hər hansı bir atribut eyni zamanda başqa bir atributdan asılı ola bilməz.
Yuxarıda qeyd olunan formlardan əlavə Boyce-Codd'un normal forması, dördüncü normal forması, beşinci normal forması və digər bəzi əlavə formaları olsa da, ilk üç normal formanı bilmək başlanğıc səviyyədə olan SQL müsahibəsi üçün kifayətdir.
Sual 5: Atribut məhdudiyyəti nədir?
Atribut məhdudiyyəti müəyyən atributlara sahib olan məlumatın sistemə daxil olmasını məhdudlaşdıran qaydadır. Bu funksiya databazadakı məlumatların bütövlüyünü təmin etmək üçün tətbiq edilir. Ən məhşur 5 atribut məhdudiyyəti aşağıdakılardır:
- NOT NULL – atributun NULL dəyərinin olmamasını təmin edir
- CHECK – əgər atributdan hər hansı bir şərti ödəməsi tələb olunursa, bu funksiya istifadə edilir
- UNIQUE – müəyyən bir atriutun dəyərinin yalnız bir dəfə daxil olması tələb olunursa istifadə edilir
- PRIMARY KEY – atributun əsas açar kimi təyin edilməsini, UNIQUE və NOT NULL olmasını təmin edir
- FOREIGN KEY – cədvəllər arasındakı əlaqəni göstərmək üçün istifadə edilir. Məsələn, cədvəldəki hər hansı bir atribut digər cədvəldəki bir atributa əsaslanır.
Sual 6: SQL -in əlavə dilləri və əsas açar sözləri hansılardır?
SQL 3 əsas qrupa və ya əlavə dilə bölünür
- Məlumatların Tərif Dili (MTD)
- Məlumat İdarəetmə Dili (MİD)
- Məlumat Manipulyasiya Dili (MMD)
Məlumatların Tərif Dili (MTD)
Bu əlavə dil verilənlər bazasındakı müəyyən bir obyekti yaratmaq, silmək və ya dəyişdirmək üçün istifadə olunur. Bu dildə üç əsas söz var:
- CREATE – databazada obyekt yaradır (Məsələn, cədvəl)
- DROP – databazadakı hər hansı obyekti silir
- ALTER – artıq databazada var olan hər hansı bir obyekti dəyişir
Məlumat İdarəetmə Dili (MİD)
Bu dil datbazadakı hər hansı məlumatın avtorizasiyasının təmin edilməsi, rolun yaradılmasında, və ya idarı etmə hüququnun verilməsində istifadə olunur. İki əsas açar sözdən ibarətdir:
- GRANT –müəyyən databaza istifadəçisinə verilənlər bazasından və ya müəyyən verilənlər bazası obyektlərindən istifadə etməyə icazə verir
- REVOKE – müəyyən databaza istifadəçisinə verilən icazəni ləğv edir və ya azaldır
Məlumat Manipulyasiya Dili (MMD)
Bu SQL əlavəsi, məlumatların manipulasiya edilməsi, yəni məlumatların əlavə edilməsi, dəyişdirilməsi və ya silinməsi üçün istifadə olunan açar sözlərdən ibarətdir. Əsas açar sözlər bunlardır:
SELECT – məlumatın bazadan tələb olunmasl üçün istifadə edilir və çox vaxt digər açar sözlərlə birlikdə istifadə edilir.
-
- FROM – datanın hansı cədvəldən götürülməli olduğunu göstərir
- WHERE – müəyyən bir atributa sahib olan dataların tələb olunması üçün istifadə edilir
- GROUP BY – tələb olunan datanın müəyyən bir atribut əsasında qruplaşdırılmasını tələb edir
- HAVING –GROUP BY açar sözü ilə birlikdə istifadə edilir və qruplaşdırılacaq məlumatların hansl sətirdən götürüləcəyini göstərir
- ORDER BY – tələb olunan məlumatı müəyyən bir atribut əsasında çeşidləmək üçün istifadə edilir
- INSERT – artıq var olan cədvələ sətir əlavə etmək üçün istifadə edilir
- UPDATE – artıq var olan sətirdəki məlumatı yeniləmək üçün istifadə edilir
- MERGE – iki və daha artıq cədvəldəki məlumatı birləşdirir
- DELETE – cədvəldən artıq var olan sətirləri silmək üçün istifadə edilir
- TRUNCATE – cədvəldəki bütün məlumatı silmək üçün istifadə edilir
- BEGIN WORK – əməliyyatın başlanğıcını təyin etmək üçün istifadə edilir
- COMMIT – əməliyyatın bitməsini təyin etmək üçün istifadə edilir
- ROLLBACK – son COMMIT və ya ROLLBACK -dən sonra edilmiş bütün dəyişiklikləri ləğv etmək üçün istifadə edilir.
P.S. Bəzi sənədlərdə TRUNCATEMəlumat Manipulyasiya Dili (MMD) əvəzinə Məlumatların Tərif Dili (MTD) açar sözüdür.
Sual 7: TRUNCATE, DELETE, və DROP arasındakı fərqi izah edin
Artıq sual 6-dan bu məsələ ilə tanışsınız deyə yəqin ki bu suala cavab vermək sizin üçün daha asandır. Bildiyiniz kimi TRUNCATE – cədvəldəki bütün məlumatı silir, DELETE – dən istifadə etsəniz (where açar sözü ilə birlikdə) bəzi sətirlər silinəcək və ya bütün sətirləri seçib TRUNCATE-dəki kimi bütün sətirləri silə bilərsiniz. Əsas fərq odur ki, silinən hər bir sətir RDBMS tərəfindən qeyd olunmaqla silinən sətri sıralama ilə silinir. Böyük həcimdə məlumatı silməyə çalışırsınızsa, DELETE-dən istifadə etmək yerinə TRUNCATE-dən istifadə etsəniz daha yaxşı olar çünki bu zaman bir hərəkət kimi qeydə alınır və daha sürətlə həyata keçirilir. Ayrıca bunu da bilməyiniz yaxşı olar ki əgər bir cədvəldə xarici açar varsa TRUNCATE istifadə edilə bilməyəcək. Əgər bu halda TRUNCATE-dən istifadə etsəniz cədvəl kilidlənəcək, ona görə də onu əlaqəli cədvəllərdə istifadə etməyiniz məsləhət görülmür.
Bəs DROP funkisyası nə edir? Məntiqi olaraq o da hansısa məlumatı silir – amma xüsusi olaraq nəyi? Əsas fərq ondadır ki TRUNCATE və DELETE cədvəldəki müəyyən məlumatı silir amma cədvəlin özünü silmir. Amma DROP-dan istifadə edərək bütün cədvəli silə bilərsiniz. Təbiidir ki bu zaman cədvəldəki bütün məlumatlar da silinir. Amma bu zaman siz indeksləri, tətikləyiciləri, məhdudiyyətləri və icazələri də siləcəksiniz.
Sual 8: SQL-də birləşmə növləri hansılardır?
Əgər sizə 2 və daha çox cədvəldən eyni anda məlumat tələb etmək lazımdırsa onda birləşmələrdən istifadə etməli olursunuz. Bunun üçün siz cədvəlləri hər hansı bir əsasda birləşdirməlisiniz və bunun üçün də SQL-in 5 birləşdirmə methodundan birindən istifadə etməlisiniz.
- Xaç formalı birləşmə
- Daxili birləşmə
- Sol xarici birləşmə
- Sağ xarici birləşmə
- Tam xarici birləşmə
Xaç formalı birləşmə
Bu birləşmə formasında hər bir cədvəldəki sətirlər digər bir cədvəldəki hər hansı bir sətirlə birləşir. Bu birləşmə sətirləri çoxaldır ona görə də əgər böyük həcimli məlumat bazası ilə işləyirsəniz bu forma məsləhət görülmür. Bu birləşmə növünə Cartesian məhsulu da deyilir.
Daxili birləşmə
Bu birləşmədə birinci cədvəldə olan sətirlər əsasında verilmış şərtlərə əsaslanan məlumatları ikinci cədvəldən tələb edir.
Sol xarici birləşmə
Bu tip birləşmədən istifadə edərkən, birinci (və ya sol) cədvəldən bütün sətirləri və ikinci (və ya sağ) cədvəldən uyğun sətirləri birləşdirirsiniz. Əgər ikinci cədvəldə uyğun bir sıra tapılmasa onda NULL dəyər yaranacaq.
Sağ xarici birləşmə
Bu birləşmənin iş prinsipi sol xarici birləşmə ilə eynidir. İkinci (və ya sağ) cədvəldən bütün sətirləri və birinci (və ya sol) cədvəldən uyğun cərgələri birləşdirəcək. Birinci cədvəldə heç bir uyğun sətir tapılmasa yenə də NULL dəyər veriləcək.
Tam xarici birləşmə
Bu birləşmədən istifadə birinci və ikinci cədvəldəki bütün sətirlərin toplanması ilə nəticələnəcəkdir. Əgər həm birinci, həm də ikinci cədvəllərdən bir-birinə uyğun olmayan sətirlər tapılsa, onlar NULL dəyər olaraq göstəriləcəkdir.
Source: https://learnsql.com/blog/sql-developer-entry-level-interview-questions/