Tarkibga o'tish

022. Normalizatsiya va sxema loyihalash

Bu mavzuda normal shakllar, bog'lovchi jadvallar, tarixiy jadvallar bo'yicha 23 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.

Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.

1. (dokon, oson) 1NF buzilishini aniqlash: telefonlar vergul bilan 'a,b' saqlangan satrdan alohida qatorlarga ajrating (UNNEST + STRING_TO_ARRAY) — VALUES (1,'998901,998902'),(2,'998903').

Kutilgan natija
1 | 998901
1 | 998902
2 | 998903

2. (dokon, oson) Takrorlanuvchi ma'lumotni ajrating (2NF): buyurtmalarni (mijoz_id, mijoz shahari) bilan bog'langan jadvaldan noyob mijoz_id va shahar juftliklari soni.

Kutilgan natija
30

3. (dokon, o'rta) Normalizatsiya: yagona 'katta' jadvaldan (VALUES) mijoz va shahar jadvallarini ajrating: noyob shaharlar soni.

Kutilgan natija
2

4. (dokon, o'rta) Sxema: shahar uchun alohida jadval yarating (shahar_id, nom), mijoz.shahar dan to'ldiring, mijoz ga shahar_id qo'shing va to'ldiring; shaharlar soni.

Kutilgan natija
Andijon | 5
Buxoro | 5
Fargona | 5
Namangan | 5
Samarqand | 5
Toshkent | 5

5. (dokon, o'rta) 3NF: buyurtma_element da narx emas, faqat mahsulot_id; summani JOIN bilan hisoblash: eng katta 3 buyurtma jami.

Kutilgan natija
30 | 903700.00
22 | 864100.00
17 | 840300.00

6. (dokon, qiyin) Narx tarixi: 'narx_tarix' jadvali (mahsulot_id, narx, boshlanish) yarating; hozirgi narxlarni 2024-01-01 dan ko'chiring; qatorlar soni.

Kutilgan natija
25

7. (dokon, qiyin) Ko'p-ko'pga bog'lanish: mijoz va 'tanlangan_teg' o'rtasidagi bog'lovchi jadval yarating (mijoz_id, teg text) PK juft; 3 qator qo'shib tekshiring (dublikat qo'shmasdan).

Kutilgan natija
vip | 2
yangi | 1

8. (dokon, qiyin) Denormalizatsiya: har bir mijozga 'buyurtma_soni' ustunini qo'shib to'ldiring; jami yig'indisi buyurtmalar soniga tengligini tekshiring.

Kutilgan natija
60 | 60

9. (maktab, oson) Maktab sxemasi: sinf va o'quvchi bog'lanishi turi qanday? Har bir sinfdagi o'quvchilar soni (1:N tasdig'i).

Kutilgan natija
1 | 8
2 | 8
3 | 8
4 | 8
5 | 8

10. (maktab, o'rta) Ko'p-ko'pga: o'qituvchi-sinf (dars beradi) bog'lovchi jadvali 'dars' (oqituvchi_id, sinf_id) yarating va baholardan (fan orqali o'qituvchi, o'quvchi sinfi) to'ldiring; qator soni.

Kutilgan natija
40

11. (maktab, o'rta) Surrogat va tabiiy kalit: o'quvchi telefonlari takrorlanmasligini tekshiring: telefon bo'yicha dublikatlar soni.

Kutilgan natija
0

12. (maktab, qiyin) Tarixiy jadval: 'sinf_tarix' (oquvchi_id, sinf_id, boshlanish, tugash) yarating; hozirgi o'quvchilar sinflarini ko'chiring (tugash NULL); NULL tugash soni.

Kutilgan natija
40

13. (maktab, qiyin) Baho jadvali dublikatlari: bir o'quvchi bir kunda bir fandan bir necha baho olgan holatlar soni (kandidat UNIQUE tekshiruvi).

Kutilgan natija
40

14. (bank, oson) Mijoz-hisob 1:N: bitta mijozda eng ko'p hisob soni.

Kutilgan natija
4

15. (bank, o'rta) Bank tranzaksiyalarini 'turi' lug'ati jadvaliga ajrating: tranzaksiya_turi (id, nom) yarating va to'ldiring; turlar soni.

Kutilgan natija
1 | chiqim
2 | kirim
3 | otkazma

16. (bank, o'rta) Hisob egalari: bir hisobga bir necha egalik (qo'shma hisob): 'hisob_egasi' (hisob_id, mijoz_id) bog'lovchi jadvalini hisob.mijoz_id dan to'ldiring; qator soni.

Kutilgan natija
40

17. (bank, qiyin) 3NF tekshiruvi: filial.shahar filial nomiga bog'liq; mijozdan shaharni filial orqali olish — shahar bo'yicha mijozlar soni.

Kutilgan natija
Andijon | 6
Buxoro | 6
Samarqand | 6
Toshkent | 12

18. (bank, qiyin) Audit jadvali: 'hisob_audit' (hisob_id, eski_balans, yangi_balans) yarating va balans o'zgarishini qo'lda yozing (1-hisobga +100); audit qatori.

Kutilgan natija
1 | 100.00

19. (kutubxona, oson) Kitob va muallif: 1:N. Mualliflar bo'yicha kitoblar soni (maks).

Kutilgan natija
5

20. (kutubxona, o'rta) Kitoblarning bir nechta muallifi bo'lishi uchun 'kitob_muallif' (kitob_id, muallif_id) bog'lovchi jadvalini yarating va to'ldiring; qator soni.

Kutilgan natija
40

21. (kutubxona, o'rta) Davlatni alohida jadvalga ajrating: 'davlat' (id, nom) va muallif ga davlat_id; davlatlar soni.

Kutilgan natija
Angliya | 1
Ozbekiston | 6
Rossiya | 1

22. (kutubxona, qiyin) Ijara tarixini 'ijara_arxiv' ga ko'chiring (qaytarilganlar) va asosiy jadvaldan o'chiring: arxivdagi va asosiy jadvaldagi qatorlar soni.

Kutilgan natija
56 | 14

23. (kutubxona, qiyin) Soft delete: kitob ga 'ochirilgan' boolean ustuni; nusxasi 1 bo'lgan kitoblarni ochirilgan=true qiling; ochirilmaganlar soni.

Kutilgan natija
32