Daha çox

AttributeError: 'unicode' obyektində arcpy.mapping.ListLayers-dən '_arc_object' atributu yoxdur?


Bir qovluqdakı .mxd fayllarını siyahıya almağa və sonra hər bir xəritə sənədindəki qatları siyahıya almağa imkan verən bir skript yazmağa çalışıram, bununla belə bu xətanı almağa davam edirəm:

Traceback (son zəng son): "C: Python27 ArcGIS10.1 Lib site-packages pythonwin pywin framework scriptutils.py" faylı, 326 sətir, RunScript exec codeObject in əsas.dikt "C: Users Daimon Nurse Desktop DFMPROJECT Scripts editmapdocument8.py" faylı, sətir 9, lyr = arcpy.mapping.ListLayers (file) File "C: Program Files (x86) ArcGIS Desktop10. 1 arcpy arcpy utils.py ", sətir 181, fn_ return fn (* args, ** kw)" C: Program Files (x86) ArcGIS Desktop10.1 arcpy arcpy mapping.py ", line 1499, in ListLayers result = mixins.MapDocumentMixin (map_document_or_layer) .listLayers (wildcard, data_frame)" File: C: Program Files (x86) ArcGIS Desktop10.1 arcpy arcpy arcobjects mixins.py ", sətir 822, listLayers təbəqələrində = self.layers Fayl "C: Program Files (x86) ArcGIS Desktop10.1 arcpy arcpy arcobjects mixins.py", sətir 682, əksinə çərçivə üçün təbəqələrdə (self. dataFrames): Dosya "C: Program Files (x86) ArcGIS Desktop10.1 arcpy arcpy arcobjects mixins.py", sətir 694, dataFrames qayıt xəritəsində (convertArcObjectToPythonObject, self.pageLayout.dataFrames) Fayl "C" : Program Files (x86) ArcGIS Desktop10.1 arcpy arcpy arcobjects mixins.py ", sətir 678, pageLayout qayıt convertArcObje ctToPythonObject (self._mxd._arc_object.pageLayout) AttributeError: 'unicode' obyektində '_arc_object' atributu yoxdur

Bu istifadə etdiyim kod:

import arcpy import os PATH2 = r "C:  Users  Daimon Nurse  Desktop  DFMPROJECT" arcpy.env.workspace = PATH2 arcpy.env.overwriteOutput = arcpy.ListFiles ("*. mxd") içindəki fayl üçün doğrudur: lyr = arcpy.mapping.ListLayers (fayl) çap faylı

"Fayl" ı tam bir yol adına çevirin, sonra sənədlə mapping.MapDocument ilə açın:

arcpy.ListFiles ("*. mxd") içindəki fayl üçün: filePath = os.path.join (PATH2, file) print filePath MapDoc = arcpy.mapping.MapDocument (filePath) lyrList = arcpy.mapping.ListLayers (MapDoc) for Lyr lyrList-də: Lyr yazdırın

Bir sətirdən qatların siyahısını verməyə çalışırsınızfaylbir xəritə (* .mxd) adı olur.

Əvvəlcə bir xəritə sənəd obyekti etmək üçün arcpy.MapDocument () istifadə etməlisiniz.


Üçünarcpy.mapping.ListLayersişləmək üçün daxiletmə bir xəritə obyekti olmalıdır. Xəritə obyektləri ilə yaradılırarcpy.MapDocument ()

Cəhd edin:

arcpy.ListFiles ("*. mxd") içindəki fayl üçün: mxd = arcpy.MapDocument (file) lyr = arcpy.mapping.ListLayers (mxd) print file

Bir çox coğrafi işləmə axınında koordinat və həndəsə məlumatlarını istifadə edərək müəyyən bir əməliyyat aparmaq lazım ola bilər, lakin xüsusiyyət sinfindən istifadə edərək xüsusiyyət sinfini imleclərlə dolduraraq yeni (müvəqqəti) xüsusiyyət sinfi yaratmaq prosesindən keçmək istəməyəcəksiniz. , sonra müvəqqəti xüsusiyyət sinifini silmək. Həndəsə obyektləri geoprosessiyanı daha asanlaşdırmaq üçün həm giriş, həm də çıxış üçün istifadə edilə bilər. Həndəsə obyektləri sıfırdan Həndəsə, Çox nöqtəli, PointGeometry, Polygon və ya Polyline siniflərindən istifadə etməklə yaradıla bilər.

Obyekt yaratmaq üçün istifadə olunan koordinatlar. Məlumat növü ya Point, ya da Array obyektləri ola bilər.

Yeni həndəsənin məkan referansı.

(Varsayılan dəyər Yoxdur)

Z vəziyyəti: Z effektiv olduğu təqdirdə həndəsə üçün doğrudur, olmadıqda isə False.

(Varsayılan dəyər Yanlışdır)

M vəziyyəti: M effektiv olduğu təqdirdə həndəsə üçün doğrudur və əgər olmadığı təqdirdə False.

(Varsayılan dəyər Yanlışdır)


Arcpy AddFields_management İşləmir & # x27t

