SET column = expression, ...
[ FROM table-list ]
[ WHERE search-condition ]
Masalan, hamma buyurtmachilar bahosini 200 ga o’zgartirish mumkin:
UPDATE Customers SET Rating = 200;
Ma’lum satrlarni o’zgartirish uchun DELETE dagi kabi shartlardan foydalanish kerak. Masalan, Peel (SNum=11) sotuvchining hamma buyurtmachilari uchun bir xil o’zgartirish quyidagicha kiritiladi:
UPDATE Customers SET Rating = 200 WHERE SNum = 11;
SET vergul bilan ajratilgan ixtiyoriy sondagi ustunlarga qiymat tayinlashi mumkin. Masalan:
UPDATE Salepeople SET SName ='Gibson', City='Boston', Comm=.10
WHERE SNum = 14;
UPDATE buyrug’ining SET jumlasida ifodalarni ham ishlatish mumkin. Masalan: UPDATE Salepeople SET Comm = Comm * 2;
5. SELECT so’rov operatori
SELECT operatori MB jadvallaridan natijaviy to’plam olish uchun mo’ljallangandir. SELECT operatori yordamida MBga so’rov beriladi va u foydalanuvchiga ma’lumotlarning natijaviy to’plamini qaytaradi. Bu ma’lumotlar jadval shaklida qaytariladi. Bu jadval keyingi SELECT operatori tomonidan yana qayta ishlanishi ham mumkin.
SELECT operatori SQL 92 standartiga ko’ra quyidagi ko’rinishga ega:
SELECT [ALL]
FROM jadval
WHERE izlash sharti
GROUP BY ustunlar
HAVING izlash sharti
ORDER BY tartiblash spetsifikatori
Masalan, OFFICES jadvalidagi hamma yozuvlarni qaytaruvchi sodda so’rov quyidagicha yoziladi. SELECT * FROM OFFICES
Misol: Hamma xizmatchilarning nomlari, ofislari va ishga olish sanalari ro’yxatini hosil qilish.
SELECT NAME, REP_OFFICE, HIRE_DATE FROM SALESREPS
SELECT operatori WHERE sharti berilgan shart asosida kerakli ma’lumotlarni qaytarish uchun xizmat qiladi. Masalan, sotuvlarda haqiqiy hajmi rejadan oshgan ofislarni ko’rsatish kerak.
SELECT CITY, SALES, TARGET FROM OFFICES
WHERE SALES > TARGET
Nomeri 105 ga teng bo’lgan xizmatchi nomi, haqiqiy va rejadagi sotuvlar hajmini ko’rsatish:
SELECT SALES, NAME, QUOTA FROM SALESREPS
WHERE EMPL_NUM = 105
Agar izlash sharti TRUE bo’lsa qator natijaviy to’plamga qo’shiladi, agar izlash sharti FALSE bo’lsa, qator natijaviy to’plamga qo’shilmaydi, agar NULL bo’lsa ham natijaviy to’plamdan chiqariladi. O’z ma’nosiga ko’ra WHARE, kerakli yozuvlarni qoldiruvchi filtr sifatida ishlatiladi.
SQL Server da ma’lumotlar bazalari ximoyasi
SQL Server foydalanuvchilar darajasida ma’lumotlar bazalarini ichki ximoya tizimiga ega. SQL Server va undagi ma’lumotlar bazasiga faqat serverda registratsiyadan o‘tgan, mos xuquqlarga ega foydalanuvchi ulanishi mumkin. Ximoya tizimidan Access 2002 loyihalarni ximoya qilish uchun foydalanish xaqidagi batafsil ma’lumotni SQL Server dokumentatsiyasida topish mumkin.
Access loyihalarida ma’lumotlarni va SQL Serverda saqlanuvchi boshqa ob’уektlarni (jadvallar, tasavvurlar, saqlanuvchi protseduralar va ma’lumotlar sxemalari) ximoya qilish ikki usuli mavjuddir.
-
Tasavvurlar, saqlanuvchi protseduralar va triggerlarni shifrlash mumkin. Shifrlangandan so‘ng tasavvur strukturasini o‘zgartirish mumkin emas. Lekin tasavvurdan manbada ma’lumotlarni tahrirlash uchun ishlatish mumkin. Tasavvurni qanday shifrlash xaqidagi ma’lumotni SQL Server dokumentatsiyasidan olish mumkin. Saqlanuvchi protsedura yoki triggerni shifrlash uchun ularni oldin tahrirlash va maxsus Transact-SQL instruksiyasini yozish kerak, masalan: CREATE PROCEDURE WITH ENCRYPTION.
-
SQL Server Enterprise Manager dasturi yordamida SQL Server ximoya qilish vositalaridan foydalanish mumkin. Bu ximoya vositalari xaqidagi ma’lumotni SQL Server dokumentatsiyasidan olish mumkin.
Agar shifrlangan tasavvur strukturasini keyinchalik o‘zgartish kerak bo‘lishi mumkin bo‘lsa quyidagi maslaxatdan foydalaning. Tasavvurni aniqlovchi SQL instruksiyani matnli faylda saqlab qo‘ying. Ishonchli joyda mustaxkam nusxani saqlab qo‘ying. Tasavvurni shifrlang. Kerak bo‘lsa shifrlangan tasavvuo strukturasini o‘zgartiring:
-
Oldingi shifrlangan tasavvurni o‘chiring.
-
Oldingi tasavvur Bilan bir xil nomdagi yangi tasavvur yarating.
-
Saqlangan matnli fayldagi SQL instruksiyadan almashish buferiga nusxa oling. Uni yangi tasavvur Konstruktorining ning SQL instruksiya kiritish maydoniga joylashtiring.
-
Tasavvur strukturasini o‘zgartiring.
-
O‘zgartirilgan SQL instruksiyani matnli fayldja saqlang. Bu faylni ishonchli joyga joylashtiring.
-
Yangi tasavurni shifrlang.
SQL Server hisob yozuvlarini boshqarish
Access yordamchi ma’lumotlar tizimida aytilishicha loyihada Access ximoya tizimini adminitrlash vazifasini Сервис (Tools) menyusidagi Безопасность базы данных (Database Security) komandasi yordamida bajarishi mumkin. Bu komandaga murojaat qilish mumkin agar, yesli SQL Server Access loyihasi saqlanayotgan kompbyuterda o‘rnatilgan bo‘lsa. Bu vosita yordamida SQL Server da registratsiya qilish uchun hisob yozkvlarini, ma’lumotlar bazalari foydalanuvchilari hisob yozuvlarini va ularning rollarini qo‘shish, o‘chirish va o‘zgartirish mumkin.
SQL Server da registratsiya qilish uchun qo‘llanadigan ikki ximoya tizimi mavjud:
-
SQL Server o‘zining ximoya tizimi. Serverda registratsiyadan o‘tish uchun server foydalanuvchisi nomi va parolini ko‘rsatish kerak.
-
Windows NT bilan Integrlashgan tizimi foydalanuvchilari hisob yozuvlaridan foydalanadi. Bu xolda foydalanuvchi autentifikatsiyasi Windows NT asosida tarmoqda registratsiyadan o‘tishda bajariladi. SQL Server prinimaet uchetnuyu запись Windows NT hisob yozuvini qabul qiladi va qo‘shimcha foydalanuvchi registratsiyasini talab qilmaydi.
SQL Server ichki ximoya tizimidan foydalanish uchun:
-
Bu imkoniyat ko‘zda tutilgani bo‘yicha o‘chirilgan uchun, oldin Вид, Свойства сервера (View, Server Properties) menyu komandasini tanlang va paydo bo‘lgan dialog oynasida Учетная запись системного администратора (SA) (Enable system administrator (SA) user name) byrog‘ini o‘rnating. OK tugmasini bosing.
-
Файл, Подключение (File, Connection) menyu komandasi yordamida Свойства подключения (Data Link Properties) SQL Server bilan ulanish xossalari oynasini oching.
-
Соединение (Connection) qo‘shimcha sahifasida Использовать имя пользователя и пароль (Use a specific username and password) bayrog‘ini o‘rnating.
-
Agar Access 2002 loyihasini ochishda xar gal foydalanuvchi registratsiya parolini kiritishni talab qilish kerak bo‘lsa, Сохранять пароль (Allow saving of password) bayrog‘ini tashlang. Agar serverda qayta registratsiya qilishda parol kiritish talab qilinmasa bu bayroqni o‘rnating.
Bunday ximoya tizimi Bilan Access 2002 loyihasida registratsiyadan o‘tish uchun ishlatiladigan SQL Server hisob yozuvi parolini o‘zgartirishingiz mumkin. Buning uchun menyu komandasi Сервис, Защита, Задать пароль для входa (Tools, Security, Set Login Password) qo‘llanadi. Loyihaga murojaat xukuini yo‘qotmaslik uchun parolni esdan chiqarmang!
Windows NT Bilan integrallashgan SQL Server ximoya tizimidan foydalanish:
-
SQL Server Свойства подключения (Data Link Properties) SQL Server bilan ulanish xossalari oynasini oching.
-
Соединение (Connection) qo‘shimcha sahifasida Использовать интегрированную систему защиты Windows NT (Use Windows NT Integrated Security) qayta ulagichni tanlang.
Bu xolda SQL Serverda registratsiya qilinganda parol talab qilinmaydi, chunki foydalanuvchini Windows NT yoki Windows 2000 tarmog‘ida identifikatsiyasi ta’sir qiladi.
Nazorat savollari
-
SQL tarixi. SQL tili standartlari.
-
SQL tili vazifasi. SQL tili tarkibiy qismlari.
-
SQL tili foydalanuvchilarga qanday imkoniyatlarni yaratishi kerak?
-
SQL tili terminologiyasi.
-
SQL tilida ma’lumotlar bazasi bilan ishlash rejimlari.
-
SQL strukturasi.
-
SQL tilidagi ma’lumotlarni aniqlash operatorlari (DDL)
-
SQL ma’lumotlarni manipulyatsiyalash operatorlari (Data Manipulation Language - DMP)
-
SQL ning maxsus agregat funksiyalari.
-
SQLtilidagi ma’lumotlarni adminstratsiya operatoralri.
6 – MA’RUZA.
MUNOSABATNING NORMAL FORMALARI.
Reja:
1. Munosabatlarni me’yorlash
2. Me’yoriy shakllar
3. Normallashtirish protsedurasi
4. Normal formalar. Ma’lumotlar sxemasini yaratish
Tayanch tushuncha: Me’yorlash, funksional bog’liqlik, to’la funksional bog’liqlik, qisman funksional bog’liqlik, tranzitiv funksional bog’liqlik, formalar, normallashtirish, normal forma.
Munosabatlarni me’yorlash
Ma’lumotlarni o’zgartirishda ro’y beradigan nome’yoriy (anomaliya) holatlarni bartaraf etish uchun ma’lumotlar bazasining tarxi (sxemasi) ma’lumotlari mustaqil bo’lgan munosabatlar asosida qurilgan bo’lishi lozim.
Ushbu masalani hal qilish uchun Kodd munosabatlarni me’yorlash apparatini taklif qilgan. Me’yorlash – munosabatlar va ularning atributlarini tekshirish hamda o’zgartirishga qaratilgan jarayon bo’lib, unda ma’lumotlarni saqlashning nome’yoriyligi bartaraf etiladi. Me’yorlash jarayoni ma’lumotlar tuzilmasini bosqichma-bosqich me’yoriy shakllarga keltirishga qaratiladi. Ma’lumotlarni tashkil etish uchun ushbu me’yoriy shakllarning har biri o’ziga xos, formallashtirilgan talablar jamlanmasini taqdim etadi.
Me’yoriy shakllarning 6 turi mavjud:
-
birinchi me’yoriy shakl (1NF);
-
ikkinchi me’yoriy shakl (2NF);
-
uchinchi me’yoriy shakl (3NF);
-
Boys-Kodd me’yoriy shakli (kuchaytirilgan 3NF, BCNF);
-
to’rtinchi me’yoriy shakl (4NF);
-
beshinchi me’yoriy shakl (5NF).
Me’yoriy shakllar funksional bog’liqlik tushunchasiga asoslangan.
Funksional bog’liqlik – biror munosabatning A va V atributlari orasidagi shunday aloqaki, bunda A ning har bir qiymatiga V ning bitta va faqat bitta qiymati mos keladi.
A atribut diterminant deb nomlanadi. Dinerminantlar tarkibli bo’lishlari ham mumkin, ya’ni ular yakka atributdan emas, balki ikki va undan ortiq atributlardan tashkil topadigan guruhlardan iborat bo’lishlari mumkin.
Funksional bog’liqlikning 3 xili mavjud bo’lib, ular to’la, qisman va tranzitiv (bilvosita) funksional bog’liqliklar deb ataladi.
Тo’la funksional bog’liqlik deb atribut V ning diterminant A atributlari qism-to’plamiga bog’liq bo’lmasligiga aytiladi.
Qisman funksional bog’liqlik deb atribut V ni tarkibli A diterminantning biror-bir qismiga bog’liq bo’lishiga aytiladi.
Тranzitiv funksional bog’liqlik deb shunday funksional bog’liqlikka aytiladiki, unda A, V va S atributlar orasida AV hamda VS ko’rinishdagi bog’liqliklar mavjud va bularga teskari yo’nalishdagi bog’liqliklar esa mavjud bo’lmaydi. Тranzitiv funksional bog’liqlik to’la funksional bog’liqliklarning birlashmasi hisoblanadi.
Qisman va tranzitiv funksional bog’liqliklar nome’yoriy holatlarni keltirib chiqarishadi. Shu nuqtai nazardan, munosabatlarni me’yorlash – bu berilgan munosabatni munosabatlarning shunday to’plamiga o’zgartirishki, unda hosil qilingan munosabatlarning har biri bitta va faqat bitta to’la funksional bog’liqlikka ega bo’lishadi.
Nazariy jihatdan me’yorlash jarayoni universal, ya’ni predmet sohasining barcha atributlarini o’z ichiga olgan munosabatdan boshlanishi kerak. Bu munosabatni ulkan jadval sifatida tasavvur etish mumkin. Bunday jadvaldagi ba’zi ma’lumotlar ko’plab o’rinlarda aynan qaytarilishi ma’lum.
Har bir me’yoriy shakl o’zidan avvalgi me’yoriy shakl talablarini to’la qoniqtiradi hamda ba’zi qo’shimcha talablarni ham bajarilishi lozimligini belgilaydi.
Birinchi me’yoriy shakl (1NF). Agarda munosabatning barcha atributlari bo’linmas qiymatlarga ega bo’lsa, u birinchi me’yoriy shaklda deyiladi. Ushbu talab buzilishiga misol sifatida «Manzil» tipidagi atributni keltirish mumkin. Mazkur atributning qiymatiga mohiyati jihatidan turlicha bo’lgan axborot, ya’ni shahar, viloyat, ko’cha nomlari kiritilishi mumkin. Bu axborotlar birinchi me’yoriy shakl talablariga ko’ra boshqa-boshqa atributlar bilan ifodalanishi zarur.
Bundan tashqari, munosabatlar qaytariladigan guruhlardan iborat bo’lmasligi zarur. Masalan, munosabatda telefon raqami nomli atribut mavjud bo’lsin. Agarda korxonaning telefon raqami bitta emas, ikkita bo’lsa, unda ikkinchi telefon raqami nomli atributni ham kiritishga to’g’ri keladi. Biroq, bu yondashuv muammoni to’laligicha hal qila olmaydi. Aytaylik, uchinchi telefon raqami mavjud bo’lsin. Хo’sh, unda qanday yo’l tutiladi?
Ikkinchi me’yoriy shakl (2NF). Munosabat ikkinchi me’yoriy shaklda bo’lishi uchun unda qisman funksional bog’liqlikka ega atributlar bo’lmasligi zarur, ya’ni birlamchi bo’lmagan har bir atribut tarkibiy kalitga qisman emas, balki to’laligicha bog’liq bo’lishi zarur.
Uchinchi me’yoriy shakl (3NF) tranzitiv bog’liqliklardan xoli bo’lishni talab etadi. Amaliyotda ushbu talab birlamchi bo’lmagan atributlar orasida bog’liqlik bo’lmasligi bilan ifodalanadi.
Boys-Kodd me’yoriy shakli (BCNF) har bir diterminant ehtimoldagi kalit bo’lishini talab etadi.
Тo’rtinchi me’yoriy shakl (4NF) munosabatdagi atributlar orasida ko’p qiymatli bog’liqliklar bo’lmasligini talab etadi. Masalan, o’qituvchi talabalarga turli predmetlar bo’yicha dars beradi. Har bir kursda bir qancha talabalar o’qishi mumkin va har bir talaba bir nechta predmetlar bo’yicha ta’lim olishi mumkin. U holda, «O’quv predmeti» va «Тalaba» atributlari orasida ko’p qiymatli bog’liqlik mavjud bo’ladi va bu bog’liqlik nome’yoriy hodisa yuzaga kelishiga sabab bo’lishi mumkin, ya’ni ma’lumotlar bazasiga yangi talaba kiritilganida, u ta’lim oladigan predmetlar soniga bog’liq holda bir necha yozuvlarni kiritish talab etiladi.
Ushbu munosabatni to’rtinchi me’yoriy shaklga keltirish uchun uni ikki bo’lakka bo’lish va «O’quv predmeti» va «Тalaba» atributlarini boshqa-boshqa munosabatlarga ajratish zarur bo’ladi.
Beshinchi me’yoriy shakl amaliyotda qo’llanilmaydi.
Me’yorlash talablariga rioya qilish muayyan axborot tizimlari uchun ko’pincha samaradorlikni pasayishiga olib keladi. Me’yorlashdan so’ng munosabatlar soni oshadi, mazkur ma’lumotlar bazasiga bo’ladigan so’rovlarni bajarishda ko’plab birlashmalar (JOIN) hosil qilish zarur bo’ladi va tizimning ancha-muncha resurslarini sarf etish talab qilinadi. Ko’pincha, fizik loyihalash darajasiga o’tilganida me’yoriy shakllaridan ortga chekinish, ya’ni «nome’yorlash» (denormalizatsiya) amalga oshiriladi. «Nome’yorlash» jarayoni aniq formallashtirilgan qoidalarga ega emas, bunda amalga oshirilishi lozim bo’lgan masala va predmet sohasining xususiyatlaridan kelib chiqqan holda qaror qabul qilinadi.
Normallashtirish nazariyasi jadval maydonlari orasidagi u yoki bu bog‘liqlikning borligiga asoslanadi. Bunday bog‘liqliklarning ikki turi aniqlangan:
Funksional bog‘liqlik: Berilgan ixtiyoriy vaqtda A maydonning har bir turli qiymatiga mos ravishda albatta B maydonning har bir turli qiymatidan faqat bitta qiymati bo‘lsa, jadvalning B maydoni huddi shu jadvalning A maydoniga funksional bog‘langan deyiladi. Aytib o‘tish kerakki, A va B maydonlar tashkil qiluvchilar bo‘lishi mumkin.
To‘liq funktsional bog‘liqlik: B maydon A tashkil qiluvchiga to‘liq funksional bog‘liq bo‘ladi, agar u A ga funksional bog‘liq bo‘lsa va A maydonning boshqa qitymatlariga bog‘liq bo‘lmasa.
Ko‘p qiymatli bog‘liqlik: A maydon huddi shu jadvalning B maydonini ko‘p qiymatli aniqlaydi, agar A maydonning har bir qiymatiga mos ravishda B maydonning aniqlangan qiymatlari bor bo‘lsa.
Ko‘p funksional bog‘liqlikga misol “O‘qish jadvali”
Fan
|
Muallim
|
Darslik
|
Dasturlash
|
Abdullayev I.R.
|
Liberti Dj . Osvoy samostoyatelno C++
|
Dasturlash
|
Raxmonov U.K.
|
Forsayt R. Pascal dlya vsex
|
Dasturlash
|
Kovalev N.N.
|
Liberti Dj. Osvoy samostoyatelno C++
|
Dasturlash
|
Kovalev N.N.
|
Forsayt R. Pascal dlya vsex
|
Dasturlash
|
Raxmonov U.K.
|
Faysman K. Professionalnoye programmirovaniye na Paskale
|
Jadvalda ko‘p qiymatli bog‘liqlik bor “Fan-Muallim”: Fan (Dasturlash misolida) bir nechta muallim tomonidan o‘qilishi mumkin (misolda Abdullayev, Raxmonov, Kovalev). Yana boshqa bog‘liqlik ham bor “Fan-Darslik”: informatikani o‘tishda “Pascal dlya vsex”, ”Osvoy samostoyatelno C++” va “Professionalnoye programmirovaniye na Pascale” darsliklari ishlatiladi. Bunda Muallim va Darslik funksional bog‘lanmagan, bu esa ortiqchalikka olib keladi (yangi darslikni yozish uchun yana ikkita yangi qator yozish kerak bo‘ladi). Bu jadvalni ikkiga ajratganda ish yaxshilanadi: (Fan-Muallim va Fan-Darslik)
Normal bo’lmagan shakl (NNF) – bu bir yoki bir nechta takrolanuvchi ma’lumotlar guruxiga ega bo’lgan jadval.
Тakrolanuvchi gurux tushunchasi. Тakrorlanuvchi gurux ER – diagrammalardagi munosabatning ko’p qiymatli atributiga mos keladi. Тakrolanuvchi gurux (repeating group) - bu har bir maydonida bir nechta qiymat joylashgan atribut.
Misol. Masalan xodimlar munosabatida (jadvalida) farzandlar nomini va tug’ilgan kunlarini saqlash zarur bo’lsin. Har bir xodimda bir nechta farzand bo’lishi mumkin. Shuning uchun farzandlar tug’ilgan kuni va ismlari takrorlanuvchi guruhni tashkil etadi.
Xodimlar
Xodim_ID
|
Ism
|
Fam
|
Farzand ismlari
|
Farzand tug_kun
|
1001
|
Jane
|
Doye
|
Masu, Sam
|
1/1/92,5/15/94
|
1002
|
John
|
Doye
|
Mary, Sam
|
2/2/92,5/10/94
|
1003
|
Jane
|
Smith
|
John, Pat, Lee, Masu
|
10/5/94,10/12/90,6/6/96,8/21/94
|
1004
|
John
|
Smith
|
Michael
|
7/4/96
|
1005
|
Jane
|
Jones
|
Edward, Martha
|
10/21/95, 10/15/89
|
Rasm1. Тakrorlanuvchi guruxga ega bo’lgan me’yorlashtirilmagan munosabat.
Bu jadvalda ko’rinib turganidek har bir satrning ikkita ustunida (Farzand_ismlari, Farzand_tug_kun) bittadan ko’p qiymat joylashgan.
Нет Возможности точно сказать, какие даты рождения каким детям соответствуют. Предположим, что мы можем сопоставить даты рождения именам детей по их позиции в списке, однако нет уверенности в том, что номера позиций всесда будут соблюдаться.
Поиск в такои таблице чрезвычайно труден. Например, если необходимо узнать, дети каких сотрудников родились до 1995 с., СУБД потребуется извлечь даты рождения из столбца дат рождения, а лишь затем проверить их. Если же невозМОЖНО узнать, сколько дат рождения находится в этом столбце для конкретной строки, объем обработки информациИ становиТСЯ еще больше.
Тakrorlanuvchi guruxlarni bartaraf etish.
Keltirilgan jadvalni birinchi normal formaga keltirishning yoki takrorlanuvchi guruxlarni bartaraf etishning ikkita usuli mavjud: noto’g’ri va to’g’ri.
Noto’g’ri usul. Birinchi usulda takrorlanuvchi guruxlar har bir takrorlanuvchi qiymat uchun jadvalga alohida ustun qo’shish orqali bartaraf etiladi. Ba’zi xolatlarda bu usul to’g’ri bo’ladi. Ba’zi xolatlarda esa jadval birinich normal formaga kelgani bilan guruxdagi qiymatlarning soni bilan bog’liq muammo kelib chiqadi.
Misol. Yuqorida keltirilgan jadvalda Farzand_ismlari va Farzand_tug_kun ustunlarini uchta ustunga ajratamiz.
Xodimlar
Xodim_ID
|
Ism
|
Fam
|
Farzand1_ismi
|
Farzand2_ismi
|
Farzand3_ismi
|
F1_tug_k
|
F2_tug_k
|
F3_tug_k
|
1001
|
Jane
|
Doye
|
Masu
|
Sam
|
|
1/1/92
|
5/15/94
|
|
1002
|
John
|
Doye
|
Mary,
|
Sam
|
|
2/2/92,
|
5/10/94
|
|
1003
|
Jane
|
Smith
|
John,
|
Pat
|
Lee
|
10/5/94
|
10/12/90
|
6/6/96
|
1004
|
John
|
Smith
|
Michael
|
|
|
7/4/96
|
|
|
1005
|
Jane
|
Jones
|
Edward
|
Martha
|
|
10/21/95
|
10/15/89
|
|
Rasm 2. Тakrorlanuvchi guruxlarni noto’g’ri bartaraf etilishi
2 - rasmda keltirilgan jadval birinchi normal forma talablarini qanoatlantiradi. Biroq unda bir qator muammolar vujudga kelgan.
-
Jadvalda xar bir xodim uchun faqat uchta farzand bilan chegaralangan. Unda xodimning 4 – farzandi haqida ma’lumot saqlash imkoni yo’q.
-
Хodimlarning farzandi uchtadan kam bo’lgan xodimlarda jadvalning ko’pgina qismi bekor qoladi.
-
Konkret farzandni izlash amali murakkablashadi.
Тo’g’ri usul. Ikkinchi usulda boshlang’ich jadvaldagi biror atribut yoki atributlar kalit sifatida belgilanadi, keyin takrolanuvchi guruxlar joriy jadvaldan olinib aloxida jadvalga o’tkaziladi. Bunda takrorlunvchi guruxdagi har bir qiymat kalit nusxasi bilan birga yangi jadvalga o’tkaziladi. Yangi jadvalga o’tkazish har bir takrorlanuvchi gurux uchun bajariladi. Agar yaratilgan jadvalda ham takrorlanuvchi guruxlar mavjud bo’lsa ular uchun ham to’g’ri yoki noto’g’ri usul qo’llaniladi.
Misol. Keltirilgan misolda farzand ismlari va tug’ilgan kunlari haqidagi ma’lumotlar yangi jadvalga o’tkaziladi. Unda boshlang’ich jadvalda
Xodimlar
Xodim_ID
|
Ism
|
Fam
|
1001
|
Jane
|
Doye
|
1002
|
John
|
Doye
|
1003
|
Jane
|
Smith
|
1004
|
John
|
Smith
|
1005
|
Jane
|
Jones
|
Farzand
Xodim_ID
|
Ism
|
Tug_yil
|
1001
|
Masu
|
1/1/92
|
1001
|
Sam
|
5/15/94
|
1002
|
Mary
|
2/2/92
|
1002
|
Sam
|
5/10/94
|
1003
|
John
|
10/5/94
|
1003
|
Pat
|
10/12/90
|
1003
|
Lee
|
6/6/96
|
1003
|
Masu
|
8/21/94
|
1004
|
Michael
|
7/4/96
|
1005
|
Edward
|
10/21/95
|
1005
|
Martha
|
10/15/89
|
3 – rasm. Тakrorlanuvchi guruxlarni to’g’ri bartaraf etilishi
Birinchi normal formaga bo’lgan talablar quyidagilardan iborat:
1) Berilgan boshlang’ich munosabat tasvirlangan relyatsion jadvalning har bir atributining qiymati atomar bo’lishi kerak. Ya’ni bu qiymat relyatsion jadval (munosabat) bo’lishi mumkin emas;
2) boshlang’ich munosabat ma’lumotlar orqali – ya’ni relyatsion jadval va unga tegishli bo’lgan ma’lumotlar bazasining butunlik shartlari orqali ifodalanadi.
3) jadvalda bir satrlar (kortejlar, yozuvlar) mavjud emas;
4) har bir ustun jadvalda atribut nomi bilan nomlangan va atriutning joriy qiymatlaridan iborat bo’ladi;
5) har bir atribut ma’lum domen (ma’lumotlarning abstrakt tipi) bilan bog’langan;
6)agar relyatsion jadvalda (munosabatda) ushbu jadval ilan ishlashe’tiborga olinishi kerak bo’lgan funksional bog’lanishlar mavjud bo’lsa, u xolda ushbu bog’lanishlar ma’lumotlar bazasining butunlik shartida qayd qilinadi;
7) yozuvlar yaqqol va noyaqqol tartiblangan (masalan, jimlikka ko’ra - foydalanuvchiga ma’lum yoki noma’lum shaklda). Хususan tartiblanganligiga qat’iy talablar qo’yilmaydi (bu talab effektiflik bilan yoki ishlashdagi qulaylik bilan bog’liq);
8) birlamchi kalitning xech biri bo’sh (NULL) bo’lmasligi kerak;
9) agar 1NF darajasida kalitlar belgilansa (kalit keyinroq – 2NF da aniqlanishi ham mumkin), u xolda ko’rsatgichlarning butunlik sharti qanoatlantirilishi kerak.
Normallashtirish protsedurasi
Normallashtirish – bu jadvallarni ma’lumotlarni yangilanishda, qo‘shishda va o‘chirishda bir nechaga bo‘lishdir.
Normallashtirish – bu ma‘lumotlarni qo‘shishda, o‘zgartirishda va o‘chirishda eng yaxshi xususiyatlarga ega ikki yoki undan ortiq bo‘laklarga jadvalni bo‘lish. Normallashtirishning asosiy maqsadi ma’lumotlar bazasini olishga qaratilganki, unda har bir dalil (fakt) faqat bir joyda uchraydi, ya’ni ma‘lumotlar ortib ketmaydi. Bu faqat xotiradan tejam foydalanlish maqsadida qilinmay, balki saqlanayotgan ma‘lumotlar orasida qaramaqarshiliklarni bartaraf qilish uchundir.
Har bir jadval relyatsion ma‘lumotlar bazasida shunday shartlarni qoniqtiradiki, unga ko’ra jadvalning har bir ustun va satrining kesishish joyida har doim yagona atomar qiymat joylashadi va hech qachon ko‘p miqdorda xuddi shunday qiymatlar bo‘lishi mumkin emas. Shu shartni qoniqtiruvchi har qanday jadval normallashgan deyiladi. Umuman olganda normallashmagan jadvallar, ya’ni takrorlanuvchi ma‘lumotlar guruhiga ega jadvallar relatsion ma‘lumotlar bazasiga kiritilmaydi.
Normallashtirish jadvallarni barcha dekompozitsiyalari bilan ketma ket almashtirish jarayoni bo‘lib, bu almashtirish jadvallarning barcha dekompozitsiyalar 5NF joylashmagancha davom etadi. Amaliyotda esa jadvallarni BKNF ga keltirish kifoya va katta kafolat bilan aytish mumkin-ki, ular 5NF joylashadi.
Jadvallarni NFBK ga o‘tkazish protsedurasi
Bu protsedura, ixtiyoriy jadvalda yagona funktsional bog‘liqliklar K->F ko‘rinishda bo‘lishga asoslanadi, bunda K – dastlabki kalit, F - esa qandaydir boshqa maydon. Shuni inobatga olish kerak-ki, bu dastlabki kalit ta’rifidan kelib chiqadi, yani K->F bog‘lanish berilgan jadvalning barcha maydonlari uchun bajariladi. "Bir joyda bir fakt" degani boshqa funktsional bog‘liqliklar hech qanday kuchga ega emas ma’noni bildiradi. Normallashnitishdan maqsad K->F kurinishdagi bog‘lanishdan tashqari boshqa bog‘lanishlsrdan vos kechishdir.
Agar norlashtirish vaqtida birlamchi(tashqi) kalitlar kodlarini boshlang‘ich kalitlarnikiga almashtirilsa, u holda quyidagi ikki holni kurib chiqish kerak bo‘ladi:
-
Jadval birinchi tarkibli kalit ko‘rinishida bo‘lsin, aytaylik (K1,K2). Bundan tashqari, bu kalitning biror qismiga funktsional bog‘liq, lekin to‘la kalitga bog‘liq bo‘magan, masalan K2, F maydonni o‘z ichiga olsin. Bu holda K2 va F(K2-birlamchi kalit) ni o‘z ichiga oluvchi boshqa jadval tashkil qilish taklif etiladi va boshlang‘ich jadvaldan F o‘chiriladi:
Almashtirilsin T(K1,K2,F) , birlamchi kalit (K1,K2), FZ K2->F T1(K1,K2)ga, birlamchi kalit (K1,K2) va T2(K2,F), birlamchi kalit K2.
-
Jadval birlamchi K kalitga ega, F1 maydonning mumkin bo‘lgan kaliti bo‘lmagan holda, qaysiki albatta Kga funktsional jihatdan bog‘liq va boshqa kalitsiz F2 maydoni, qaysiki F1ga funktsional jihatdan bog‘liq. Bu erda echim, aslida, avvalgining o‘zi – F1 va F2 ni o‘zida aks ettirgan jadval shakllantiriladi, boshlang‘ich kalit F1 bo‘lgan holda va F2 boshlang‘ich jadvaldan olib tashlanadi:
Almashtirilsin T(K,F1,F2), birinchi kalit K, FZ F1->F2 T1(K,F1)ga, birinchi kalit K va T2(F1,F2), birinchi kalit F1.
Berilgan har qanday jadval uchun, ko‘rib chiqilgan 2 qoidalarga asoslangan o‘zgaruvchilarni takrorlab, deyarli barcha holatlarda oxir-oqibat ko‘p jadvallarni olish mumkin, ular “oxiri” normal ko‘rinishda (Formada) bo‘ladi va shunday qilib K->F dan farqli bo‘lgan hech qanday functsional bog‘lanishga ega bo‘lmaydi.
Normal formalar
Birinchi normal forma:
Jadval birinchi normal formada deyiladi , qachonki hech bir undagi qator istalgan maydonda bittadan ortiq bo’lmagan ma’noga ega bo’lmasa va birorta kalit maydoni bo’sh bo’lmasa ;
Ikkinchi normal forma:
Jadval ikkinchi normal formada deyiladi , qachonki agar u birinchi normal formadagi ifodalarni ,maydonlarni qanoatlantiradi va birlamchi kalit bo’lmaganda hamda birlamchi kalitga to’liq funksional qaram bolmaganda ;
Uchinchi normal forma:
Jadval uchinchi normal formada deyiladi, qachonki u 2NF ning barcha shartlarini qanoatlantirsa va birorta ham uning kalitsiz maydonlari boshqa bir kalitsiz maydonlar bilan bog’liq bo’lmasa;
Boysa-Kodd normal formasi
Jadval Boysa-Kodd normal (BKNF) formasida bo’ladi, agar maydonlar orasidagi har qanday funktsional bog’lanish to’liq funktsional bog’lanishga ega bo’lsa.
Beshinchi normal forma:
Jadval beshinchi normal formada (5 NF) bo’ladi, qachonki har bir to’liq dekompozitsiya barcha proektsiyalari mumkin bo’lgan kalitlarni saqlasa. Birorta to’liq dekompozitsiyaga ega bo’lmagan jadval ham beshinchi normal formada (5NF) bo’ladi.
To’rtinci normal forma agar to’liq dekompozitsiya ikkita proektsiya birlashmasidan iborat bo’lsa beshinchi normal formaning xususiy holi bo’ladi.
Ma’lumotlar sxemasini yaratish
Ma’lumotlar sxemasini yaratish Базы данных (Database) oynasida quyidagi buyruqlarni bajarish orqali bajariladi Сервис | Схема данных (Tools | Relationships) yoki ma’lumotlar omborining instrumentlar paneldan Схема данных (Relationships) degan tugmani bosish orqali amalgam oshiriladi.
Jadvallarni ma’lumotlar sxemasiga qo’shish: Схема данных (Relationships) tugmasini bosganingizdan so’ng Добавление таблицы (Show table) oynasi ochiladi, unda siz o’zingizga kerak bo’lgan jadval va so’rovlarni ma’lumotlar sxemasiga qo’shishingiz mumkin. Jadvalni ma’lumotlar sxemasida joylashtirish uchun Добавление таблицы (Show table) oynasida kerak bo’lgan jadvalni tanlab Добавить (Add) tugmasini bosish kerak. Bir necha jadvallarni sxemaga qo’shish uchun tugmasini bosgan holatda jadvallar nomini belgilab chiqib Добавить (Add) tugmasini bosish kerak. Hamma kerak bo’lgan jadvallarni sxemaga qo’shib bo’lgandan kegin Закрыть (Close) tugmasini bosish kerak.
Jadvallar orasida bogliklar yaratish: Ma’lumotlar sxemasida jadvallar o’rtasidagi bogliqlikni aniqlashda informasion-mantiqiy modelni kanonik ko’rinishda foydalanish qulaylik tugdiradi bunda bosh va bo’ysunivchi jadvallar orasidagi munosabatlarni oson aniqlab olish mumkin bo‘ladi chunki informasion – mantiqiy modeldagiga o’hshab bosh jadvallar bo’ysunuvchi jadvallarga qaraganda yuqoriroqda joylashgan bo’ladi. birga – bir boglanishlar kamdan – kam holda ishlatilganli b boglanishlar realiasion omborlarda asosiy hisoblanadi.
Ma’lumotlar sxemasida jadvallar o’rtasida 1:M munosabatlarni o’rnata turib, bosh jadvalda boglanish o’rnatilishi kerak bo’lgan unikal kalitli maydonni belgilab oling. Keyin sichqonchaning tugmasini qo’yib yubormasdan turib kursorni bo’ysunuvchi jadvalning mos maydoniga qo’ying.
Tarkibiy kalit orqali jadvallar o’rtasida munosabat o’rnatayotganingizda, bosh jadvalaning kaliti bo’ladigan hamma maydonlarni tanlab ularni bo’ysunuvchi jadvalning birorta maydoniga olib o’ting. Tarkibli kalitga kiradigan hamma maydonlarni belgilash uchun ularni knopkasini bosib belgilab chiqiladi. Munosabat o’rnatilgandan keyin Изменение связей (Edit Relationships) oynasi ochiladi. Тип отношений maydonida avtomatik tarzda birga-ko’p boglanish o’rnatiladi.
Tarkibli kalit bo’lgan holda Изменение связей (Edit Relationships) oynasida bosh jadvalning har bir maydoni uchun Таблица / Запрос (Table/Query) da bo’ysunuvchi jadvalning mos ravishdagi maydonini tanlash kerak.