2
Ön Söz
bağlanması, SQL məhdudiyyətləri (primary key, foreign key, not null,
check, unique, default), Oracle verilənlər bazasının tipləri, cədvəllərin
birləşmə operatorları (left join, right join, full join, natural join və s.),
cədvəllərin çoxluq operatorları (union, minus, intersect), aqreqat
funksiyaları (min, max, avg, count, sum və s.), tarix funksiyaları, müqayisə
və şərt operatorları (like, in, not in, exist, not exist, switch-case və s.),
qruplaşma və sıralama operatorları (group by, having, order by), sorğu
və korrelyasiya, mürəkkəb sorğu və s. Oracle SQL və verilənlər bazasının
modelləşdirilməsinə aid çeşidli məsələlər verilmişdir.
Kitab əsasən Oracle verilənlər bazası ilə SQL dilini öyrənənləri
nəzərdə tutmuşdur. Buna baxmayaraq əlaqəli verilənlər bazasının
modelləşdirilməsi və dizaynı müxtəlif növ əlaqəli verilənlər bazasının
idarəetmə sistemlərindən (RDBMS), məsələn, Oracle, PostgreSQL,
Microsoft SQL Server, MySQL və s. asılı olmaması və SQL dilinin demək
olar ki, "universal" baza dili olması kitabdakı məsələləri asanlıqla digər
vendorların RDBMS-lərinə keçirməyə imkan verir. Kitabda müxtəlif
fəaliyyətlərlə məşğul olan şirkət və təşkilatların təqdim edilmiş
məlumatlarının analizindən başlamış, ER diaqramının qurulması, SQL
DDL skriptinin yaradılması və verilənlər bazası üzərində müştəri üçün
mühüm olan hesabat və sorğuların hazırlanmasına kimi məsələlər və
onların alternativ həlləri təqdim edilmişdir.
Kitabdakı məsələləri sərbəst işləməyə çalışın. Həllərinizi Oracle Book
Manager hesabınızla test edin. Daha sonra öz həllərinizi kitabda və
CD-də sizə təqdim edilən həllərlə müqayisəli təhlil edin. Bu planla qısa
müddətdə SQL və verilənlər bazasının modelləşdirilməsi biliyinizi real
təcrübəyə çevirmiş olacaqsınız.
Hər birinizə uğurlar arzulayıram!
Dərin hörmətlə,
Seymur Fərziyev
3
Giriş
Giriş
Əlaqəli Verilənlər Bazası
Kitabda verilən bütün məsələlər məhz əlaqəli verilənlər bazasına (ƏVB)
aiddir. Bunun haqqında geniş bilgilər əldə etmək üçün uyğun nəzəri
ədəbiyyatlara istinad etmək lazımdır. Kitab praktik məsələləri əhatə
etdiyindən nəzəri məlumatlar ümumiləşdirilmiş halda təqdim edilir.
Əlaqəli verilənlər bazası (ƏVB) kompüter sistemlərində elektron
məlumatların idarə olunmasına xidmət edir. ƏVB cədvəl quruluşunda
olmaqla bir-biri ilə məntiqli əlaqələrdən yaranmış məlumat anbarıdır.
Məlumatların bu formada idarə olunması ilk dəfə 1970-ci ildə Edqar Kod
tərəfindən təklif olunmuşdur.
ƏVB çoxlu sayda torşəkilli (sütun və sətirlərdən ibarət) cədvəllərin
əlaqlənmiş toplusu kimi təsvir edilə bilər. Cədvəlin sütunları bu cədvəldə
saxlanılacaq məlumatın strukturunu, sətirlər isə məlumatın yazısını
müəyyən edir. Məsələn, əgər biz kitab haqqında məlumatları bir
cədvəldə saxlamaq istəyiriksə, o zaman müəyyənləşdirməliyik ki, kitab
haqqında hansı məlumatlar bizə lazımdır. Birbaşa və dolayı yolla kitab
haqqında müxtəlif məlumatlar mövcud ola bilər. Məsələn, kitabın ISBN
kodu, kitabın adı, müəllifin adı, yazılma ili, nəşr ili, dərc ili, nəşriyyatın adı,
nəşriyyatın loqotipi, ünvanı və s. Göründüyü kimi məlumatı təyin edən
çoxlu sayda meta məlumat saymaq olar. Məlumatı təyin edən məlumata
meta məlumat deyilir. Fərz edək ki, bizə kitab haqqında verilən sahələrin
(meta məlumat) hamısı deyil, yalnız ilk üçü lazımdır. Bu halda kitab
haqqında saxlayacağımız məlumatların cədvəlini aşağıdakı kimi təyin edə
bilərik:
CREATE TABLE Kitab
(
isbn VARCHAR2(20),
kitabin_adi VARCHAR2(100),
muellif VARCHAR2(50)
);
Tövsiyə olunur ki, proqram kodunda identifikatorları (cədvəl adı, sütün
adı və s.) ingilis dilində olan sözlərdən istifadə edərək yazasınız. Bu nə
4
Giriş
SQL sintaksisinin tələbidir, nə də başqa bir dilin. Məsələn, baxdığımız
nümunəni yaxşı olar ki, aşağıdakı kimi yazaq:
CREATE TABLE Book
(
isbn VARCHAR2(20),
title VARCHAR2(100),
author VARCHAR2(50)
);
Bununla biz cədvəllərimizdən birini yaratmış olarıq. Əgər bizə müəlliflər
haqqında məlumatları da saxlamaq lazım olarsa, onda əvvəlcə məlumatları
saxlayacağımız yeri müəyyənləşdirməliyik. Fikirləşsəniz ki, müəlliflər
haqqında olan məlumatları, məsələn, müəllifin email ünvanı, telefon
nömrəsi, yaşayış ünvanı, təvəllüdü və s. 'Kitab' cədvəlində saxlayaq, bu
düzgün yanaşma olmayacaq. Əslində müəlliflə bağlı olan məlumatları
'Kitab' cədvəlində saxlaya bilərik. Hətta 'Kitab' cədvəlinə əlavə sütunlar
artırmaqla müəllifin övladlarının adını da 'Kitab' cədvəlində saxlamaq
olar. Amma bu minvalla biz cənab Edqar Kodun əlaqəli verilənlər
bazası üçün təklif etdiyi prinsipləri pozmuş olacağıq və nəticədə əldə
edilən "verilənlər bazası" xaotik bir məlumat anbarına çevrilər. Bizim
məqsədimiz isə məntiqli strukturlu əlaqəli verilənlər bazası yaratmaqdır.
Müəllif haqqında detallı məlumatlar verilənlərin strukturu prinsipinə
görə ayrı bir cədvəldə saxlanılmalı və 'Kitab' cədvəlinin münasib sütunu
ilə bağlanmalıdır. Oxşar izahlı nümunə üçün "Təlim Mərkəzi" nümunəsinə
baxın.
Oracle, PostgreSQL, Microsoft SQL Server, MySQL və ya digər bir əlaqəli
verilənlər bazası ilə işləmək mahiyyətcə oxşardır. Çünki əlaqəli verilənlər
bazasının prinsipləri bir qədər əvvəl ümumi müzakirə etdiyimiz prinsipə
əsaslanır. Fərqlər yalnız müxtəlif əlaqəli verilənlər bazasının idarəetmə
sistemləri (RDBMS) üçün SQL dilinin bir qədər fərqli sintaksislər təklif
etməsidir. Məsələn, Oracle verilənlər bazası üçün yazılan SQL sorğuları
birə-bir MySQL-də işlətmək mümkün deyil və əksinə. SQL sorğu dili
kobud ifadə edilsə, 90% bütün verilənlər bazası üçün eyni sintaksis təklif
edir. Yerdə qalan 10% imkanlar isə RDBMS-lərə görə dəyişir.
Əlaqəli verilənlər bazası üzərində CRUD (Create, Read, Update, Delete)
əməliyyatları geniş yayılmışdır. Bu əməliyyatlar məlumatın verilənlər
bazasına yazılması (INSERT), verilənlər bazasından oxunması (SELECT),
Dostları ilə paylaş: |