Python skriptində AddFields_management (http://pro.arcgis.com/en/pro-app/tool-reference/data-management/add-fields.htm) istifadə etməyə çalışarkən başqaları bu problemlə üzləşdimi? AddField_management for for for birdən çox sahə əlavə etmək üçün istifadə edə biləcəyimi bilirəm, amma kodumu təmiz saxlamağa və daha spesifik alətdən istifadə etməyə çalışıram.

AddFields_management istifadə etdiyimdə bu səhv olur: & quotAttributeError: & # x27module & # x27 obyektində & # x27AddFields_management & # x27 & quot atributu yoxdur

Niyə mövcud olmayan bir vasitə üçün Arcpy-də sənədlər var?

Kodunuza bənzər bir fikir və ya bir şey göndərə bilərsinizmi? Ekran görüntüsündən başqa bir şey!

AddField_management for for for loop istifadə etmək üçün bundan istifadə etməyə çalışdığım funksiyanı artıq yenidən düzəltdim. Siyahıda göstərilən nümunəni də sınadım və eyni səhvi qaytarır. Management.py-də funksiyaları axtarırsınızsa & quotAddFields & quot funksiyası yoxdur

arcpy.AddFields_management bir vasitə deyil. Arcpy.AddFields ya da arcpy.AddField_management istifadə etməlisiniz.

AddFields_management (in_table, field_description)

Nümunə (yuxarıdakılara zidd olan)

idxal arcpy arcpy.env.workspace = & quotC: /data/district.gdb"

Bu nümunə eyni səhvlə uğursuz oldu: & quotAttributeError: & # x27module & # x27 obyektində & # x27AddFields & # x27 & quot atributu yoxdur


3 cavab 3

Qarşılaşdığınız səhv, "məlumat mənbəyi" üçün dəyərinizin düzgün olmadığını göstərir. "Adresse = 'test.kml'" istifadə etmək əvəzinə, xml sənədinə tam yolu daxil etməyə çalışın. Məsələn "C: myfilestest.kml".

Pythondakı Windows yolları üçün bunu r'C: myfilestest.kml 'şəklində yaza bilərsiniz, əks halda başqa bir şey üçün eğik çizgiler qaçır.

Xeyr, səhv deyil, nisbi yoldur.

Bunu edirəm, işə yaramır: adresse = r'C: / Documents and Settings / Guilhain / Mes sənədləri / My Dropbox / dev / seb_gare / point_station.kml '

& # 8211 & # 160Guilhain
17 Haziran '11 saat 9:29

Koddan keçməyə imkan verəcək bir IDE-də yazırsınız? Geriyə bir addım atın və 'datasource = driver.Open (adresse)' çıxışının istədiyiniz olub olmadığını görün - bu addımı tamamlayır görünür, lakin .GetLayer () düzgün girişdə işləməyə qurulmayıb.

Ümid edirəm ki, məlumat mənbəyi yaradılmayanda nələrin baş verdiyini öyrənmək üçün bunu kodunuza əlavə etməyə çalışın:

GetLayer () çağırışına datasource.GetLayer ("foo") kimi bir ad arqumenti verməlisiniz. və ya GetLayerByIndex istifadə edin (layer_number_starting_with_0)

bir qatlı məlumat mənbələri üçün bu problem deyil, çünki bir standart var: GetLayer (self, iLayer = 0)


[arcpy] Axtarış imleci ilə tərif sorğusu?

Biri boz xüsusiyyətlərə (fon), digəri ağ xüsusiyyətlərə sahib iki eyni təbəqədən ibarət bir xəritə sənədim var. Boz təbəqə atribut cədvəlindəki hər sətirdən keçid edən, məlumat çərçivəsini ölçüdə böyüdüb bir jpeg ixrac edən kiçik bir skriptim var.

Yaxşı işləyir, amma indi etmək istədiyim şey, axtarış kursoru daxilində bir tərif sorğusundan istifadə edərək cari sətirdən yalnız ağ təbəqədən xüsusiyyət seçib boz təbəqə üzərində göstərməkdir ki, ixrac olunan şəkil ağ rəngə maraq və ətrafdakı xüsusiyyətlər boz rəng. Query Builder ilə belə bir şey etdim, amma heç Python-da olmadım. Hər kəs bunu arcpy ilə necə edə biləcəyimi bilir?

Birincisi, bəlkə də yeni arcpy.da imleclərini istifadə etməyi düşünməlisiniz. İstifadə etdiyiniz əvvəlki axtarış imlecindən daha sürətli performans təmin edirlər. Sadəcə olduğunuz kimi zəng edirsiniz, ancaq istifadə edin: sCur = arcpy.da.SearchCursor (c_grey)

İlkin sualınıza cavab vermək üçün axtarış kursorunuzdakı sahələrdən biri kimi bəzi unikal identifikatorları daxil edərdim (çünki bu unikal identifikator ağ və boz təbəqələr arasında eyni olmalıdır): sCur = arcpy.da.SearchCursor (c_grey, [& quotUID & quot] )
sCurdakı sıra üçün:
uid = sıra [0]
c_white.definitionQuery = & # x27 & quotUID & quot = & # x27 <> & # x27 & # x27.format (uid)
df.extent = sıra.şəkil
arcpy.RefreshActiveView ()
və s.

Bunu sınamamışdım, belə ki, onunla bir az dinləməlisiniz. İnşallah bu kömək edir!

Təşəkkürlər, bu kömək etdi! Yeni arpy.da imlecinə əlavə etdim və işə saldım, sadəcə tərif sorğusunu imleclə necə quracağımdan əmin olmadıq.

Bizə ssenarinizdə izah etmədiyiniz bir çox şey etməsəniz. Bunu ümumiyyətlə bir imleclə etmək cəhdini atlayardım. İstədiyiniz funksionallıq Data Driven Pages-a daxil edilmişdir. İndeks qatınızı boz təbəqə olaraq təyin edərdiniz. Sonra ağ təbəqələrin xassələrinin tərif nişanında Səhifə Tərifini təyin edin. Veri əsaslı səhifələrinizi Python vasitəsilə də ixrac edə bilərsiniz, beləliklə MXD-də Python ilə etmək istədiyiniz digər şeyləri istisna etmir.

Bunu tam olaraq düşünürdüm, məlumat bazlı səhifələrlə sizin üçün çox çətin iş gördülər http://desktop.arcgis.com/en/arcmap/10.3/map/page-layouts/creating-data-driven-pages.htm

Data Driven Pages istifadə edərək araşdırdım, lakin bu skript DDP ilə xüsusilə mümkün və ya düz görünməyən digər şeylər arasında atribut sahələrinə əsaslanan məlumat çərçivəsinin məkan istinad parametrlərini dəyişdirir.

Boz və ağ təbəqələrinizin eyni arxa məlumat mənbəyinə işarə etdiyini düşünürəm, ancaq xəritədə fərqli şəkildə simvollaşdırılır.

İmlecinizdə bir sorğu istifadə edə bilsəniz də, istədiyiniz kimi düşünmərəm. Hər boz elementin arasından keçmək istəyirsən, ancaq onu böyüddükdən sonra yalnız müvafiq ağ elementi göstər. Bunu etmək üçün axtarış kursorunun özündə deyil, yalnız ağ təbəqənizdə bir tərif sorğusu tətbiq edirsiniz.

Daha sürətli da.SearchCursor əvəzinə köhnə stil SearchCursor istifadə etdiyinizə görə satırın ObjectID-inə daxil olmaq üçün sintaksisin bir az fərqləndiyini unutmayın. Əslində aşağıdakı kod hər bir boz xüsusiyyətə baxır, Nesne ID-sini alır, ağ təbəqədə bu identifikatora uyğun bir tərif sorğusu təyin edir, sonra ölçüdə böyüdülür və s.

Qeyd etməyə dəyər bəzi şeylər. OBJECTID-dən başqa başqa bir ümumi sahəniz varsa, onu dəyişdirin. Bundan əlavə, Pythondakı müddəaların olduğu yerdə qurmaq da sadə bir iş deyil. Hesablanacaq çox şey var.


Ytdjtkui

Başqa birisi üçün başqa bir ölkəyə bilet almaq?

Aritmetik orta həndəsi orta bərabərsizlik aydın deyil

Bir Ulduz qapısını nəql etməyin səmərəli yolu

Avadanlıq almağa cavabdehəm, amma heç kim seçimimdən məmnun deyil. Bunu necə düzəltmək olar?

Fayl adında bir ehtiyat tarixçəsindən qaçın

Xaricdəki həmkarlarının çıxışını başa düşməkdə problem

Gerçək qiymətləndirilmiş bir səbəb FIR sisteminin qütb sıfırları

Ulduzlardan gələn radiasiyaya 'qulaq asaraq' bölgəyə girən kosmik işçi geekslər haqqında qısa hekayə

Z80 prosessoru haradan icra olunmağa başlayır?

Böyük alçıpan yamaq dayaqları

Xarakteri yalnız sözün bir hissəsi deyil, təkrarlandığı halda başqa birisi ilə əvəz edin

Diskret dəyişən mənfi rəqəm ola bilərmi?

Əvvəlki şirkətin bizə sual verməsini dayandırmaq üçün nə edə bilərik?

Tək Məsuliyyət prinsipinin tətbiqi

İş yoldaşımıza və bossumuza düdük çaldıqdan sonra düşmən iş mühiti. Mən nə edirəm?

Bu aydın Class Action həll spam mesajıdır?

Məzmun deyilsə niyə qaçmalısan?

Pythonda Mandelbrot dəsti yaratmaqla performansı artırın

Yeni bir alət öyrənərkən çox uzun və çox quru, eyni zamanda çox faydalı texniki sənədlərdən necə keçə bilərəm?

Müştəri İstəkləri (Bəzən) Mənə Bonkers sür!

Eğik işarəsi necə tələffüz olunur

Akış qrafik sənəd simvolu

Bir iş sahəsinin (arcpy) mövcudluğunun yoxlanılması, if else ifadəsi ilə əlaqəli məsələlər

ArcPy istifadə edərək domenin mövcud olub olmadığını yoxlamaq? Bütün Feature veri setets & # 38 xüsusiyyət siniflərini tək bir coğrafi verilənlər bazasından CSVArcpy ListFeatureClasses-a eyni iş sahəsindəki ArcMap VS IDLEIterating siyahısından arcpy.ListFeatureClasses () tərəfindən qaytarılmış siyahı işlədildikdə fərqlənir 'NoneType' obyekti səhvdir iterable? a variableIf / Else Create File Geodatabase bəyanatına ArcPyChanging iş yerinin verilməsi 'NoneType' səhvinə yol açar Mövcud Domain Yazdırılması Bir çox iş mühiti istifadə ArcGIS ArcpyExport arcpy.ListFeatureClasses sonradan istifadə üçün txt

Aşağıdakı kodu istifadə edərək, bir yer məlumat bazasında xüsusiyyət siniflərinin təsvirini, siyahısını verməyə və mövcudluğunu yoxlamağa çalışıram.

Mövcud kod iş sahəsi mövcud olduqda işləsə də, mövcud olmayan bir iş sahəsi verməyə çalışdığım zaman bir səhv mesajı alıram:

Məsələ, ərazi istinad məlumatları ilə birlikdə geodat verilənlər bazasındakı xüsusiyyət siniflərinin siyahısını çap etməyə imkan verən xətt kodu ətrafında görünür.
fcListdəki fc üçün:
TypeError: "NoneType" obyekti təkrarlanan deyil

Sadəcə başqa bir ifadəni çap etməsini istəyirəm: "iş sahəsi yoxdur" yazdırmaq üçün, amma bunu necə gerçəkləşdirəcəyimi bilmirəm.

4-cü sətirdə bir sintaksis xətası almalısınız (balanssız cüt sitatlar). Windows'dakı C: sürücüsünün kökündən istifadə etmək zəif təcrübədir, r "C: mydata" istifadə edin. Simli riyaziyyat əslində olduqca ləngdir, buna görə də string.format () istifadə etmək mesajları formatlaşdırmağın ən yaxşı yoludur.

Arcpy.env.workspace = "C:" "arcpy.env.workspace = r'C: nonExistentDir " olaraq dəyişdirsəniz kodunuz işləyir və 'İş sahəsi yoxdur' mesajını göstərir, ancaq yalnız istədiyiniz budur?

Aşağıdakı kodu istifadə edərək, bir yer məlumat bazasında xüsusiyyət siniflərinin təsvirini, siyahısını verməyə və mövcudluğunu yoxlamağa çalışıram.

Mövcud kod iş sahəsi mövcud olduqda işləsə də, mövcud olmayan bir iş sahəsi verməyə çalışdığım zaman bir səhv mesajı alıram:

Məsələ, coğrafi verilənlər bazasındakı xüsusiyyət siniflərinin siyahısını məkan istinad məlumatları ilə birlikdə çap etməyə imkan verən xətt kodu ətrafında görünür.
fcListdəki fc üçün:
TypeError: "NoneType" obyekti təkrarlanan deyil

Sadəcə başqa bir ifadəni çap etməsini istəyirəm: "iş sahəsi yoxdur" yazdırmaq üçün, amma bunu necə gerçəkləşdirəcəyimi bilmirəm.

4-cü sətirdə bir sintaksis xətası almalısınız (balanssız cüt sitatlar). Windows'dakı C: sürücüsünün kökündən istifadə etmək zəif təcrübədir, r "C: mydata" istifadə edin. Simli riyaziyyat əslində olduqca ləngdir, buna görə də string.format () istifadə etmək mesajları formatlaşdırmağın ən yaxşı yoludur.

Arcpy.env.workspace = "C:" "arcpy.env.workspace = r'C: nonExistentDir 'olaraq dəyişdirsəniz kodunuz işləyir və' İş sahəsi yoxdur 'mesajını göstərir, ancaq yalnız istədiyiniz budur?

Aşağıdakı kodu istifadə edərək, bir yer məlumat bazasında xüsusiyyət siniflərinin təsvirini, siyahısını verməyə və mövcudluğunu yoxlamağa çalışıram.

Mövcud kod iş sahəsi mövcud olduqda işləsə də, mövcud olmayan bir iş sahəsi verməyə çalışdığım zaman bir səhv mesajı alıram:

Məsələ, coğrafi verilənlər bazasındakı xüsusiyyət siniflərinin siyahısını məkan istinad məlumatları ilə birlikdə çap etməyə imkan verən xətt kodu ətrafında görünür.
fcListdəki fc üçün:
TypeError: "NoneType" obyekti təkrarlanan deyil

Sadəcə başqa bir ifadəni çap etməsini istəyirəm: "iş sahəsi mövcud deyil" yazdırmaq üçün, amma bunu necə gerçəkləşdirəcəyimi bilmirəm.

Aşağıdakı kodu istifadə edərək, bir yer məlumat bazasında xüsusiyyət siniflərinin təsvirini, siyahısını verməyə və mövcudluğunu yoxlamağa çalışıram.

Mövcud kod iş sahəsi mövcud olduqda işləsə də, mövcud olmayan bir iş sahəsi verməyə çalışdığım zaman bir səhv mesajı alıram:

Məsələ, coğrafi verilənlər bazasındakı xüsusiyyət siniflərinin siyahısını məkan istinad məlumatları ilə birlikdə çap etməyə imkan verən xətt kodu ətrafında görünür.
fcListdəki fc üçün:
TypeError: "NoneType" obyekti təkrarlanan deyil

Sadəcə başqa bir ifadəni çap etməsini istəyirəm: "iş sahəsi mövcud deyil" yazdırmaq üçün, amma bunu necə gerçəkləşdirəcəyimi bilmirəm.

4-cü sətirdə bir sintaksis xətası almalısınız (balanssız cüt sitatlar). Windows'dakı C: sürücüsünün kökündən istifadə etmək zəif təcrübədir, r "C: mydata" istifadə edin. Simli riyaziyyat əslində olduqca ləngdir, buna görə də string.format () istifadə etmək mesajları formatlaşdırmağın ən yaxşı yoludur.

Arcpy.env.workspace = "C:" "arcpy.env.workspace = r'C: nonExistentDir 'olaraq dəyişdirsəniz kodunuz işləyir və' İş sahəsi yoxdur 'mesajını göstərir, ancaq yalnız istədiyiniz budur?

4-cü sətirdə bir sintaksis xətası almalısınız (balanssız cüt sitatlar). Windows'dakı C: sürücüsünün kökündən istifadə etmək zəif təcrübədir, r "C: mydata" istifadə edin. Simli riyaziyyat əslində olduqca ləngdir, buna görə də string.format () istifadə etmək mesajları formatlaşdırmağın ən yaxşı yoludur.

Arcpy.env.workspace = "C:" "arcpy.env.workspace = r'C: nonExistentDir 'olaraq dəyişdirsəniz kodunuz işləyir və' İş sahəsi yoxdur 'mesajını göstərir, ancaq yalnız istədiyiniz budur?

4-cü sətirdə bir sintaksis xətası almalısınız (balanssız cüt sitatlar). Windows'dakı C: sürücüsünün kökündən istifadə etmək zəif təcrübədir, r "C: mydata" istifadə edin. Simli riyaziyyat əslində olduqca ləngdir, buna görə də string.format () istifadə etmək mesajları formatlaşdırmağın ən yaxşı yoludur.

4-cü sətirdə bir sintaksis xətası almalısınız (balanssız cüt sitatlar). Windows'dakı C: sürücüsünün kökündən istifadə etmək zəif təcrübədir, r "C: mydata" istifadə edin. Simli riyaziyyat əslində olduqca ləngdir, buna görə də string.format () istifadə etmək mesajları formatlaşdırmağın ən yaxşı yoludur.

Arcpy.env.workspace = "C:" "arcpy.env.workspace = r'C: nonExistentDir 'olaraq dəyişdirsəniz kodunuz işləyir və' İş sahəsi yoxdur 'mesajını göstərir, ancaq yalnız istədiyiniz budur?

Arcpy.env.workspace = "C:" "arcpy.env.workspace = r'C: nonExistentDir 'olaraq dəyişdirsəniz kodunuz işləyir və' İş sahəsi yoxdur 'mesajını göstərir, ancaq yalnız istədiyiniz budur?


AttributeError: 'unicode' obyektində arcpy.mapping.ListLayers-dən '_arc_object' atributu yoxdur? - Coğrafi İnformasiya Sistemləri

Bir verilənlər bazası istifadəçi hesabının parol və xüsusi verilənlər bazası imtiyazları vardır.

İstifadəçi Hesabları və Şemaları

Hər bir istifadəçi hesabında istifadəçi ilə eyni adda olan tək bir sxem var. Şema, sxemə sahib olan istifadəçi üçün məlumatları ehtiva edir. Məsələn, hr istifadəçi hesabı, işçilər cədvəli kimi şema obyektlərini ehtiva edən hr şemasına sahibdir. İstehsal verilənlər bazasında şema sahibi ümumiyyətlə bir şəxsdən daha çox verilənlər bazası tətbiqini təmsil edir.

Şema daxilində, müəyyən bir növün hər bir şema obyektinin özünəməxsus bir adı var. Məsələn, hr.employees, hr şemasındakı masa işçilərinə istinad edir. Aşağıdakı şəkildə hr adlı bir şema sahibi və hr şeması içindəki şema obyektləri təsvir edilmişdir.

Ümumi və Yerli İstifadəçi Hesabları

Bir istifadəçi hesabı verilənlər bazasını təyin edən obyektlərə sahibdirsə, bu istifadəçi hesabı yaygındır. Oracle tərəfindən təmin edilməyən istifadəçi hesabları ya yerli, həm də yaygındır. Bir CDB ortaq istifadəçisi, CDB kökündə yaradılan ümumi bir istifadəçidir. Tətbiqin ümumi istifadəçisi, bir tətbiq kökündə yaradılan və yalnız bu tətbiq konteynerində yayılmış bir istifadəçidir.

Aşağıdakı qrafik bir CDB-də mümkün istifadəçi hesabı növlərini göstərir.

Şəkil 4-2 CDB-də istifadəçi hesabları


"CDB-də Şəkil 4-2 İstifadəçi Hesabları" nın təsviri

Bir CDB ortaq istifadəçisi CDB-də kifayət qədər imtiyaz sahibi olduğu istənilən konteynerə qoşula bilər. Bunun əksinə olaraq, ümumi bir istifadəçi imtiyazlarından asılı olaraq yalnız yaradıldığı tətbiq kökünə və ya bu tətbiq kökünə qoşulmuş bir PDB-yə qoşula bilər.

Ümumi İstifadəçi Hesabları

Ya sistem konteynerinin (CDB) və ya bir tətbiq konteynerinin kontekstində, a ümumi istifadəçi bu konteyner içindəki kökündə və mövcud və gələcək PDB-də eyni kimliyə sahib bir verilənlər bazası istifadəçisidir.

Hər bir ümumi istifadəçi konteynerinin kökündə və kifayət qədər imtiyazlara sahib olduğu hər hansı bir PDB ilə əlaqə qura və əməliyyatlar edə bilər.Bəzi inzibati vəzifələr ümumi bir istifadəçi tərəfindən yerinə yetirilməlidir. Buna PDB yaratmaq və PDB-ni çıxarmaq daxildir.

Məsələn, SYSTEM, DBA imtiyazlarına sahib bir CDB istifadəçisidir. Beləliklə, SİSTEM CDB kökünə və verilənlər bazasındakı istənilən PDB-yə qoşula bilər. Saas_sales tətbiqetmə qabında ümumi bir istifadəçi saas_sales_admin yarada bilərsiniz. Bu halda saas_sales_admin istifadəçisi yalnız saas_sales tətbiqetmə kökünə və ya saas_sales tətbiqetmə qabında olan bir PDB tətbiqinə qoşula bilər.

Hər ümumi istifadəçi Oracle tərəfindən təmin edilir və ya istifadəçi tərəfindən yaradılır. Oracle tərəfindən verilən ümumi istifadəçilərin nümunələri SYS və SYSTEM-dir. İstifadəçi tərəfindən yaradılan hər bir ümumi istifadəçi ya CDB ortaq istifadəçisidir, ya da ümumi bir istifadəçi tətbiqidir.

Aşağıdakı şəkildə iki PDB-də nümunə istifadəçilər və sxemlər göstərilir: hrpdb və salespdb. SYS və c ## dba, CDB $ ROOT, hrpdb və salespdb-də şemaları olan CDB-nin ümumi istifadəçiləridir. Yerli istifadəçilər hr və rep hrpdb-də mövcuddur. Yerli istifadəçilər hr və rep də salespdb-də mövcuddur.

Şəkil 4-3 CDB-də istifadəçilər və sxemlər


"CDB-də Şəkil 4-3 İstifadəçiləri və Şemaları" nın təsviri

Ümumi istifadəçilər aşağıdakı xüsusiyyətlərə malikdirlər:

    Adi bir istifadəçi, YARATMA SESSİYASI imtiyazına sahib olduğu hər hansı bir konteynerə (CDB $ ROOT daxil olmaqla) daxil ola bilər.

Ortaq bir istifadəçinin hər qabda eyni imtiyazlara sahib olmaması lazımdır. Məsələn, c ## dba istifadəçisi hrpdb-də və kökdə bir sessiya yaratmaq, lakin salespdb-də bir sessiya yaratmaq üçün bir imtiyaz əldə edə bilər. Müvafiq imtiyazlara sahib olan ümumi bir istifadəçi konteynerlər arasında keçid edə bildiyindən, kökdəki ortaq bir istifadəçi PDB-ləri idarə edə bilər

Beləliklə, ümumi bir istifadəçi öz tətbiqi qabı ilə məhdudlaşır. Məsələn, saas_sales tətbiqetməsində yaradılan ümumi tətbiqetmə istifadəçi, yalnız tətbiq kökünə və saas_sales tətbiqetmə qabındakı PDB-lərə qoşula bilər.

Heç bir yerli istifadəçi adı c ## və ya C ## işarələri ilə başlaya bilməz.

Bir CDB ortaq istifadəçisi CDB kökündə müəyyən edilir, lakin eyni şəxsiyyətə sahib hər PDB ilə əlaqə qurmağı bacarmalıdır. Bir tətbiqetmə istifadəçisi tətbiq kökündə yaşayır və eyni identifikatorla konteynerindəki hər bir PDB tətbiqinə qoşula bilər.

Ümumi istifadəçilərin xüsusiyyətləri

Hər ümumi istifadəçi Oracle tərəfindən təmin edilir və ya istifadəçi tərəfindən yaradılır.

Ümumi istifadəçi hesabları aşağıdakı xüsusiyyətlərə malikdir:

Adi bir istifadəçi, YARATMA SESSİYASI imtiyazına sahib olduğu hər hansı bir konteynerə (CDB $ ROOT daxil olmaqla) daxil ola bilər.

Ortaq bir istifadəçinin hər qabda eyni imtiyazlara sahib olmaması lazımdır. Məsələn, c ## dba istifadəçisi hrpdb-də və kökdə bir sessiya yaratmaq, lakin salespdb-də bir sessiya yaratmaq üçün bir imtiyaz əldə edə bilər. Müvafiq imtiyazlara sahib olan ümumi bir istifadəçi konteynerlər arasında keçid edə bildiyindən, kökdəki ortaq bir istifadəçi PDB-ləri idarə edə bilər.

Bir tətbiqetmə istifadəçisi, öz tətbiq konteynerindən kənar hər hansı bir konteynerdə CREATE SESSION imtiyazına sahib deyil.

Beləliklə, ümumi bir istifadəçi öz tətbiqi qabı ilə məhdudlaşır. Məsələn, saas_sales tətbiqetməsində yaradılan ümumi tətbiqetmə istifadəçi, yalnız tətbiq kökünə və saas_sales tətbiqetmə qabındakı PDB-lərə qoşula bilər.

İstifadəçi tərəfindən yaradılan CDB ümumi istifadəçilərinin adları digər verilənlər bazası istifadəçiləri üçün adlandırma qaydalarına riayət etməlidir. Əlavə olaraq, adlar COMMON_USER_PREFIX başlanğıc parametri tərəfindən təyin edilmiş, c ## və ya C ## olan işarələrlə başlamalıdır. Oracle tərəfindən verilən ümumi istifadəçi adları və istifadəçi tərəfindən yaradılmış tətbiq olunan ümumi istifadəçi adlarında bu məhdudiyyət yoxdur.

Heç bir yerli istifadəçi adı c ## və ya C ## işarələri ilə başlaya bilməz.

Hər ümumi istifadəçi, yaradıldığı konteynerdəki (sistem konteynerində və ya müəyyən bir tətbiq konteynerində) bütün PDB-lər arasında unikal şəkildə adlanır.

Bir CDB ortaq istifadəçisi CDB kökündə müəyyən edilir, lakin eyni şəxsiyyətə sahib hər PDB ilə əlaqə qurmağı bacarmalıdır. Bir tətbiqetmə istifadəçisi tətbiq kökündə yaşayır və eyni identifikatorla konteynerindəki hər bir PDB tətbiqinə qoşula bilər.

Aşağıdakı şəkildə iki PDB-də nümunə istifadəçilər və sxemlər göstərilir: hrpdb və salespdb. SYS və c ## dba, CDB $ ROOT, hrpdb və salespdb-də şemaları olan CDB-nin ümumi istifadəçiləridir. Yerli istifadəçilər hr və rep hrpdb-də mövcuddur. Yerli istifadəçilər hr və rep də salespdb-də mövcuddur.

Şəkil 4-4 CDB-də istifadəçilər və sxemlər


"CDB-də Şəkil 4-4 İstifadəçiləri və Şemaları" nın təsviri

Ümumi istifadəçi hesabları haqqında məlumat əldə etmək üçün Oracle Database Security Guide

COMMON_USER_PREFIX haqqında məlumat əldə etmək üçün Oracle Database Reference

SYS və SİSTEM Hesabları

Bütün Oracle verilənlər bazaları, inzibati imtiyazlara sahib olan ümumi istifadəçi hesablarını ehtiva edir.

İnzibati hesablar çox imtiyazlıdır və yalnız verilənlər bazasını başlatmaq və dayandırmaq, yaddaş və saxlama idarəsi, verilənlər bazası istifadəçilərini yaratmaq və idarə etmək və s. Kimi işləri yerinə yetirmək üçün səlahiyyətli DBA-lar üçün nəzərdə tutulmuşdur.

Bir verilənlər bazası yaradıldıqda SYS ümumi istifadəçi hesabı avtomatik olaraq yaradılır. Bu hesab bütün verilənlər bazası inzibati funksiyalarını yerinə yetirə bilər. SYS şeması baza cədvəllərini və məlumat lüğətinin görünüşlərini saxlayır. Bu əsas cədvəllər və baxışlar Oracle Database-in işləməsi üçün vacibdir. SYS şemasındakı masalar yalnız verilənlər bazası tərəfindən idarə olunur və heç bir istifadəçi tərəfindən dəyişdirilməməlidir.

SİSTEM inzibati hesabı da verilənlər bazası yaradıldıqda avtomatik olaraq yaradılır. SYSTEM şeması, inzibati məlumatları əks etdirən əlavə cədvəlləri və görünüşləri və müxtəlif Oracle Database seçimləri və alətləri tərəfindən istifadə edilən daxili cədvəlləri və görünüşləri saxlayır. İdarəetməyən istifadəçilər üçün maraqlı olan cədvəlləri saxlamaq üçün heç vaxt SİSTEM şemasından istifadə etməyin.

SYS, SYSTEM və digər inzibati hesabları öyrənmək üçün Oracle Database Administrator’s Guide

Yerli İstifadəçi Hesabları

A yerli istifadəçi ümumi olmayan və yalnız bir PDB daxilində işləyə bilən bir verilənlər bazası istifadəçisidir.

Yerli istifadəçilər aşağıdakı xüsusiyyətlərə malikdirlər:

Yerli istifadəçi PDB-yə xasdır və bu PDB-də bir şemaya sahib ola bilər.

"Ümumi istifadəçilərin xüsusiyyətləri" də göstərilən nümunədə hrpdb-də yerli istifadəçi hr hr şemasına sahibdir. Salespdb-də yerli istifadəçi nümayəndəsi rep şemasına, yerli istifadəçi hr isə hr şemasına sahibdir.

Yerli bir istifadəçi PDB-ni açmaq və bağlamaq da daxil olmaqla idarə edə bilər.

SYSDBA imtiyazları olan ümumi bir istifadəçi yerli bir istifadəçiyə SYSDBA imtiyazları verə bilər. Bu vəziyyətdə, imtiyazlı istifadəçi yerli olaraq qalır.

Bir PDB-dəki yerli istifadəçi başqa bir PDB-yə və ya CDB kökünə daxil ola bilməz.

Məsələn, yerli istifadəçi hr hrpdb-yə qoşulduqda, hr bir verilənlər bazası bağlantısı istifadə etmədən salespdb verilənlər bazasında yerləşən ş sxemindəki obyektlərə daxil ola bilmir. Eyni şəkildə, yerli istifadəçi salespdb PDB-yə qoşulduqda, hr şemasındakı hrpdb-də yerləşən obyektlərə verilənlər bazası bağlantısı istifadə etmədən daxil ola bilmir.

Yerli bir istifadəçinin adı c ## və ya C ## işarələri ilə başlamamalıdır.

Yerli bir istifadəçinin adı yalnız PDB daxilində unikal olmalıdır.

İstifadəçi adı və həmin istifadəçi sxeminin yerləşdiyi PDB misilsiz bir yerli istifadəçi təyin edir. "Ümumi istifadəçilərin xüsusiyyətləri" göstərir ki, yerli istifadəçi və rep adlı şema hrpdb-də mövcuddur. Salespdb PDB-də rep adlı tamamilə müstəqil bir yerli istifadəçi və şema mövcuddur.

Aşağıdakı cədvəldə "Ümumi istifadəçilərin xüsusiyyətləri" ndə CDB ilə bağlı bir ssenari təsvir edilmişdir. Hər sətir əvvəlki sətirdəki hərəkətdən sonra baş verən bir hərəkəti təsvir edir. Ümumi istifadəçi SİSTEMİ iki PDB-də yerli istifadəçilər yaradır.

Cədvəl 4-1 CDB-də Yerli İstifadəçilər

SİSTEM hrpdb xidmət adını istifadə edərək hrpdb konteynerinə qoşulur.

SİSTEM indi yerli bir istifadəçi nümayəndəsi yaradır və bu istifadəçiyə bu PDB-də CREATE SESSION imtiyazını verir. İstifadəçi yerlidir, çünki ümumi istifadəçilər yalnız kökə qoşulmuş ümumi bir istifadəçi tərəfindən yaradıla bilər.

Hrpdb üçün yerli olan rep istifadəçisi salespdb ilə əlaqə qurmağa çalışır. Təyinat PDB salespdb-də olmadığı üçün cəhd uğursuz olur.

SİSTEM, salespdb xidmət adını istifadə edərək salespdb konteynerinə qoşulur.

SİSTEM, salespdb-də yerli istifadəçi nümayəndəsi yaradır və bu istifadəçiyə bu PDB-də CREATE SESSION imtiyazı verir. Yerli bir istifadəçinin adı yalnız öz PDB-də bənzərsiz olduğundan rep adlı bir istifadəçi həm salespdb, həm də hrpdb-də mövcud ola bilər.

Rep istifadəçisi salespdb-də uğurla daxil olur.

Yerli istifadəçi hesablarını öyrənmək üçün Oracle Database Security Guide

Ümumi və Yerli obyektlər

A ümumi obyekt ya CDB kökündə, ya da bir tətbiq kökündə müəyyən edilir və metaməlumatlardan və ya obyekt əlaqələrindən istifadə edilə bilər. Yerli bir obyekt, ümumi bir obyekt olmayan hər bir obyektdir.

Verilənlər bazası ilə təmin edilən ümumi obyektlər CDB $ ROOT-da müəyyən edilir və dəyişdirilə bilməz. Oracle Database, CDB $ ROOT-da ümumi obyektlərin yaradılmasını dəstəkləmir.

Əksər şema obyektlərini, məsələn cədvəllər, baxışlar, PL / SQL və Java proqram bölmələri, ardıcıllıqlar və s. Bir tətbiq kökündəki ümumi obyektlər kimi yarada bilərsiniz. Əgər obyekt bir tətbiq kökündə varsa, ona deyilir tətbiqi ümumi obyekt.

Yerli bir istifadəçi ümumi bir obyektə sahib ola bilər. Ayrıca, ümumi bir istifadəçi yerli bir obyektə sahib ola bilər, ancaq yalnız obyekt məlumatla əlaqəli və ya meta məlumatla əlaqəli olmadıqda və nə metadata bağlantısı, nə də bir məlumat bağlantısı olduqda.

Oracle Database Security Guide ümumi obyektlər üçün imtiyazların idarə edilməsi haqqında daha çox məlumat əldə etmək

Şema obyekt növləri

Oracle SQL, bir çox digər şema obyektləri yaratmağa və idarə etməyə imkan verir.

Şema obyektlərinin əsas növləri aşağıdakı cədvəldə göstərilir.

Cədvəl məlumatları satırda saxlayır. Cədvəllər əlaqəli bir verilənlər bazasında ən vacib şema obyektləridir.

İndekslər cədvəlin və ya cədvəl klasterinin hər bir indeksləşdirilmiş sətri üçün bir giriş olan və satırlara birbaşa, sürətli giriş təmin edən şema obyektləridir. Oracle Database bir neçə növü dəstəkləyir. İndeks tərəfindən təşkil edilmiş bir cədvəl, məlumatların bir indeks quruluşunda saxlanıldığı bir cədvəldir.

Bölmələr böyük cədvəllərin və indekslərin parçalarıdır. Hər bölmənin öz adı var və istəyə görə öz saxlama xüsusiyyətləri ola bilər.

Baxışlar, bir və ya daha çox cədvəldə və ya digər baxışlarda məlumatların fərdi təqdimatlarıdır. Onları saxlanmış sorğular kimi düşünə bilərsiniz. Baxışlar əslində məlumat ehtiva etmir.

Ardıcıllıq, tam say yaratmaq üçün birdən çox istifadəçi tərəfindən paylaşıla bilən istifadəçi tərəfindən yaradılan bir obyektdir. Tipik olaraq, əsas açar dəyərlər yaratmaq üçün ardıcıllıqlardan istifadə edirsiniz.

Ölçü bir sütun dəstinin bütün sütunlarının eyni cədvəldən gəlməsi lazım olan cüt sütun dəstləri arasındakı bir ana və uşaq əlaqəsini müəyyənləşdirir. Ölçülər müştərilər, məhsullar və vaxt kimi məlumatları kateqoriyalara ayırmaq üçün ümumiyyətlə istifadə olunur.

Sinonim başqa bir şema obyektinin bir təxəllüsüdür. Sinonim sadəcə bir təxəllüs olduğundan, məlumat lüğətindəki tərifindən başqa heç bir yaddaş tələb etmir.

PL / SQL alt proqramlar və paketlər

PL / SQL, SQL-in Oracle prosedur uzantısıdır. PL / SQL alt proqramı, bir sıra parametrlərlə çağırıla bilən adlı PL / SQL blokudur. PL / SQL paketi məntiqi olaraq əlaqəli PL / SQL növləri, dəyişənlər və alt proqramları qruplaşdırır.

Digər növ obyektlər də verilənlər bazasında saxlanılır və SQL ifadələri ilə yaradıla və idarə oluna bilər, lakin bir sxemdə yoxdur. Bu obyektlərə verilənlər bazası istifadəçi hesabı, rollar, kontekstlər və lüğət obyektləri daxildir.

Şema obyektlərinin necə idarə olunacağını öyrənmək üçün Oracle Database Administrator’s Guide

Şema obyektləri və verilənlər bazası obyektləri haqqında daha çox məlumat üçün Oracle Database SQL Dil Referansı

Şema obyektinin saxlanması

Bəzi şema obyektləri məlumatları seqment adlanan bir məntiqi saxlama quruluşu növündə saxlayır. Məsələn, bölünməmiş yığın cədvəli və ya indeks seqment yaradır.

Görünüşlər və ardıcıllıqlar kimi digər şema obyektləri yalnız metadatadan ibarətdir. Bu mövzu yalnız seqmentləri olan şema obyektlərini təsvir edir.

Oracle Database, bir şema obyektini məntiqi olaraq bir masa məkanında saxlayır. Şemalar və cədvəl məkanları arasında heç bir əlaqə yoxdur: bir cədvəl məkanı müxtəlif şemalardan olan obyektləri və şemanın obyektləri fərqli cədvəllərdə ola bilər. Hər bir obyektin məlumatları fiziki olaraq bir və ya daha çox məlumat sənədində mövcuddur.

Aşağıdakı şəkil cədvəl və indeks seqmentlərinin, masa boşluqlarının və məlumat sənədlərinin mümkün konfiqurasiyasını göstərir. Bir cədvəl üçün məlumat seqmenti eyni cədvəl məkanının hər iki hissəsi olan iki məlumat faylını əhatə edir. Seqment birdən çox masa boşluğunu əhatə edə bilməz.

Şəkil 4-5 Seqmentlər, masa boşluqları və məlumat sənədləri

Masa məntəqələri və seqmentləri haqqında məlumat əldə etmək üçün "Məntiqi Saxlama Quruluşları"

Şema obyektləri üçün yaddaşın necə idarə olunacağını öyrənmək üçün Oracle Database Administrator’s Guide

Şema obyekt asılılıqları

Bəzi şema obyektləri başqa bir obyektə istinad edərək şema obyektindən asılılıq yaradır.

Məsələn, bir görünüş cədvəllərə və ya baxışlara istinad edən bir sorğu ehtiva edir, PL / SQL alt proqramı digər alt proqramları çağırır. Əgər A obyektinin tərifi B obyektinə istinad edirsə, A B-dən asılı bir obyektdir və B A üçün istinad olunan bir obyektdir.

Oracle Database, asılı bir obyektin istinad olunan obyektlərə görə hər zaman aktual olmasını təmin edən avtomatik bir mexanizm təqdim edir. Asılı bir obyekt yaratdığınız zaman verilənlər bazası asılı obyekt ilə istinad olunan obyektlər arasındakı asılılığı izləyir. İstinad olunan bir obyekt asılı bir obyekti təsir edə biləcək şəkildə dəyişdikdə, verilənlər bazası asılı obyekti etibarsız sayır. Məsələn, bir istifadəçi bir masa atarsa, düşmüş masaya əsaslanan heç bir görünüş istifadə edilə bilməz.

Etibarlı olmayan bir obyekt, asılı obyekt istifadəyə verilməzdən əvvəl istinad edilən bir obyektin yeni tərifinə qarşı yenidən tərtib edilməlidir. Yenidən tərtib avtomatik olaraq etibarsız asılı obyektə istinad edildikdə baş verir.

Şema obyektlərinin necə asılılıq yarada biləcəyinə dair bir nümunə olaraq, aşağıdakı nümunə skript bir test_table cədvəli və sonra bu cədvələ müraciət edən bir prosedur yaradır:

Prosedur test_proc statusunun aşağıdakı sorğusu etibarlı olduğunu göstərir:

Col3 sütunu test_table-a əlavə etdikdən sonra prosedur hələ də qüvvədədir, çünki prosedurun bu sütundan heç bir asılılığı yoxdur:

Bununla birlikdə, test_proc prosedurunun asılı olduğu col1 sütununun məlumat tipinin dəyişdirilməsi proseduru etibarsız sayır:

Proseduru işə salmaq və ya yenidən tərtib etmək aşağıdakı nümunədə göstərildiyi kimi yenidən qüvvədə olur:

Nümunə sxemlər

Oracle verilənlər bazasına daxil ola bilər nümunə sxemləriOracle sənədləri və Oracle təlimat materiallarının ümumi verilənlər bazası tapşırıqlarını göstərməsinə imkan verən bir-birinə bağlı sxemlərin bir sıra.

Hr nümunə şemasında işçilər, şöbələr və yerlər, iş tarixçələri və s. Aşağıdakı illüstrasiya saatdakı cədvəllərin varlıq-əlaqə diaqramını təsvir edir. Bu təlimatda əksər nümunələr bu sxemdəki obyektlərdən istifadə edir.

Nümunə sxemlərin necə qurulacağını öyrənmək üçün Oracle Database Sample Schemas

Cədvəllərə ümumi baxış

Cədvəl, Oracle verilənlər bazasında məlumat təşkilatının əsas vahididir.

Cədvəl bir məlumatı qeyd etməsi lazım olan bir varlığı təsvir edir. Məsələn, işçi bir müəssisə ola bilər.

Oracle Database cədvəlləri aşağıdakı əsas kateqoriyalara bölünür:

Münasibət cədvəlləri sadə sütunlara malikdir və ən çox yayılmış cədvəl növüdür. Nümunə 4-1, əlaqəli bir cədvəl üçün CREATE TABLE ifadəsini göstərir.

Sütunlar bir obyekt növünün ən yüksək səviyyəli atributlarına cavab verir. "Obyekt Cədvəllərinə Baxış" a baxın.

Aşağıdakı təşkilati xüsusiyyətlərə malik bir əlaqəli cədvəl yarada bilərsiniz:

Yığıncaqlı bir masa satırları hər hansı bir qaydada saxlamır. CREATE TABLE ifadəsi varsayılan olaraq bir yığın təşkil edilmiş masa yaradır.

İndeks tərəfindən təşkil olunmuş cədvəl, əsas açar dəyərlərə görə satır sifariş edir. Bəzi tətbiqetmələr üçün indekslə düzəldilmiş cədvəllər performansı artırır və disk yerini daha səmərəli istifadə edir. "İndeksin təşkil etdiyi cədvəllərə baxış" a baxın.

Xarici cədvəl metadatası verilənlər bazasında saxlanılan, ancaq məlumat bazasından kənarda saxlanılan yalnız oxunan bir cədvəldir. "Xarici Cədvəllərə Baxış" a baxın.

Cədvəl ya qalıcıdır, ya da müvəqqəti. Daimi bir cədvəl tərifi və məlumatlar sessiyalarda davam edir. Müvəqqəti bir cədvəl tərifi qalıcı bir cədvəl tərifi ilə eyni şəkildə davam edir, lakin məlumatlar yalnız bir əməliyyat və ya sessiya müddəti ərzində mövcuddur. Müvəqqəti cədvəllər bir nəticə dəstinin müvəqqəti saxlanılması lazım olan tətbiqetmələrdə faydalıdır, bəlkə də nəticə birdən çox əməliyyat apararaq qurulur.

Bu mövzu aşağıdakı mövzuları ehtiva edir:

Sütunlar

Cədvəl tərifinə cədvəl adı və sütun dəsti daxildir.

Bir sütun, cədvəldə təsvir olunan varlığın bir atributunu müəyyənləşdirir. Məsələn, işçilər cədvəlindəki staff_id sütunu işçi müəssisəsinin işçi şəxsiyyəti xüsusiyyətinə istinad edir.

Ümumiyyətlə, bir masa yaratdığınız zaman hər sütuna bir sütun adı, bir məlumat növü və bir genişlik verirsiniz. Məsələn, staff_id üçün məlumat növü NUMBER (6), bu sütunun yalnız eni 6 rəqəmə qədər ədədi məlumat ehtiva edə biləcəyini göstərir. DATE tarixində olduğu kimi genişlik məlumat növü ilə əvvəlcədən təyin edilə bilər.

Virtual Sütunlar

Cədvəldə a ola bilər virtual sütun, qeyri-adi bir sütundan fərqli olaraq disk sahəsi istehlak etmir.

Verilənlər bazası, istifadəçinin təyin etdiyi bir sıra ifadələr və ya funksiyalar hesablayaraq tələblərə görə virtual bir sütundakı dəyərləri əldə edir. Məsələn, virtual sütun gəliri əmək haqqı və komissiya_pct sütunlarının funksiyası ola bilər.

Virtual sütunları necə idarə edəcəyinizi öyrənmək üçün Oracle Database Administrator’s Guide

Görünməz Sütunlar

Görünməz sütun, istifadəçi tərəfindən göstərilən bir sütundur, dəyərləri yalnız sütunun adı açıq şəkildə göstərildiyi zaman görünür. Mövcud tətbiqetmələrə təsir etmədən bir masaya görünməz bir sütun əlavə edə bilərsiniz və lazım olduqda sütunu görünən edə bilərsiniz.

Ümumiyyətlə, görünməz sütunlar köçürməyə və onlayn tətbiqetmələrin inkişafına kömək edir. İstifadəsi bir SELECT * ifadəsi ilə üç sütunlu bir cədvəl soruşan bir tətbiq ola bilər. Cədvələ dördüncü bir sütun əlavə etmək, üç sütunlu məlumat gözləyən tətbiqi pozacaq. Dördüncü görünməz bir sütun əlavə etmək tətbiqi normal işlədir. Daha sonra bir geliştirici, dördüncü bir sütunu idarə etmək üçün tətbiqi dəyişdirə bilər və tətbiq canlı olduqda sütunu görünə bilər.

Aşağıdakı nümunə görünməyən sütun sayına malik bir masa məhsulları yaradır və sonra görünməz sütunu görünən edir:

Görünməyən sütunları necə idarə edəcəyinizi öyrənmək üçün Oracle Database Administrator’s Guide

Görünməyən sütunlar haqqında daha çox məlumat üçün Oracle Database SQL Dil Referansı

Sətir cədvəldəki bir qeydə uyğun sütun məlumat toplusudur.

Məsələn, işçilər cədvəlindəki bir sıra müəyyən bir işçinin xüsusiyyətlərini təsvir edir: işçi şəxsiyyəti, soyadı, adı və s. Cədvəl yaratdıqdan sonra SQL istifadə edərək sətirlər daxil edə, sorğu edə, silə və yeniləyə bilərsiniz.

Nümunə: CƏDVƏL YARATIN və CƏDVƏL DƏYİŞMƏSİNİ Dəyişdirin

Cədvəl yaratmaq üçün Oracle SQL ifadəsi CƏDVƏL YARATDIR.

Nümunə 4-1 CƏDVƏL işçiləri YARATIN

Aşağıdakı nümunə hr nümunə şemasındakı işçilər cədvəli üçün CREATE TABLE ifadəsini göstərir. Bəyanatda, hər bir sütun üçün NUMBER və ya DATE kimi bir məlumat növü göstərilərək, işçi kodu, ad_adımı və s. Kimi sütunlar göstərilir.

Nümunə 4-2 ALTER TABLE işçiləri

Aşağıdakı misal, işçilər cədvəlinə bütövlük məhdudiyyətləri əlavə edən bir Dəyişdirmə TABLE ifadəsini göstərir. Dürüstlük məhdudiyyətləri iş qaydalarını tətbiq edir və etibarsız məlumatların cədvəllərə daxil olmasının qarşısını alır.

Nümunə İşçilərdəki Cədvəl 4-3 Cədvəl

Aşağıdakı nümunə çıxışı hr.employees cədvəlinin 8 satırını və 6 sütunu göstərir.

Əvvəlki nəticə cədvəllərin, sütunların və sətirlərin aşağıdakı vacib xüsusiyyətlərindən bəzilərini göstərir:

Cədvəlin bir sıra bir işçinin xüsusiyyətlərini təsvir edir: ad, əmək haqqı, şöbə və s. Məsələn, çıxışdakı ilk sırada Steven King adlı işçi üçün qeyd göstərilir.

Bir sütunda işçinin bir xüsusiyyəti təsvir olunur. Nümunədə, işçi_id sütunu birincil açardır, yəni hər bir işçinin işçi identifikatoru ilə unikal şəkildə tanınması deməkdir. Hər iki işçinin eyni işçi şəxsiyyət vəsiqəsinə sahib olmaması təmin edilir.

Açar olmayan bir sütunda eyni dəyərləri olan sətirlər ola bilər. Nümunədə 101 və 102 nömrəli işçilər üçün əmək haqqı eynidir: 17000.

Xarici açar sütunu eyni cədvəldəki və ya fərqli bir cədvəldəki birincil və ya bənzərsiz bir açara aiddir. Bu nümunədə, şöbə_idindəki 90 dəyəri bölmə cədvəlinin şöbə_id sütununa uyğundur.

Sahə bir sətir və sütunun kəsişməsidir. Yalnız bir dəyər ehtiva edə bilər. Məsələn, 103 işçinin şöbə kimliyi üçün sahə 60 dəyərini ehtiva edir.

Bir sahə bir dəyərdən məhrum ola bilər. Bu vəziyyətdə, sahənin sıfır dəyəri olduğu deyilir. İşçi 100 üçün komissiya_pct sütununun dəyəri sıfırdır, 149 işçi üçün sahədəki dəyər .2. Bu sütunda NOT NULL və ya əsas açar bütövlüyünün məhdudlaşdırılması müəyyən edilmədikdə, sütun boşlara imkan verir, bu halda bu sütun üçün dəyər olmadan heç bir sətir daxil edilə bilməz.

CƏDVƏL CƏDVƏLİ sintaksis və semantikası üçün Oracle Database SQL Dil Referansı

Oracle Məlumat növləri

Hər sütunda a məlumat növü, müəyyən bir saxlama formatı, məhdudiyyətlər və etibarlı dəyərlər aralığı ilə əlaqələndirilir. Bir dəyərin məlumat növü sabit xüsusiyyətlər dəstini dəyərlə əlaqələndirir.

Bu xüsusiyyətlər Oracle Database-in bir məlumat növünün dəyərlərini digərinin dəyərlərindən fərqli şəkildə qiymətləndirməsinə səbəb olur. Məsələn, RAW məlumat növünün dəyərlərini deyil, SAYI məlumat növünün dəyərlərini çoxaltmaq olar.

Cədvəl yaratdıqda, hər sütun üçün bir məlumat növü göstərməlisiniz. Daha sonra bir sütuna daxil edilmiş hər bir dəyər sütun məlumat növünü qəbul edir.

Oracle Database bir neçə daxili məlumat növü təmin edir. Ən çox istifadə olunan məlumat növləri aşağıdakı kateqoriyalara bölünür:

Yerləşdirilmiş növlərin digər vacib kateqoriyalarına xam, böyük obyektlər (LOB) və kolleksiyalar daxildir. PL / SQL, sabit və dəyişənlər üçün BOOLEAN, istinad növləri, kompozit növlər (qeydlər) və istifadəçi tərəfindən müəyyən edilmiş tipləri əhatə edən məlumat növlərinə malikdir.

Daxili SQL məlumat növlərini öyrənmək üçün Oracle Database SQL Dil Referansı

Daxili məlumat növlərindən necə istifadə edəcəyinizi öyrənmək üçün Oracle Database Development Guide

Xarakter məlumatları növləri

Xarakter məlumat növləri sətirlərdə alfasayısal məlumatları saxlayır. Ən çox yayılmış simvol məlumat növü, VARCHAR2-dir ki, bu da xarakter məlumatlarının saxlanması üçün ən səmərəli seçimdir.

Bayt dəyərləri ümumiyyətlə simvol dəsti adlanan simvol kodlama sxeminə uyğundur. Verilənlər bazası xarakter dəsti verilənlər bazası yaradarkən qurulur. Xarakter dəstlərinin nümunələri 7 bitlik ASCII, EBCDIC və Unicode UTF-8dir.

Xarakter məlumat növlərinin uzunluq semantikası bayt və ya simvolla ölçülür. Simlərin bayt ardıcıllığı kimi işlənməsinə bayt semantikası deyilir. Bu, xarakter məlumat növləri üçün standartdır. Simlərin ardıcıllığı kimi simlərin işlənməsi simvol semantikası adlanır. Xarakter verilənlər bazası simvol dəstinin kod nöqtəsidir.

Məlumat növlərinə qısa bir giriş üçün Oracle Database 2 Gün Geliştirici Kılavuzu

Bir xarakter məlumat növü seçməyi öyrənmək üçün Oracle Database Development Guide

VARCHAR2 və CHAR Məlumat Növləri

Məsələn, 'LILA', 'St. George Island 'və' 101 '5001 sayısal bir hərfdir. Xarakter ədəbiyyatı tək tırnak işarələrinə əlavə olunur ki, verilənlər bazası onları şema obyekt adlarından fərqləndirsin.

Bu təlimatda mətn hərfi, simvol hərfi və simli ifadələri bir-birinin əvəzinə istifadə olunur.

VARCHAR2 sütunlu bir cədvəl yaratdıqda, maksimum sətir uzunluğunu təyin edirsiniz. Nümunə 4-1-də, last_name sütununda VARCHAR2 (25) bir məlumat növü mövcuddur ki, bu da sütunda saxlanılan hər hansı bir adın maksimum 25 bayta sahib olması deməkdir.

Hər bir sıra üçün Oracle Database, qiymət maksimum uzunluğu aşmadığı təqdirdə sütundakı hər bir dəyəri dəyişən uzunluqlu bir sahə kimi saxlayır və bu halda verilənlər bazası bir səhv qaytarır. Məsələn, bir baytlıq simvol dəstində bir ardıcılda son_adiq sütun dəyəri üçün 10 simvol daxil etsəniz, satır hissəsindəki sütun 25 deyil, yalnız 10 simvol (10 bayt) saxlayır. VARCHAR2 istifadə edərək yer istehlakını azaldır.

VARCHAR2-dən fərqli olaraq, CHAR sabit uzunluqlu simli simləri saxlayır. CHAR sütunu olan bir cədvəl yaratdığınız zaman sütun bir sətir uzunluğu tələb edir. Varsayılan 1 baytdır. Verilənlər bazası göstərilən uzunluğu doldurmaq üçün boşluqlardan istifadə edir.

Oracle Database, əlavə olmayan müqayisə semantikasından istifadə edərək VARCHAR2 dəyərlərini müqayisə edir və boş yastıqlı müqayisə semantikasından istifadə edərək CHAR dəyərlərini müqayisə edir.

Boş yastıqlı və yastıqsız müqayisə semantikası haqqında ətraflı məlumat üçün Oracle Database SQL Dil Referansı

NCHAR və NVARCHAR2 Məlumat Növləri

Unicode, bir simvol dəsti istifadə edərək istənilən dildə məlumat saxlaya bilən universal kodlanmış bir simvol dəstidir. NCHAR, milli simvol dəstinə uyğun sabit uzunluqlu simli, NVARCHAR2 isə dəyişkən uzunluqlu simli simləri saxlayır.

Verilənlər bazası yaradarkən milli bir xarakter dəsti təyin edirsiniz. NCHAR və NVARCHAR2 məlumat növlərinin simvol dəsti ya AL16UTF16 ya da UTF8 olmalıdır. Hər iki simvol dəsti də Unicode kodlamasından istifadə edir.

NCHAR və ya NVARCHAR2 sütunlu bir cədvəl yaratdığınız zaman maksimum ölçü həmişə simvol uzunluğunun semantikasında olur. Simvol uzunluğu semantikası, NCHAR və ya NVARCHAR2 üçün standart və yeganə uzunluq semantikasıdır.

Oracle'ın qloballaşma dəstək xüsusiyyəti haqqında məlumat üçün Oracle Database Qloballaşma Dəstək Bələdçisi

Rəqəmsal Məlumat növləri

Oracle Database ədədi məlumat növləri sabit və üzən nöqtələri, sıfır və sonsuzluğu saxlayır. Bəzi sayısal növlər, bir əməliyyatın təyin olunmamış nəticəsi olan "rəqəm deyil" və ya NaN kimi tanınan dəyərləri də saxlayır.

Oracle Database ədədi məlumatları dəyişkən uzunluq formatında saxlayır. Hər bir dəyər, göstəricini saxlamaq üçün istifadə olunan 1 baytla elmi qeydlərdə saxlanılır. Verilənlər bazası, üzən nöqtə sayının əhəmiyyətli rəqəmlərini ehtiva edən hissəsi olan mantissanı saxlamaq üçün 20 bayta qədər istifadə edir. Oracle Database aparıcı və arxada sıfırları saxlamır.

SAYI Məlumat növü

SAYI məlumat növü sabit və üzən nöqtələri saxlayır. Verilənlər bazası demək olar ki, hər hansı bir böyüklükdə nömrələri saxlaya bilər. Bu məlumatların Oracle Database ilə işləyən müxtəlif əməliyyat sistemləri arasında portativ olmasına zəmanət verilir. Sayısal məlumatları saxlamalı olduğunuz əksər hallarda SAYI məlumat növü tövsiyə olunur.

NUMBER (p, s) şəklində sabit nöqtə nömrəsini təyin edirsiniz, burada p və s aşağıdakı xüsusiyyətlərə aiddir:

Dəqiqlik rəqəmlərin ümumi sayını göstərir. Bir dəqiqlik göstərilməyibsə, sütun dəyərləri tətbiqetmə ilə tam olaraq yuvarlaqlaşdırmadan saxlayır.

Tərəzi onluq nöqtədən ən kiçik rəqəmə qədər rəqəmlərin sayını müəyyənləşdirir. Pozitiv miqyas, onluq nöqtənin sağındakı rəqəmləri ən az rəqəmə qədər daxil olmaqla sayır. Mənfi miqyas, onluq nöqtənin solundakı rəqəmləri ən az rəqəm daxil olmaqla sayar. SAYI (6) da olduğu kimi bir tərəzi olmadan bir dəqiqlik təyin etsəniz, miqyas 0-dır.

Nümunə 4-1-də əmək haqqı sütunu SAYI (8,2) növüdür, beləliklə dəqiqlik 8 və tərəzi 2-dir. Beləliklə, verilənlər bazası 100000 maaşını 100000.00 olaraq saxlayır.

Üzən nöqtəli nömrələr

Oracle Database, yalnız üzən nöqtəli nömrələr üçün iki ədədi məlumat növü təmin edir: BINARY_FLOAT və BINARY_DOUBLE.

Bu növlər SAYI məlumat növü tərəfindən təmin edilən bütün əsas funksiyaları dəstəkləyir. Bununla birlikdə, NUMBER ədədi ondalık dəqiqliyi istifadə etdiyi halda, BINARY_FLOAT və BINARY_DOUBLE ikili dəqiqliyi istifadə edir ki, bu da daha sürətli hesablama imkanlarını verir və ümumiyyətlə saxlama tələblərini azaldır.

BINARY_FLOAT və BINARY_DOUBLE təxmini ədədi məlumat tipləridir. Dəqiq təsvirlərdən çox, ondalık dəyərlərin təxmini təsvirlərini saxlayırlar. Məsələn, 0.1 dəyəri BINARY_DOUBLE ya da BINARY_FLOAT ilə tam şəkildə təmsil edilə bilməz. Bunlardan tez-tez elmi hesablamalar üçün istifadə olunur. Onların davranışları Java və XMLSchema-dakı FLOAT və DOUBLE məlumat tiplərinə bənzəyir.

Rəqəmsal növlərin dəqiqliyini, miqyasını və digər xüsusiyyətlərini öyrənmək üçün Oracle Database SQL Dil Referansı

Datetime Data növləri

Datetime məlumat növləri DATE və TIMESTAMP-dir. Oracle Database, vaxt damğaları üçün hərtərəfli bir saat qurşağı dəstəyi təmin edir.

TARİX Məlumat növü

DATE məlumat növü tarix və saatı saxlayır. Vaxt vaxtları simvol və ya rəqəm məlumat növlərində təmsil oluna bilsə də, DATE xüsusi əlaqəli xüsusiyyətlərə malikdir.

Verilənlər bazası tarixləri rəqəm olaraq saxlayır. Tarixlər əsr, il, ay, gün, saat, dəqiqə və saniyəyə uyğun olaraq hər biri 7 baytlıq sabit uzunluqlu sahələrdə saxlanılır.

Tarixlər hesab əməllərini tam dəstəkləyir, belə ki tarixlərə bacardığınız qədər tarixləri əlavə edir və çıxartırsınız.

Verilənlər bazası göstərilən format modelinə görə tarixləri göstərir. Format modeli, bir simvol sətrində bir datetime formatını təsvir edən bir simvol hərfidir. Standart tarix formatı, tarixləri 01-JAN-11 şəklində göstərən DD-MON-RR-dir.

RR YY-yə bənzəyir (ilin son iki rəqəmi), lakin qaytarma dəyərinin əsri göstərilən iki rəqəmli ilə və cari ilin son iki rəqəminə görə dəyişir. 1999-cu ildə verilənlər bazasında 01-JAN-11 göstərildiyini düşünək. Tarix formatı RR istifadə edirsə, 11-i 2011-i, format YY-ni istifadə edirsə, 11-i 1911-i təyin edir. Varsayılan tarix formatını həm verilənlər bazası nümunəsində, həm də sessiya səviyyəsində dəyişə bilərsiniz.

Oracle Database vaxtı 24 saat formatında saxlayır - HH: MI: SS. Zaman hissəsi daxil edilmirsə, tarix sahəsindəki vaxt varsayılan olaraq 00:00:00 AM'dir. Yalnız vaxt daxiletməsində tarix bölməsi cari ayın ilk gününə borcludur.

Əsrlər və tarix formatı maskaları haqqında daha çox məlumat üçün Oracle Database Development Guide

Datetime format kodları haqqında məlumat üçün Oracle Database SQL Dil Referansı

Datetime məlumat növləri ilə hesab əməliyyatlarının necə aparılacağını öyrənmək üçün Oracle Database Development Guide

TIMESTAMP Məlumat Növü

TIMESTAMP məlumat növü, DATE məlumat növünün uzantısıdır.

TIMESTAMP, DATE məlumat tipində saxlanılan məlumatlara əlavə olaraq kəsri saniyələri də saxlayır. TIMESTAMP məlumat növü hadisə sırasını izləməsi lazım olan tətbiqetmələrdə olduğu kimi dəqiq zaman dəyərlərini saxlamaq üçün faydalıdır.

VAXT ZAMANI ZAMANI İLƏ TİMESTAMP və YERLİ ZAMAN ZAMANI TIMESTAMP məlumat növləri saat qurşağından xəbərdardır. Bir istifadəçi məlumatları seçdikdə, dəyər istifadəçi seansının saat qurşağına uyğunlaşdırılır. Bu məlumat növü coğrafi bölgələr üzrə tarix məlumatlarının toplanması və qiymətləndirilməsi üçün faydalıdır.

Oracle Database SQL Dil Referansı, vaxt möhürü sütunlarında məlumatların yaradılması və daxil edilməsi sintaksisinə dair ətraflı məlumat üçün

Düz məlumat növləri

Verilənlər bazasında saxlanılan hər bir sətrin bir ünvanı var. Oracle Database verilənlər bazasında hər sətrin ünvanını (satır) saxlamaq üçün ROWID məlumat tipindən istifadə edir.

Sıra aşağıdakı kateqoriyalara bölünür:

Fiziki cərəyanlar sıraların ünvanlarını yığın düzülmüş cədvəllərdə, masa qruplarında və masa və indeks bölmələrində saxlayır.

Mantıksız cərgə cərgələrinin adreslərini indekslə düzülmüş cədvəllərdə saxlayır.

Xarici cərgələr, xarici cədvəllərdəki bir identifikatordur, məsələn, bir keçiddən daxil olan DB2 masaları. Bunlar standart Oracle Database satırları deyil.

Universal satır və ya urowid adlanan bir məlumat növü, bütün növ satırları dəstəkləyir.

Rowids istifadəsi

Ən çox yayılmış növ olan B ağacının indeksi, aralıqlara bölünmüş düymələrin sıralanmış siyahısını ehtiva edir. Hər düymə, sürətli giriş üçün əlaqəli sətrin ünvanını göstərən bir sıra ilə əlaqələndirilir.

Son istifadəçilər və tətbiqetmə inkişaf etdiriciləri bir sıra vacib funksiyalar üçün sıra istifadə edə bilərlər:

Sətirlər xüsusi sətirlərə daxil olmaq üçün ən sürətli vasitədir.

Rowids bir masanın necə təşkil edildiyini görmək imkanı verir.

Sətirlər müəyyən bir cədvəldəki sətirlər üçün unikal identifikatorlardır.

ROWID məlumat növündən istifadə edərək müəyyənləşdirilmiş sütunlu cədvəllər də yarada bilərsiniz. Məsələn, bütövlük məhdudiyyətlərini pozan satır satırlarını saxlamaq üçün ROWID tipli bir məlumat sütunu ilə bir istisna cədvəli təyin edə bilərsiniz. ROWID məlumat növündən istifadə edərək müəyyənləşdirilmiş sütunlar digər cədvəl sütunları kimi davranır: dəyərlər yenilənə bilər və s.

ROWID Pseudocolumn

Oracle verilənlər bazasındakı hər cədvəldə ROWID adlı bir pseudocolumn var.

Pseudocolumn bir masa sütunu kimi davranır, ancaq cədvəldə saxlanmır. Pseudocolumns arasından seçim edə bilərsiniz, ancaq dəyərlərini daxil edə, yeniləyə və ya silə bilməzsiniz. Pseudocolumn da mübahisəsiz SQL funksiyasına bənzəyir. Mübahisəsiz funksiyalar adətən nəticə dəstindəki hər sətir üçün eyni dəyəri, pseudocolumns isə adətən hər sətir üçün fərqli bir dəyər qaytarır.

ROWID yalançı sütununun dəyərləri hər sətrin ünvanını təmsil edən sətirlərdir. Bu sətirlər ROWID məlumat tipinə malikdir. Bu pseudocolumn SELECT və ya DESCRIBE yazaraq bir cədvəlin strukturunu sadalayarkən aydın deyil və ya pseudocolumn yer istehlak etmir. Bununla birlikdə, hər bir satırın sıra xadimi, sütun adı kimi ayrılmış ROWID sözündən istifadə edərək bir SQL sorğusu ilə əldə edilə bilər.

Aşağıdakı nümunə, işçi cədvəlində işçilər cədvəlindəki sətir sətirini göstərmək üçün ROWID pseudocolumn-a sual verir:

Satırları ünvana görə necə təyin etməyi öyrənmək üçün Oracle Database Development Guide

Modelləri və Məlumat növlərini formatlaşdırın

Format modeli, bir simvol sətrində saxlanılan datetime və ya ədədi məlumatların formatını təsvir edən bir simvol hərfidir. Bir format modeli verilənlər bazasındakı dəyərin daxili təqdimatını dəyişdirmir.

Bir simvol sətrini tarixə və ya nömrəyə çevirdiyiniz zaman format modeli verilənlər bazasının sətri necə şərh etdiyini təyin edir. SQL-də, verilənlər bazasından qaytarılacaq bir dəyəri formatlaşdırmaq və ya verilənlər bazasında saxlanacaq bir dəyəri formatlamaq üçün TO_CHAR və TO_DATE funksiyalarının arqumenti kimi bir format modelindən istifadə edə bilərsiniz.

Aşağıdakı açıqlamada 80 saylı şöbədəki işçilərin maaşları seçilir və bu maaşları '$ 99,990.99' rəqəm formatı modeli tərəfindən göstərilən formatla xarakter dəyərlərinə çevirmək üçün TO_CHAR funksiyası istifadə olunur:

Aşağıdakı nümunə, '1998 05 20' simvolunu DATE dəyərinə çevirmək üçün 'YYYY MM DD' format maskası ilə TO_DATE funksiyasından istifadə edərək işə götürmə tarixini yeniləyir:

Dürüstlük məhdudiyyətləri

Bir bütövlük məhdudluğu cədvəldəki bir və ya daha çox sütun üçün dəyərləri məhdudlaşdıran adlanan bir qayda.

Məlumat bütövlüyü qaydaları cədvəllərə etibarsız məlumat girişinin qarşısını alır. Ayrıca, məhdudiyyətlər müəyyən asılılıqlar olduqda bir cədvəlin silinməsinin qarşısını ala bilər.

Bir məhdudiyyət effektivdirsə, verilənlər bazası məlumatları daxil edildikdə və ya yeniləndikdə yoxlayır. Oracle Database, məhdudiyyətə uyğun olmayan məlumatların daxil olmasının qarşısını alır. Bir məhdudiyyət aradan qaldırılıbsa, Oracle Database məhdudiyyətə uyğun olmayan məlumatların verilənlər bazasına daxil olmasına imkan verir.

Nümunə 4-1-də CREATE TABLE ifadəsi last_name, e-poçt, hire_date və job_id sütunları üçün NOT NULL məhdudiyyətlərini təyin edir. Məhdudlaşdırma müddəaları məhdudiyyətin sütunlarını və şərtlərini müəyyənləşdirir. Bu məhdudiyyətlər göstərilən sütunlarda sıfır dəyərin olmamasını təmin edir. Məsələn, iş vərəqəsi olmadan yeni bir işçi əlavə etmək cəhdi bir səhv meydana gətirir.

Bir cədvəl yaratdıqda və ya sonra bir məhdudiyyət yarada bilərsiniz. Lazım gələrsə məhdudiyyətləri müvəqqəti olaraq söndürə bilərsiniz. Verilənlər bazası məhdudiyyətləri məlumat lüğətində saxlayır.

Bütünlük məhdudiyyətlərini öyrənmək üçün "Məlumatların Bütünlüyü"

Məlumat lüğəti haqqında məlumat əldə etmək üçün "Məlumat Lüğətinə Baxış"

SQL məhdudlaşdırıcı maddələrini öyrənmək üçün Oracle Database SQL Dil Referansı

Cədvəl Saxlama

Oracle Database a istifadə edir məlumat seqmenti masa məlumatlarını saxlamaq üçün bir masa boşluğunda.

Bir seqment, məlumat bloklarından ibarət olan ölçüləri ehtiva edir. Bir cədvəl üçün məlumat seqmenti (və ya bir masa klasteri üçün bir çoxluq məlumat seqmenti) ya cədvəl sahibinin standart cədvəlində, ya da CREATE TABLE ifadəsində adlanan bir cədvəldə yerləşir.

Seqment növləri və necə yaradıldıqlarını öyrənmək üçün "İstifadəçi seqmentləri"

Cədvəl Təşkilatı

Varsayılan olaraq, bir masa bir yığın şəklində təşkil edilir, yəni verilənlər bazası satırları istifadəçi tərəfindən müəyyən edilmiş bir sıraya deyil, daha çox uyğun olduğu yerlərə yerləşdirir. Beləliklə, yığın şəklində düzülmüş bir masa sıralanmamış bir sıra toplusudur.

İndeks tərəfindən təşkil edilən masalar fərqli bir təşkilat prinsipindən istifadə edir.

İstifadəçilər satırlar əlavə etdikdə, verilənlər bazası satırları məlumat seqmentindəki ilk mövcud boş yerə yerləşdirir. Sətirlərin daxil edildiyi qaydada alınmasına zəmanət verilmir.

Hr.departments cədvəli yığıncaqlı bir masadır. Bölmə kimliyi, adı, menecer kimliyi və yer kimliyi üçün sütunlara malikdir. Satırlar daxil edildikdə, verilənlər bazası onları uyğun olduqları yerdə saxlayır. Cədvəl seqmentindəki bir məlumat bloku aşağıdakı nümunədə göstərilən sıralanmamış sətirlərdən ibarət ola bilər:

Sütun sırası cədvəldəki bütün satırlar üçün eynidır. Verilənlər bazası sütunları CREATE TABLE ifadəsində sadalandıqları sırada saxlayır, lakin bu sifariş təmin olunmur. Məsələn, cədvəldə LONG tipli bir sütun varsa, Oracle Database bu sütunu həmişə satırda son saxlayır. Bir cədvələ yeni bir sütun əlavə etsəniz, yeni sütun saxlanılan son sütuna çevrilir.

Cədvəldə normal sütunlardan fərqli olaraq diskdə yer istehlak etməyən virtual bir sütun ola bilər. Verilənlər bazası, istifadəçinin təyin etdiyi bir sıra ifadələr və ya funksiyalar hesablayaraq tələblərə görə virtual bir sütundakı dəyərləri əldə edir. Virtual sütunları indeksləşdirə, onlarda statistika toplaya və bütövlük üçün məhdudiyyətlər yarada bilərsiniz. Beləliklə, virtual sütunlar qeyri-adi sütunlara çox oxşayır.

Sıra Yaddaş

Verilənlər bazası satırları məlumat bloklarında saxlayır. 256 sütundan az olan məlumatları ehtiva edən bir cədvəlin hər sətri bir və ya daha çox sətir hissəsindədir.

Mümkünsə, Oracle Database hər sətri bir sətir parçası kimi saxlayır. Lakin, bütün satır məlumatları tək bir məlumat blokuna daxil edilə bilmirsə və ya mövcud bir sətirdə bir yeniləmə sətrin öz məlumat blokundan artıq olmasına səbəb olarsa, verilənlər bazası birdən çox sətir parçasından istifadə edərək sətri saxlayır.

Cədvəl klasterindəki sətirlər qruplaşdırılmamış cədvəllərdəki sətirlərlə eyni məlumatları ehtiva edir. Əlavə olaraq, bir masa klasterindəki satırlar aid olduqları klaster düyməsinə istinad edən məlumatları ehtiva edir.

Bir məlumat blokunun tərkib hissələrini öyrənmək üçün "Məlumat Bloku Formatı"

Sıra Ədədləri

A qarmaqarışıq səmərəli bir satırın 10 baytlıq fiziki ünvanıdır.

Yığıncaqlı bir cədvəldəki hər sətir, cədvəlin fiziki ünvanına uyğun olan bu cədvəl üçün xas olan bir cərgəyə malikdir. Cədvəl qrupları üçün eyni məlumat blokundakı müxtəlif cədvəllərdəki sətirlər eyni sətir aralığına sahib ola bilər.

Oracle Database, indekslərin qurulması üçün sıra içərisindən istifadə edir. Məsələn, B-ağac indeksindəki hər bir düymə, sürətli giriş üçün əlaqəli sətrin ünvanını göstərən bir sıra ilə əlaqələndirilir. Fiziki cərəyanlar, cədvəl sətirinə mümkün qədər sürətli çıxışı təmin edir və verilənlər bazasını bir I / O qədər az bir sıra əldə etməyə imkan verir.

Bir sıra növünün quruluşunu öyrənmək üçün "Rowid Format"

B ağacının indekslərinin növləri və quruluşu haqqında məlumat əldə etmək üçün "B-Ağac İndekslərinə Baxış"

Boş dəyərlərin saxlanması

Sıfır bir sütunda bir dəyərin olmamasıdır. Boşluqlar itkin, bilinməyən və ya tətbiq edilə bilməyən məlumatları göstərir.

Boşluqlar məlumat dəyərləri olan sütunlar arasında düşərsə verilənlər bazasında saxlanılır. Bu hallarda sütunun uzunluğunu (sıfır) saxlamaq üçün 1 bayt tələb olunur. Ardıcıl boşluqları arxada saxlamağa ehtiyac yoxdur, çünki yeni bir sətir başlığı əvvəlki sətirdə qalan sütunların sıfır olduğuna işarə edir. Məsələn, cədvəlin son üç sütunu sıfırsa, bu sütunlar üçün heç bir məlumat saxlanılmır.

Cədvəl Sıkıştırma

Verilənlər bazası, cədvəl üçün tələb olunan saxlama miqdarını azaltmaq üçün cədvəl sıxılma istifadə edə bilər.

Sıxılma diskdə yer saxlayır, verilənlər bazası bufer yaddaşında yaddaş istifadəsini azaldır və bəzi hallarda sorğunun icrasını sürətləndirir. Cədvəl sıxılma verilənlər bazası tətbiqləri üçün şəffafdır.

Əsas Cədvəl Sıkıştırması və Qabaqcıl Sıra Sıxışması

Lüğətə əsaslanan cədvəl sıxılma, yığın təşkil edilmiş cədvəllər üçün yaxşı sıxılma nisbətləri təmin edir.

Oracle Database aşağıdakı lüğətə əsaslanan cədvəl sıxılma növlərini dəstəkləyir:

Bu tip sıxılma toplu yük əməliyyatları üçün nəzərdə tutulub. Verilənlər bazası ənənəvi DML istifadə edərək dəyişdirilmiş məlumatları sıxmır. Doğrudan yol INSERT əməliyyatları, Dəyişdirmə TABLE istifadə etməlisiniz. . . Hərəkət əməliyyatları və ya əsas masanın sıxılmasına nail olmaq üçün onlayn masa yenidən təyin edilməsi.

Bu tip sıxılma OLTP tətbiqetmələri üçün nəzərdə tutulub və istənilən SQL əməliyyatı ilə idarə olunan məlumatları sıxır. Verilənlər bazası, tətbiqin sıxılmamış cədvəldə DML ilə eyni vaxtda DML yerinə yetirməsini təmin edərkən rəqabətli bir sıxılma nisbətinə nail olur.

Əvvəlki sıxılma növləri üçün verilənlər bazası sıxılmış satırları sıra əsas formatında saxlayır. Bir sətrin bütün sütunları birlikdə saxlanılır, sonra növbəti sətrin bütün sütunları və s. Verilənlər bazası təkrarlanan dəyərləri blokun əvvəlində saxlanılan bir simvol cədvəlinə qısa bir istinad ilə əvəz edir. Beləliklə, verilənlər bazasının sıxılmamış məlumatları yenidən yaratması üçün lazım olan məlumatlar məlumat blokunun özündə saxlanılır.

Sıxılmış məlumat blokları normal məlumatlar bloklarına bənzəyir. Adi məlumat blokları üzərində işləyən əksər verilənlər bazası xüsusiyyətləri və funksiyaları sıxılmış bloklarda da işləyir.

Sıxılmağı masa, masa, bölmə və ya alt hissə səviyyəsində elan edə bilərsiniz. Cədvəl sahəsi səviyyəsində göstərildiyi təqdirdə, cədvəl məkanında yaradılan bütün cədvəllər standart olaraq sıxılır.

Nümunə 4-4 Cədvəl səviyyəsində sıxılma

Aşağıdakı bəyanat sifarişlər cədvəlinə inkişaf etmiş sətir sıxılmasını tətbiq edir:

Nümunə 4-5 Bölmə səviyyəsində sıxılma

Qismən CREATE TABLE ifadəsinin aşağıdakı nümunəsi bir bölmə üçün inkişaf etmiş sətir sıxışmasını və digər bölmə üçün əsas cədvəl sıxılmasını göstərir:

Dəyərlərin ardıcıl olaraq necə saxlanıldığını öyrənmək üçün "Sıra Formatı"

Sıxılmış məlumat bloklarının formatını öyrənmək üçün "Data Block Compression"

Oracle Database Utilities birbaşa yol yükləri üçün SQL * Loader istifadə etməyi öyrənmək

Hibrid Sütunlu Sıxılma

Hibrid Sütunlu Sıxılma ilə verilənlər bazası eyni sütunu bir sıra sətir üçün birlikdə saxlayır. Məlumat bloku məlumatları satır əsas formatında saxlamır, lakin həm satır, həm də sütunlu metodların birləşməsindən istifadə edir.

Sütun məlumatlarını eyni məlumat növü və oxşar xüsusiyyətlərlə birlikdə saxlamaq, sıxılma nəticəsində əldə edilən qənaəti kəskin şəkildə artırır. Verilənlər bazası, hər hansı bir SQL əməliyyatı ilə idarə olunan məlumatları sıxır, baxmayaraq ki, birbaşa yol yükləri üçün sıxılma səviyyəsi daha yüksəkdir. Verilənlər bazası əməliyyatları sıxılmış obyektlərə qarşı şəffaf şəkildə işləyir, buna görə tətbiq dəyişikliyinə ehtiyac yoxdur.

Hibrid Sütun Sıkıştırma və Yaddaşda Sütun Dükanı (IM sütun mağazası) bir-birilə yaxından əlaqəlidir. Əsas fərq Hibrid Sütun Sıxışdırmanın disk yaddaşını, IM sütun deposunu yaddaş yaddaşını optimallaşdırmasıdır.

IM sütun mağazası haqqında daha çox məlumat əldə etmək üçün "Yaddaşda"

Hibrid Sütunlu Sıxılma növləri

Əgər əsas yaddaşınız Hibrid Sütunlu Sıxılmağı dəstəkləyirsə, tələblərinizə görə fərqli sıxılma növləri təyin edə bilərsiniz.

Sıxılma variantları bunlardır:

Bu tip sıxılma, saxlama yerindən qənaət etmək üçün optimize edilmiş və məlumat anbarı tətbiqetmələri üçün nəzərdə tutulmuşdur.

Bu cür sıxılma maksimum sıxılma səviyyələri üçün optimize edilmiş və dəyişməyən tarixi məlumatlar və məlumatlar üçün nəzərdə tutulmuşdur.

Hibrid Sütunlu Sıkıştırma, Oracle Exadata yaddaşında məlumat anbarı və qərar dəstəyi tətbiqləri üçün optimize edilmişdir. Oracle Exadata, Oracle Exadata saxlama serverinə ayrılmaz olan işləmə gücü, yaddaş və Infiniband şəbəkə bant genişliyindən faydalanaraq Hibrid Sütunlu Sıkıştırma istifadə edərək sıxılmış cədvəllərdəki sorğuların performansını artırır.

Digər Oracle saxlama sistemləri, Hibrid Sütunlu Sıkıştırmayı dəstəkləyir və Oracle Exadata yaddaşında olduğu kimi eyni yer qənaətini təmin edir, lakin eyni səviyyədə sorğu performansı vermir. Bu saxlama sistemləri üçün Hibrid Sütunlu Sıkıştırma, nadir hallarda əldə edilən köhnə məlumatların verilənlər bazasında arxivləşdirilməsi üçün idealdır.

Sıxılma vahidləri

Hibrid Sütunlu Sıkıştırma a adlı məntiqi bir konstruksiyadan istifadə edir sıxılma vahidi bir sıra sıra saxlamaq.

Verilənləri bir cədvələ yüklədiyiniz zaman verilənlər bazası satır qruplarını sütunlu formatda saxlayır və hər sütun üçün dəyərlər birlikdə saxlanılır və sıxılır. Verilənlər bazası bir sıra sətir üçün sütun məlumatlarını sıxdıqdan sonra verilənlər bazası məlumatları sıxılma vahidinə sığdırır.

Məsələn, gündəlik_satış cədvəlinə Hibrid Sütunlu Sıxılma tətbiq edirsiniz. Hər günün sonunda, cədvəli məhsullar və satılan say ilə doldurursunuz, maddə kimliyi və tarixi birləşmiş birincil açar təşkil edir. Aşağıdakı cədvəl gündəlik_sales-dəki satırların alt hissəsini göstərir.

Cədvəl 4-3 Nümunə Cədvəl gündəlik_ satış

Bu alt sətirlərin bir sıxılma vahidində saxlanıldığını düşünək. Hibrid Sütunlu Sıxılma hər sütun üçün dəyərləri birlikdə saxlayır və sonra hər sütunu sıxmaq üçün birdən çox alqoritmdən istifadə edir. Verilənlər bazası, sütunun məlumat növü, sütundakı həqiqi dəyərlərin əsaslığı və istifadəçi tərəfindən seçilmiş sıxılma səviyyəsi daxil olmaqla müxtəlif amillərə əsasən alqoritmləri seçir.

Aşağıdakı qrafikdə göstərildiyi kimi, hər bir sıxılma vahidi birdən çox məlumat blokunu əhatə edə bilər. Müəyyən bir sütun üçün dəyərlər birdən çox bloku əhatə edə bilər və ya olmaya bilər.

Şəkil 4-7 Sıxılma Vahidi

Hibrid Sütunlu Sıxılma yerdən qənaətə səbəb olmazsa, verilənlər bazası məlumatları DBMS_COMPRESSION.COMP_BLOCK formatında saxlayır. Bu halda, verilənlər bazası Hibrid Sütunlu Sıxılma seqmentində olan bloklara OLTP sıxılmasını tətbiq edir.

Hibrid Sütunlu Sıxılma üçün lisenziyalaşdırma tələblərini öyrənmək üçün Oracle Database Lisenziyalaşdırma Məlumat İstifadəçi Təlimatı

Hibrid Sütunlu Sıxışdan necə istifadə edəcəyinizi öyrənmək üçün Oracle Database Administrator’s Guide

CƏDVƏL CƏDVƏLİ sintaksis və semantikası üçün Oracle Database SQL Dil Referansı

DML və Hibrid Sütunlu Sıxılma

Hibrid Sütunlu Sıxılma müxtəlif DML əməliyyatlarında sıra kilidlənməsi üçün təsirlərə malikdir.

Birbaşa yol yükləri və adi əlavələr

Verilənləri Hibrid Sütunlu Sıxlaşdırma istifadə edən bir cədvələ yükləyərkən ya şərti daxilolmalardan, ya da birbaşa yol yüklərindən istifadə edə bilərsiniz. Doğrudan yol yükləri masanın hamısını kilidləyir, bu da paralelliyi azaldır.

Oracle Database 12c Release 2 (12.2) ilə başlayaraq, Hibrid Sütunlu Sıkıştırma formatına şərti sıra əlavələrinə dəstək əlavə olunur. Adi sıra düzəltmələrinin üstünlükləri bunlardır:

Daxil edilən sətirlərdə paralelliyi artıran sətir səviyyəli qıfıllar istifadə olunur.

Avtomatik Məlumat Optimizasiyası (ADO) və İstilik Xəritəsi sıra səviyyəli siyasətlər üçün Hibrid Sütunlu Sıkıştırmayı dəstəkləyir. Beləliklə, verilənlər bazası, seqmentin digər hissələrində DML aktivliyi baş verdikdə belə uyğun bloklar üçün Hibrid Sütunlu Sıkıştırmadan istifadə edə bilər.

Tətbiq ənənəvi sıra əlavələrindən istifadə etdikdə, Oracle Database aşağıdakı şərtlər yerinə yetirildikdə satırları sıxılma vahidlərində saxlayır:

Cədvəl bir ASSM masa məkanında saxlanılır.

Uyğunluq səviyyəsi 12.2.0.1 və ya daha yuxarıdır.

Cədvəl tərifi LONG tipli sütunlar və sıra asılılıqları daxil olmaqla mövcud Hibrid Sütunlu Sıxılma cədvəl məhdudiyyətlərini təmin edir.

Adi qoşmalar təkrar və geri qaytarma əmələ gətirir. Beləliklə, ənənəvi DML ifadəsi ilə yaradılan sıxılma vahidləri DML ilə birlikdə geri qaytarılır və ya tətbiq edilir. Verilənlər bazası, adi məlumat bloklarında saxlanılan sətirlər kimi avtomatik olaraq indeks baxımını həyata keçirir.

Varsayılan olaraq, vahiddəki hər hansı bir sıraya bir yeniləmə və ya silmə tətbiq edilərsə, verilənlər bazası sıxılma vahidindəki bütün satırları kilidləyir. Bu problemin qarşısını almaq üçün bir masa üçün sətir səviyyəsində kilidləməyi aktivləşdirə bilərsiniz. Bu vəziyyətdə, verilənlər bazası yalnız yeniləmə və ya silmə əməliyyatından təsirlənən satırları kilidləyir.

Ənənəvi əlavələrin necə aparılacağını öyrənmək üçün Oracle Database Administrator’s Guide

Cədvəl qruplarına ümumi baxış

A masa qrupu ümumi sütunları bölüşən və əlaqəli məlumatları eyni bloklarda saxlayan bir cədvəl qrupudur.

Cədvəllər qruplaşdırıldıqda, tək bir məlumat bloku birdən çox cədvəldən sətirlərdən ibarət ola bilər. Məsələn, blok yalnız bir cədvəldən daha çox həm işçilərdən, həm də bölmələr cədvəllərindən satır saxlaya bilər.

Klaster açarı, kümelenmiş cədvəllərin ortaq olduğu sütun və ya sütunlardır. Məsələn, işçilər və şöbələr cədvəlləri şöbə_id sütununu paylaşırlar. Cədvəl klasterini yaratarkən və masa qrupuna əlavə edilmiş hər bir cədvəl yaratarkən klaster düyməsini təyin edirsiniz.

Klaster açarı dəyəri, müəyyən bir sıra dəsti üçün klaster açar sütunlarının dəyəridir. Department_id = 20 kimi eyni klaster açarı dəyərini ehtiva edən bütün məlumatlar fiziki olaraq birlikdə saxlanılır. Hər bir klaster açarı dəyəri, müxtəlif cədvəllərin neçə sətirdə dəyəri olmasına baxmayaraq, yalnız bir dəfə klasterdə və klaster indeksində saxlanılır.

Bir bənzətmə üçün HR menecerinin iki kitab işi var: biri işçi qovluqları qutusu, digəri bölmə qovluqları qutuları ilə. İstifadəçilər tez-tez müəyyən bir şöbədəki bütün işçilər üçün qovluq tələb edirlər. Almağı asanlaşdırmaq üçün menecer bütün kitabları tək bir kitab çantasında yenidən düzəldir. Qutuları bölmə şəxsiyyət vəsiqəsinə görə bölür. Beləliklə, bölmə 20-dəki işçilər üçün bütün qovluqlar və 20-ci bölmə üçün qovluq bir qutuda, 100 şöbədəki işçilər üçün qovluqlar və 100 bölmə üçün qovluq başqa bir qutuda və s.

Əsasən soruşulduqda (lakin dəyişdirilmədikdə) və masalardakı qeydlər tez-tez birlikdə soruşulduqda və ya birləşdirildikdə cədvəlləri klasterləşdirməyi düşünün. Cədvəl qrupları fərqli cədvəllərin əlaqəli sətirlərini eyni məlumat bloklarında saxladığı üçün düzgün istifadə olunan cədvəl qrupları, qruplaşdırılmamış cədvəllərə görə aşağıdakı üstünlükləri təqdim edir:

Disk G / Ç qruplaşdırılmış cədvəllərin birləşməsi üçün azaldılır.

Kümelenmiş masaların birləşməsi üçün giriş vaxtı yaxşılaşır.

Bağlı cədvəl və indeks məlumatlarını saxlamaq üçün daha az yaddaş tələb olunur, çünki klaster açarı dəyəri hər satır üçün təkrarən saxlanılmır.

Tipik olaraq, klaster cədvəlləri aşağıdakı hallarda uyğun deyil:

Cədvəllər tez-tez yenilənir.

Cədvəllər tez-tez tam bir masa taraması tələb edir.

Cədvəllər kəsilməlidir.

İndeksli klasterlərə ümumi baxış

İndeks klasteri məlumatları tapmaq üçün bir indeksdən istifadə edən bir masa klasteridir. Küme indeksi, klaster düyməsindəki B ağacının indeksidir. Hər hansı bir sətir klasterli cədvəllərə daxil edilməzdən əvvəl bir klaster indeksi yaradılmalıdır.

Nümunə 4-6 Cədvəl Kümesi və Əlaqəli İndeksin yaradılması

Aşağıdakı nümunədə göstərildiyi kimi, klaster işçiləri_departments_cluster klaster açarı Department_id ilə yaratdığınızı düşünün:

HASHKEYS müddəası göstərilmədiyi üçün, işçilər_departments_cluster indeksli bir klasterdir. Əvvəlki nümunə, departament_id klaster açarı üzərində idx_emp_dept_cluster adlı bir indeks yaradır.

Nümunə 4-7 İndeksli klasterdə cədvəllər yaratmaq

Sənəddə işçi və şöbə cədvəllərini, şöbə_id sütununu klaster açarı kimi göstərərək aşağıdakı kimi qurursunuz (elipslər sütun spesifikasiyasının getdiyi yeri qeyd edir):

İşçilər və şöbələr cədvəllərinə sətir əlavə etdiyinizi düşünün. Verilənlər bazası fiziki olaraq işçilərdən və bölmə cədvəllərindən hər bölmə üçün bütün satırları eyni məlumat bloklarında saxlayır. Verilənlər bazası satırları yığın şəklində saxlayır və onları indekslə tapır.

Şəkil 4-8-də işçilər və şöbələri özündə cəmləşdirən işçilər_departments_cluster cədvəl qrupu göstərilir. Veritabanı 20 saylı bölmə işçiləri üçün birlikdə, 110 bölmə birlikdə və s. Cədvəllər qruplaşdırılmamışdırsa, verilənlər bazası əlaqəli sətirlərin birlikdə saxlanılmasını təmin etmir.

Şəkil 4-8 Kümelenmiş Cədvəl Məlumatları

B-ağac klaster indeksi, klaster açarı dəyərini, məlumatları ehtiva edən blokun verilənlər bazası bloku ünvanı (DBA) ilə əlaqələndirir. Məsələn, açar 20 üçün indeks girdisi, 20 şöbədəki işçilər üçün məlumatları ehtiva edən blokun ünvanını göstərir:

Küme indeksi, qruplaşdırılmamış bir cədvəldəki bir indeks kimi ayrıca idarə olunur və cədvəl klasterindən ayrı bir cədvəl məkanında mövcud ola bilər.

İndeksli klasterlərin necə yaradılacağını və idarə olunacağını öyrənmək üçün Oracle Database Administrator’s Guide

Klaster sintaksisini və semantikasını yaratmaq üçün Oracle Database SQL Dil Referansı

Hash klasterlərinə ümumi baxış

Bir qarışıq qrupu, indeks açarı bir hash funksiyası ilə əvəz olunduğu istisna olmaqla, indeksli bir klasterə bənzəyir. Ayrı bir klaster indeksi yoxdur. Bir hash klasterində məlumatlar indeksdir.

İndeksli bir cədvəl və ya indeksli bir klaster ilə Oracle Database, ayrı bir indeksdə saxlanılan əsas dəyərlərdən istifadə edərək cədvəl sətirlərini tapır. İndeksli bir cədvəldə və ya cədvəl klasterində bir sıra tapmaq və ya saxlamaq üçün verilənlər bazası ən azı iki I / Os yerinə yetirməlidir:

İndeksdə əsas dəyəri tapmaq və ya saxlamaq üçün bir və ya daha çox giriş / giriş

Sıranı cədvəldə və ya masa qrupunda oxumaq və ya yazmaq üçün başqa bir giriş / çıxış

Bir sıra tapmaq və ya bir hash klasterində saxlamaq üçün Oracle Database hash funksiyasını satırın klaster açarı dəyərinə tətbiq edir. Nəticədə hash dəyəri, verilənlər bazasının verilən bəyanat adından oxuduğu və ya yazdığı klasterdəki bir məlumat blokuna cavab verir.

Hashing, məlumat alma performansını yaxşılaşdırmaq üçün cədvəl məlumatlarını saxlamağın isteğe bağlı bir yoludur. Hash klasterləri aşağıdakı şərtlər yerinə yetirildikdə faydalı ola bilər:

Cədvəl dəyişdirildikdən daha tez-tez soruşulur.

Hash key sütunu bərabərlik şərtləri ilə tez-tez soruşulur, məsələn, WHERE Department_id = 20. Bu cür sorğular üçün klaster açarı dəyəri qarışıqdır. Hash key dəyəri birbaşa satırları saxlayan disk sahəsini göstərir.

Hər açar dəyəri ilə birlikdə saxlanılan düymələrin sayını və verilənlərin ölçüsünü ağlabatan şəkildə təxmin edə bilərsiniz.

Hash klasterinin yaradılması

Bir qarışıq klasteri yaratmaq üçün, bir hash açarı əlavə etməklə, indeksli bir klasterlə eyni CREATE CLUSTER ifadəsini istifadə edirsiniz. Küme üçün hash dəyərlərinin sayı hash düyməsindən asılıdır.

İndeksləşdirilmiş klasterin açarı kimi klaster açarı, qrupdakı cədvəllər tərəfindən paylaşılan tək sütun və ya kompozit açardır. Hash key dəyəri, klaster açarı sütununa daxil edilmiş həqiqi və ya mümkün bir dəyərdir. Məsələn, klaster açarı şöbə_ididirsə, hash düymələri dəyərləri 10, 20, 30 və s. Ola bilər.

Oracle Database, sonsuz sayda hash açarı dəyərini giriş olaraq qəbul edən və sonlu sayda vedrəyə ayıran bir hash funksiyasından istifadə edir. Hər vedrə bir hash dəyəri kimi tanınan unikal ədədi identifikatora malikdir. Hər bir hash dəyəri, hash düyməsinin dəyərinə uyğun olan satırları saxlayan blok üçün verilənlər bazası blok ünvanına (şöbə 10, 20, 30 və s.) Eşleşir.

Aşağıdakı nümunədə mövcud olma ehtimalı olan şöbələrin sayı 100 olduğu üçün HASHKEYS 100 olaraq təyin edilmişdir:

Çalışanlar_departments_cluster yaratdıqdan sonra qrupdakı işçilər və şöbələr cədvəllərini yarada bilərsiniz. Daha sonra indeksləşdirilmiş qrupdakı kimi məlumatları hash qrupuna yükləyə bilərsiniz.

Oracle Database Administrator’s Guide - Hash klasterlərinin yaradılmasını və idarə olunmasını öyrənmək

Hash Klaster Sorğuları

Bir qarışıq klasterinin sorğularında verilənlər bazası istifadəçi tərəfindən daxil edilmiş əsas dəyərlərin necə qarışdırılacağını müəyyənləşdirir.

Məsələn, istifadəçilər p_id üçün fərqli şöbə kimlik nömrələrini daxil edərək aşağıdakılar kimi sualları tez-tez icra edirlər:

Bir istifadəçi Department_id = 20-dəki işçilərdən sorğu alırsa, verilənlər bazası bu dəyəri 77-ci vedrə ilə qarışdıra bilər. Bir istifadəçi Department_id = 10-dakı işçilərdən sorğu alırsa, verilənlər bazası bu dəyəri 15-ci vedrə ilə qarışdıra bilər. Verilənlər bazası daxili olaraq yaradılan hash dəyərindən istifadə edir. tələb olunan bölmə üçün işçi sıralarını ehtiva edən bloku tapmaq.

Aşağıdakı illüstrasiya bir hash klaster seqmentini üfüqi bir sıra sıra şəklində təsvir edir. Qrafikdə göstərildiyi kimi, sorğu tək bir giriş / çıxışı ilə məlumat ala bilər.

Şəkil 4-9 Bir Hash klasterindən məlumatların alınması

Qarışıq qruplarının məhdudlaşdırılması, indeksləşdirilməmiş klaster düymələrində aralıq taramalarının əlçatmazlığıdır. Hash Cluster Creation-da yaradılan hash klasteri üçün ayrı bir indeksin olmadığını fərz edin. 20 ilə 100 arasında kimliyi olan şöbələr üçün bir sorğu, 20 ilə 100 arasındakı bütün mümkün dəyərləri qarışdıra bilmədiyi üçün qaralama alqoritmindən istifadə edə bilməz. İndeks olmadığı üçün verilənlər bazası tam bir tarama etməlidir.

Hash Klaster Varyasyonları

Tək cədvəlli hash klaster, eyni anda yalnız bir cədvəli dəstəkləyən bir hash klasterinin optimallaşdırılmış versiyasıdır. Həş düymələri və sətirlər arasında bir-bir eşleme mövcuddur.

Bir cədvəlli hash klasteri, istifadəçilər bir cədvələ əsas düymə ilə sürətli giriş tələb etdikdə faydalı ola bilər. Məsələn, istifadəçilər işçi cədvəlində işçi qeydini işçi cədvəlinə əsasən axtarırlar.

Sıralanmış bir hash klaster, hash funksiyasının hər bir dəyərinə uyğun olan satırları verilənlər bazası onları sıralanmış qaydada səmərəli şəkildə qaytara biləcəyi şəkildə saxlayır. Verilənlər bazası optimallaşdırılmış çeşidi daxili olaraq həyata keçirir. Həmişə məlumatları sıralanmış qaydada istehlak edən tətbiqetmələr üçün bu texnika məlumatların daha sürətli alınması deməkdir. Məsələn, bir tətbiq həmişə sifarişlər cədvəlinin order_date sütununda sıralana bilər.

Tək cədvəlli və çeşidlənmiş hash klasterlərinin necə yaradılacağını öyrənmək üçün Oracle Database Administrator’s Guide

Hash Cluster Storage

Oracle Database, bir endeksli klasterdən fərqli olaraq bir hash klasteri üçün yer ayırır.

Hash Cluster Creation-dakı nümunədə HASHKEYS mövcud ola biləcək bölmələrin sayını, SIZE isə hər bölmə ilə əlaqəli məlumatların ölçüsünü təyin edir. Verilənlər bazası aşağıdakı düstura əsasən bir saxlama sahəsi dəyərini hesablayır:

Beləliklə, Hash Cluster Creation-da göstərilən nümunədə blok ölçüsü 4096 baytdırsa, verilənlər bazası hash klasterinə ən azı 200 blok ayırır.

Oracle Database, klasterə əlavə edə biləcəyiniz hash key dəyərlərinin sayını məhdudlaşdırmır. Məsələn, HASHKEYS 100 olsa da, bölmə cədvəlinə 200 unikal bölmə daxil etməyinizə heç nə mane olmur. Bununla birlikdə, hash dəyərlərinin sayı hash düymələrinin sayından çox olduqda, hash qrupunun alınması səmərəliliyi azalır.

Alınma məsələlərini göstərmək üçün Şəkil 4-9-dakı 100 blokunun şöbə 20-nin sətirləri ilə tamamilə dolu olduğunu düşünün. Bir istifadəçi departament cədvəlinə Department_id 43 ilə yeni bir bölmə əlavə edir. Bölmə sayı HASHKEYS dəyərini aşıb, buna görə də verilənlər bazası şöbə_id 20 üçün istifadə edilən eyni hash dəyər olan 77 hash dəyərini 77-yə həşir edir. Birdən çox giriş dəyərinin eyni çıxış dəyərinə yığılması hash toqquşması adlanır.

İstifadəçilər bölmə 43 üçün qrupa sətirlər əlavə etdikdə, verilənlər bazası bu satırları 100 saylı blokda saxlaya bilməz. Verilənlər bazası 100 blokunu yeni daşqın blokuna bağlayır, deyək blok 200 və yeni bloka daxil edilmiş satırları saxlayır. Hər iki blok 100 və 200 artıq hər iki bölmə üçün məlumatları saxlaya bilərlər. Şəkil 4-10-da göstərildiyi kimi, 20 və ya 43 şöbələrindən birinin sorğusu, məlumatları əldə etmək üçün iki I / OS tələb edir: blok 100 və onunla əlaqəli blok 200. Bu problemi fərqli bir HASHKEYS ilə yenidən yaratmaqla həll edə bilərsiniz. dəyər.

Şəkil 4-10 Hash toqquşması meydana gəldiyi zaman bir hash qrupundan məlumatların alınması

Oracle Database Administrator’s Guide - Haş qruplarında yerin necə idarə olunacağını öyrənmək

Atribut Kümelenmiş Cədvəllərə Baxış

Atribut klasterli cədvəl, istifadəçinin təyin etdiyi klasterləşdirmə direktivlərinə əsasən məlumatları diskdə yaxınlıqda saxlayan yığıncaqlı bir cədvəldir. Direktivlər sütunları tək və ya birdən çox cədvəldə göstərir.

Direktivlər aşağıdakı kimidir:

Klaster. BY LINEAR SİFARİŞ direktivi məlumatları müəyyən edilmiş sütunlara uyğun olaraq bir cədvəldə sifariş edir.

Sorğular klaster bəndində göstərilən sütunların prefiksinə cavab verdikdə, Varsayılan olan BY LINEAR ORDER klasterindən istifadə etməyi düşünün. Məsələn, sh.sales sorğularında bir müştəri kimliyi və ya həm müştəri kimliyi, həm də məhsul kimliyi göstərilirsə, onda cust_id, prod_id xətti sütun sifarişindən istifadə edərək məlumatları cədvəldə toplaya bilərsiniz.

Klaster. INTERLEAVED SİFARİŞ direktivi ilə çox sütunlu I / O azaldılmasına imkan verən, Z əmri funksiyasına bənzər bir xüsusi alqoritmdən istifadə edərək məlumatları bir və ya daha çox cədvəldə sifariş edir.

Sorğularda müxtəlif sütun birləşmələri göstərildikdə BY INTERLEAVED ORDER klasterindən istifadə etməyi düşünün. Məsələn, sh.sales sorğuları fərqli sifarişlərdə fərqli ölçülər təyin edirsə, satış cədvəlindəki məlumatları bu ölçülərdəki sütunlara uyğun olaraq qruplaşdırmaq olar.

Atribut klasterləşdirmə yalnız birbaşa yol INSERT əməliyyatları üçün mövcuddur. Adi DML üçün nəzərə alınmır.

Bu bölmədə aşağıdakı mövzular var:

Atribut-klasterli masaların üstünlükləri

Atribut klasterli cədvəllərin əsas faydası I / O azaldılmasıdır, bu cədvəl taramalarının I / O dəyərini və CPU xərclərini əhəmiyyətli dərəcədə azalda bilər. I / O azalması ya zonalarla, ya da kümelenmiş dəyərlər üçün diskdə fiziki yaxınlıq sayəsində fiziki I / O-nu azaltmaqla baş verir.

Atribut qruplaşdırılmış cədvəlin aşağıdakı üstünlükləri vardır:

Ulduz sxemlərdə ölçü sütunlarına əsaslanan fakt cədvəllərini toplaya bilərsiniz.

Ulduz şemalarda, əksər sorğular ölçü cədvəllərinə cavab verir, fakt cədvəllərinə deyil, bu səbəbdən cədvəl sütunlarına görə qruplaşdırma təsirli deyil. Oracle Database, ölçü cədvəllərindəki sütunlarda kümelenmeyi dəstəkləyir.

I / O azaldılması bir neçə fərqli ssenaridə baş verə bilər:

Oracle Exadata Storage Indexes, Oracle In-Memory min / max budama və ya zona xəritələri ilə istifadə edildikdə

Bir önek tələb edən və xətti qaydada atribut klasterləşdirmə istifadə edən sorğular üçün OLTP tətbiqetmələrində

BY INTERLEAVED ORDER klasterləşdirmə üçün kümelenme sütunlarının alt hissəsində

Atribut klasterləşdirilməsi məlumatların sıxılmasını yaxşılaşdırır və bu şəkildə cədvəl tarama xərclərini dolayı yolla yaxşılaşdırır.

Eyni dəyərlər diskdə bir-birinə yaxın olduqda, verilənlər bazası onları daha asanlıqla sıxa bilər.

Oracle Database, bir indeksin saxlanması və istismar xərclərini çəkmir.

Atribut klasterli cədvəllərin daha çox üstünlükləri üçün Oracle Database Data Warehousing Guide

Atribut Kümelenmiş Cədvəllərə qoşulun

Birləşdirilmiş sütunlara əsaslanan atribut klasterinə qoşulma atributu klasteri deyilir. Cədvəl klasterlərindən fərqli olaraq birləşdirin atribut klasterli cədvəllər eyni verilənlər bazası bloklarında bir qrup cədvəldəki məlumatları saxlamır.

Məsələn, bir xüsusiyyət cədvəlini, bir ölçü cədvəli ilə birləşdirilmiş satışları, məhsulları nəzərdən keçirin. Satış cədvəli satış cədvəlindən yalnız sətirlərdən ibarətdir, lakin sətirlərin sıralanması məhsullar cədvəlindən birləşdirilmiş sütunların dəyərlərinə əsaslanır. Müvafiq birləşmə məlumatların hərəkəti, birbaşa yol əlavə edilməsi və CƏDVƏLİ SEÇİM ƏMƏLLƏRİ YARATMA zamanı yerinə yetirilir. Bunun əksinə olaraq satışlar və məhsullar standart bir cədvəl qrupunda olsaydı, məlumat bloklarında hər iki cədvəlin sətirləri olurdu.

Qoşulmaq atribut klasterləşdirmə haqqında daha çox məlumat əldə etmək üçün Oracle Database Data Warehousing Guide

Bölgələrdən istifadə edərək I / O Azaldılması

A zona müvafiq sütunların minimum və maksimum dəyərlərini saxlayan bitişik məlumat bloklarının məcmusudur.

Bir SQL bəyanatında bir zonada saxlanılan sütunlarda predikatlar olduqda, verilənlər bazası predikat dəyərlərini zonada saxlanılan minimum və maksimumla müqayisə edir. Bu şəkildə verilənlər bazası SQL icrası zamanı hansı zonaların oxunacağını müəyyənləşdirir.

G / Ç azaltma, verilənlər bazasının bir sorğunu təmin etməsi üçün lazım olan məlumatları ehtiva etməyən cədvəl və ya indeks bloklarını atlama qabiliyyətidir. Bu azalma masa taramalarının I / O və CPU xərclərini əhəmiyyətli dərəcədə azalda bilər.

Bölgələrin məqsədi

Zonaların boş bir bənzətməsi üçün məlumat bloklarına bənzəyən göyərçin dəliklərinin kitab şkafını istifadə edən bir satış menecerini nəzərdən keçirin.

Hər göyərçin dəliyində, bir müştəriyə satılan, gəmi tarixinə görə satılan köynəkləri təsvir edən qəbzlər (sıralar) var. Bu bənzətmədə bir zona xəritəsi indeks kartları yığını kimidir. Hər bir kart göyərçin dəliklərinin 1-10 zonası kimi bir "zonaya" (bitişik aralığa) uyğundur. Hər zona üçün kart, zonada saxlanılan qəbzlər üçün minimum və maksimum göndərmə tarixlərini sadalayır.

Kimsə müəyyən bir tarixdə hansı köynəklərin göndərildiyini bilmək istədikdə, menecer, tələb olunan tarixi ehtiva edən tarix aralığına gələnə qədər kartları fırladır, göyərçin dəliyi zonasını qeyd edir və sonra bu zonadakı yalnız göyərçin dəliklərini axtarılan qəbzləri axtarır. Bu şəkildə menecer, kitab şkafındakı göyərçinlərin hər birində qəbzləri axtarmaqdan çəkinir.

Zona xəritələri

A zona xəritəsi məlumat bloklarını zonalara bölən müstəqil bir giriş quruluşudur. Oracle Database hər zona xəritəsini bir növü olaraq həyata keçirir maddi görünüş.

İndekslər kimi, zona xəritələri də cədvəl taramalarının I / O və CPU xərclərini azalda bilər. Bir SQL ifadəsi bir zona xəritəsindəki sütunlar üzərində predikatlar olduqda, verilənlər bazası SQL icrası zamanı hansı zonaların oxunacağını müəyyənləşdirmək üçün predikat dəyərlərini hər zonada saxlanılan minimum və maksimum cədvəl sütun dəyərləri ilə müqayisə edir.

A əsas zona xəritəsi tək bir cədvəldə müəyyən edilir və bu cədvəlin bəzi sütunlarının minimum və maksimum dəyərlərini saxlayır. A zona xəritəsinə qoşulun bir və ya daha çox cədvəlin xarici birləşməsinə sahib olan və digər cədvəllərdəki bəzi sütunların minimum və maksimum dəyərlərini qoruyan bir cədvəldə müəyyən edilir. Oracle Database hər iki növ zona xəritəsini avtomatik olaraq saxlayır.

Cədvəldə ən çox bir zona xəritəsi ola bilər. Bölünmüş cədvəl halında, bütün bölmələr və alt hissələr üçün bir zona xəritəsi mövcuddur. Bölünmüş cədvəlin zona xəritəsi ayrıca bölgə, bölmə və alt hissə üçün minimum və maksimum dəyərləri izləyir. Zona xəritəsi tərifləri, cədvəlin ölçü cədvəlləri ilə xarici birləşdirilməsi şərtiylə ölçü sütunlarının minimum və maksimum dəyərlərini daxil edə bilər.


Alətin təşkili

Geoprosessinq alətləri iki fərqli şəkildə təşkil olunur. Bütün alətlər ArcPy-də funksiya olaraq mövcuddur, eyni zamanda alət qutusu takma adı ilə uyğun modullarda mövcuddur. Yardım nümayişindəki nümunələrin əksəriyyəti ArcPy-də mövcud funksiyalar kimi təşkil edilmiş olsa da, hər iki yanaşma eyni dərəcədə etibarlıdır. Hansı yanaşmanı istifadə etməyiniz şəxsi seçim və kodlaşdırma vərdişləri mövzusuna düşəcəkdir. Aşağıdakı nümunədə, GetCount aləti hər iki yanaşmadan istifadə edərək göstərilir.

Alətləri modullarda istifadə edərkən bəzən skriptinizi daha oxunaqlı hala gətirmək üçün bir modulun necə təyin olunduğuna diqqət çəkmək istəyə bilərsiniz. Bu halda formanı - import - as şəklində istifadə edə bilərsiniz.

Məkan Analisti alətləri Xəritə Cəbrini yerləşdirmək üçün fərqli işlənir və ArcPy-də funksiya olaraq deyil, yalnız arcpy.sa modulunda mövcuddur.


Sintaksis

Bir və ya daha çox nöqtəli məlumat sənədləri və ya qovluqlar.

Giriş fayl (lar) ının formatı. Giriş faylları LAS, XYZ, XYZI və ya GENERATE formatında olmalıdır.

Girişdə bir qovluq göstərildikdə idxal ediləcək faylların şəkilçisi.

Giriş məlumatlarının koordinat sistemi.

LAS sənədlərini tarar və sinif kodu dəyərlərini təhlil edir. Çıxış xüsusiyyət sinfinin atribut cədvəli, qarşılaşılan hər bir sinif kodu üçün statistik məlumatları ehtiva edir.

  • XEYRİ XÜLASƏ - LAS sənədləri sinif kodu dəyərlərinə əsasən analiz edilməyəcəkdir. Bu, standartdır.
  • XÜLASƏLƏŞDİRMƏ - LAS sənədləri sinif kodu dəyərlərinə əsaslanaraq analiz ediləcəkdir. Çıxış xüsusiyyət sinfinin atribut cədvəli, qarşılaşılan hər bir sinif kodu üçün statistik məlumatları ehtiva edir.

Bir alt qovluq qovluğundakı məlumatları ehtiva edən bir giriş qovluğu seçildikdə alt qovluqları tarar. Çıxış xüsusiyyəti sinfi, qovluq quruluşunda rast gəlinən hər bir fayl üçün bir sıra ilə yaradılacaqdır.

  • NO_RECURSION - Seçilmiş giriş qovluğunun alt qovluqları skan edilməyəcək və qarşılaşılan məlumat faylları nəticə əldə etmək üçün istifadə ediləcək. Bu, standartdır.
  • TƏKRAR - Seçilmiş giriş qovluğunun alt qovluqları skan ediləcək və qarşılaşılan məlumat faylları nəticələr əldə etmək üçün istifadə ediləcək.

Hər bir giriş sənədinin z minimum / maksimum dəyərlərinə əsasən 3 ölçülü çox xüsusiyyət xüsusiyyət sinfi yaradılacaqdır.

  • NO_EXTRUSION - Çıxış olaraq 3D çoxsaylı xüsusiyyət sinfi yaradılmayacaq. Bu, standartdır.
  • ÇIXARMA - Çıxış şəklində 3 ölçülü çox xüsusiyyət xüsusiyyət sinfi yaradılacaqdır.

ASCII sənədlərində istifadə olunan ayırıcı simvolu. Varsayılan ondalık nöqtəsidir. İstifadəçiyə fayllarda istifadə olunan onlu işarənin nöqtə və ya vergül olduğunu elan etməyə imkan verir.


16 Qrammatik İstifadələr

Qrammatik türev məlumatları, vəziyyət, cins və çoxluqlu birləşmə vahidləri haqqında məlumatlar ehtiva edir. Bu əlavə məlumatlardır, buna görə də yerli olaraq mirasın müştəri tərəfindən aparılması lazımdır.

Qeyd: CLDR v38-də iki lokal məlumat verilmişdir ki, tətbiqetmələr daha çox yerli məlumat olduqda kodlarını hazırlaya bilsinlər. Növbəti buraxılışlarda, əlavə yerli tələblər ilə məşğul olmaq üçün daha çox yerli əlavə edildikdə, struktur daha da genişləndirilə bilər.

Mürəkkəb vahid burada formatlanmış sətirlərdə göstərilən 4 mexanizmi istifadə edə bilər:

  • Prefiks: 1 kiloqram
  • Güc: 3 kvadrat kilometr
  • Per: 3 kiloqram başına metr
    • Bir kənar vəziyyət, "saniyədə 1" kimi bir sayğacın olmadığı yerdir.

    Qrammatik törəmə (və ad konstruksiyası) məqsədləri üçün qarışıq vahid ID, yarpaqların atom vahidləri olduğu və daha yüksək səviyyə düyünün yuxarıdakılardan biri olduğu bir ağac quruluşu kimi təmsil edilə bilər. Budur həddindən artıq bir nümunə: kiloqram-kvadrat kilometr-amper-kandela-kvadrat başına ikinci mol

    başına
    dəfədəfə
    kilokvadratamperkandelakvadratköstəbək
    qramkilo--ikinci
    -metr---

    Qeyd edək ki, prefiks və güc qovşaqları unary (tam olaraq 1 uşaq), hər nümunə üçün unary və ya ikili (1 və ya 2 uşaq) və zaman nümunəsi n-ary (burada n & gt 1).

    Aşağıdakı hər bir bölmə yalnız dil birdən çox dəyərə sahib olduqda tətbiq olunur vahidlər üçün: məsələn, çoxluq kateqoriyası üçün dilin "digər" dən daha çox olması lazımdır. Bu məlumat bir dil üçün mövcud olduqda, burada tapılmışdır Bölmə 15 Qrammatik Xüsusiyyətlər.

    Cins törəməsi String genderValue = getGrammaticalGender (yerli, "kvadrat başına saniyədə kiloqram-metr") kimi bir API çağırışı üçün uyğun olardı. Bu, bir ifadənin qalan hissəsindəki söz formalarının seçimi vahidin cinsindən asılı ola biləcəyi yerlərdə istifadə edilə bilər.

    Digər tərəfdən, çoxluq kateqoriyası və halın çıxarılışı çoxluq kateqoriyasının vahidlə formatlanacaq saydan əldə edilə biləcəyi və vəziyyətin mövqedən məlum olduğu qarışıq vahidin adının hazırlanmasında istifadə olunur. mesajda. Məsələn, formatlanmış vahid bir cümlədə və ya ifadədə birbaşa obyekt olsaydı, iddia ittihamlı ola bilər. Bu, String inflectedName = getUnitName (yerli, "kvadrat başına saniyədə kiloqram-metr", pluralCategory, caseValue) kimi bir API çağırışında ifadə edilə bilər.

    Birləşdirilmiş birləşmə vahidi nümunəsi çıxarıldıqda, ağac quruluşu struktur komponentlər və atom komponentləri üçün adlar üçün uyğun lokallaşdırılmış naxışlar alınaraq işlənir. Cəm kateqoriyasının hesablanması və alt ağacların vəziyyəti hesablana bilər deriveComponent məlumat. The dəfə məlumatlar ikili olaraq qəbul edilir və soldan sağa tətbiq olunur: yuxarıdakı nümunə ilə, komponentləri üçün çoxluq kateqoriyalar kiloqram-kvadrat kilometr-amper-kandela müraciət edərək hesablanır

    dəfə(kiloqram, dəfə(kvadrat kilometr, dəfə(amper, kandela)))

    Lokallaşdırılmış ad yaratmaq üçün bu sahələrdən necə istifadə ediləcəyi barədə məlumat üçün baxın Bölmə 6.4 Qarışıq vahidlər.

    16.1 Bileşik Vahidlərin Cinsinin çıxarılması

    The deriveCompound [@ xüsusiyyət = "cins"] məlumatlar bütün birləşmənin cinsini atom vahidlərinin və quruluşunun cinsindən necə çıxarmaq barədə məlumat verir. AttributeValues ​​dəyəridir: 0 (= birinci elementin cinsi), 1 (= ikinci elementin cinsi) və ya dil üçün etibarlı cinsiyyət dəyərlərindən biri. Qeyri-adi bir vəziyyətdə, 'hər' birləşməsinin ilk elementi yoxdur və 0 verilir, onda dəyər 1 olur.

    Məsələn, metrə görə qram üçün yuxarıdakı birinci sətir aşağıdakı mənanı verir:

    • Bileşikin cinsi, 'başına', yəni "qram" ın ilk komponentinin cinsidir. Yəni qram bu dildə qadındırsa, birləşmənin cinsi qadındır.

    16.2 Vahid Komponentlərinin Cəmiyyət kateqoriyasının çıxarılması

    DeriveComponent [@ feature = "cəm"] məlumatları, bütün birləşmənin cəm kateqoriyasından və birləşmənin quruluşundan atom vahidlərinin hər biri üçün çoxluq kateqoriyasını necə çıxarmaq barədə məlumat verir. Value0 və value1-in attributeValues ​​bunlardır: mürəkkəb (= birləşmənin cəmKategoriyası) və ya dil üçün etibarlı çoxluq kateqoriyası dəyərlərindən biridir.

    Məsələn, metrə görə qram üçün yuxarıdakı birinci sətir aşağıdakı mənanı verir:

    • Metr başına qram-cəm formasına ehtiyac olduqda (təklik əvəzinə), tərcümənin qram hissəsi “qram” kimi cəm şəklinə, tərcümənin metr hissəsi isə təkli formaya sahib olmalıdır “Sayğac”. Bu, "qram pro metr" əldə etmək üçün "per" ("<0> pro <1>" deyin) forması ilə tərtib ediləcəkdir.

    16.3 Vahid Komponentlərinin Vəziyyətinin çıxarılması

    DeriveComponent [@ feature = "case"] məlumatları, bütün birləşmənin qrammatik halından və birləşmənin quruluşundan atomik vahidlərin hər biri üçün qrammatik vəziyyətin necə çıxarılması barədə məlumat verir. Value0 və value1 dəyərləri bunlardır: mürəkkəb (= birləşmənin qrammatik vəziyyəti) və ya dil üçün etibarlı qrammatik hal dəyərlərindən biridir.

    Məsələn, metrə görə qram üçün yuxarıdakı birinci sətir aşağıdakı mənanı verir:

    • Metr başına qramın vurğu forması lazım olduqda, tərcümənin qram hissəsində qarşılıqlı mənimsəmə (məsələn, "qramu", ittihamçı vəziyyəti 'u' ilə işarələyən bir dildə), metr hissəsində isə tərcümənin “metr” kimi nominativ forması vardır. Bu, "per" ("<0> pro <1>" deyin) üçün "gramu pro metr" əldə etmək naxışından ibarət olacaqdır.

    Müəllif hüquqları © 2001–2021 Unicode, Inc. Bütün hüquqları qorunur. Unicode Konsorsiumu hər hansı bir ifadə və ya zəmanət vermir və səhv və ya səhvlərə görə heç bir məsuliyyət daşımır. Bu texniki hesabatda yer alan və ya onu müşayiət edən məlumatların və ya proqramların istifadəsi ilə əlaqəli və ya bununla əlaqədar yaranan təsadüfi və nəticəli zərərlərə görə heç bir məsuliyyət götürülmür. Unicode istifadə şərtləri tətbiq olunur.

    Unicode və Unicode loqosu Unicode, Inc-in ticarət nişanlarıdır və bəzi yurisdiksiyalarda qeydiyyata alınmışdır.