121
Relational Schemas va Vitsa Versiyalaridan XML sxemalarini
yaratish
XML va ma'lumotlar bazasi o'rtasida ma'lumotlarni uzatishda keng
tarqalgan savol bu ma'lumotlar bazasi sxemasidan XML sxemasini
yaratish va aksincha. Buni qanday qilish kerakligini tushuntirishdan
oldin, bu dizayn vaqtini talab qiladigan ish ekanligini ta'kidlash
kerak. Buning sababi shundaki , ko'p ma'lumotlarga
asoslangan
dasturlar va deyarli barcha vertikal dasturlar ma'lum XML sxemalari va
ma'lumotlar bazasi sxemalari bilan ishlaydi. Shunday qilib, ular ish
vaqtida sxemalarni yaratishi shart emas. Bundan tashqari, quyida ko'rib
o'tilganidek,
sxemalarni
yaratish
protseduralari
mukammal
emas. Tasodifiy XML hujjatlarini ma'lumotlar bazasida saqlashi kerak
bo'lgan dasturlar, ehtimol ish vaqtida sxemalar yaratish o'rniga mahalliy
XML ma'lumotlar bazasidan foydalanishi kerak. O'zaro aloqador
sxemalarni XML sxemalaridan
va aksincha, yaratishning eng oson usuli
- bu bir qator qo'shimcha funktsiyalarga ega bo'lgan ob'ektga nisbatan
xaritalash orqali yo'lni kodlash. Ob'ektga yo'naltirilgan ma'lumotlar
bazasidan foydalanish uchun shunga o'xshash protseduralar mavjud.
XML sxemasidan o'zaro bog'liqlik sxemasini yaratish uchun:
Har bir
murakkab element turi uchun jadval va boshlang'ich
kalit
ustunlarini yarating.
Aralash tarkibga ega har bir element turi uchun ota-ona jadvalining
boshlang'ich kaliti orqali ota-ona jadvaliga ulangan PCDATA-ni
saqlash uchun alohida jadval yarating.
Ushbu element turining har bir qiymatli atributi uchun va
bitta oddiy
bola
elementi uchun
ushbu
jadvalda
ustun
yarating. Agar XML sxemasida ma'lumotlar turi ma'lumotlari
mavjud bo'lsa, unda ustun turidagi ma'lumot turlarini tegishli turga
o'rnating. Aks holda, ma'lumotlar turini CLOB yoki VARCHAR
( 255) kabi oldindan belgilangan turga o'rnating. Agar bola
elementi yoki atributi ixtiyoriy bo'lsa, ustunni bekor qiling.
O'zaro bog'liqlik sxemasidan XML sxemasini yaratish uchun:
Har bir jadval uchun element turini yarating.
Jadvaldagi har bir ma'lumot (kalit bo'lmagan) ustunlar uchun,
shuningdek asosiy kalit ustunlari (elementlari) uchun element
turiga atribut yoki tarkibiy modelga
PCDATA-faqat bolalar
elementini qo'shing.
122
Asosiy kalit eksport qilinadigan har bir jadval uchun tarkibiy
qismga kichik element qo'shing va jadvalni rekursiv ravishda qayta
ishlang.
Har bir tashqi kalit uchun tarkibiy modelga bolalar elementini
qo'shing va tashqi kalit jadvalini rekursiv ravishda qayta ishlang.
Ushbu protseduralarning bir qator kamchiliklari mavjud. Ularning
aksariyati qo'l bilan tuzatilishi oson, masalan, nomlarning to'qnashuvi va
ustunlar ma'lumotlari turlari va uzunliklari. (DTD-larda ma'lumotlar turi
ma'lumotlari mavjud emas, shuning uchun ma'lumotlar bazasida qanday
turdagi
ma'lumotlardan foydalanish
kerakligini
oldindan aytib
bo'lmaydi.
Esda tutingki, ma'lumotlar turlarini va ularning uzunligini
XML sxemasi hujjatidan bashorat qilish mumkin.)
Yana jiddiy muammo shundaki, XML hujjatida foydalaniladigan
ma'lumotlar "modeli" ma'lumotlar bazasida ma'lumotlarni saqlash uchun
eng samarali modelga qaraganda ko'pincha farq qiladi (va odatda
murakkabroq). Masalan, XML ning quyidagi parchasini ko'rib chiqing:
ABC Industries
123 Asosiy ko'chasi < / ko'chasi>
Fooville
CA
AQSh
95041
O'zaro bog'liqlikni XML sxemasidan yaratish tartibi bu yerda ikkita
jadvalni yaratadi: biri mijozlar uchun, ikkinchisi manzillar uchun. Biroq,
aksariyat hollarda manzilni alohida jadvalda emas, balki mijozlar
jadvalida saqlash ma'qulroq.
elementi o'rash elementining yaxshi namunasidir . Sharf
elementlari odatda ikkita sababga ko'ra ishlatiladi. Birinchidan, ular
hujjatni tushunishni osonlashtiradigan qo'shimcha tuzilmani taqdim
etishga yordam beradi. Ikkinchidan, ular odatda ma'lumotlarni yozish
shakli sifatida ishlatiladi. Masalan, elementini qayerda
bo'lishidan
qat'iy
nazar barcha
123
manzillarni manzil ob'ektlariga o'zgartiradigan
odatiy
holatga
o'tkazish mumkin.
Qoplash elementlari XML-da foydali bo'lsa-da, ular odatda
ma'lumotlar bazasida joylashtirilganda qo'shimcha tuzilish shaklida
muammolarga olib keladi. Shu sababli, aloqador sxemani yaratmasdan
oldin ular odatda XML sxemasidan chiqarib tashlanishi kerak. XML
sxemasini doimiy ravishda o'zgartirishi yoki o'zgartirishi dargumon
bo'lganligi sababli, amaldagi hujjatlar va ma'lumotlar uzatish dasturi
tomonidan kutilgan hujjatlar o'rtasida
nomuvofiqlik yuzaga keladi,
chunki o'rash elementlari xaritaga kiritilmagan. Buni hujjatlarni ish
vaqtida o'zgartirish orqali hal qilish mumkin, masalan XSLT: o'rash
elementlari ma'lumotlar bazasiga o'tkazilishidan oldin yo'q qilinadi va
ma'lumotlar bazasidan ma'lumotlarni uzatgandan so'ng kiritiladi.
Ushbu kamchiliklarga qaramay, yuqoridagi protseduralar XML
sxemalarini relyatsion sxemadan va aksincha, ayniqsa katta tizimlardan
yaratish uchun foydali boshlang'ich nuqtani beradi.