Hansı məlumat növündən istifadə ediləcək: simvol və ya tam ədəd

Новости мира

Əvvəllər, FoxPro-da rəqəmsal məlumatları saxlamaq üçün yalnız Rəqəm tipli sahələr olduqda, arqumentin üstünlüyü Simvol tipli sahələrdən istifadənin xeyrinə idi, lakin Tam ədəd tipli sahələrin meydana çıxması ilə hər şey daha aydın oldu.

Əsas sahənin simvol və ya ədədi formatda necə saxlandığını müqayisə edərkən 3 arqument verilir.

Rəqəmsal sahələrdə yeni dəyər yaratmaq daha asandır
Xarakter sahələri «daha qənaətlidir», yəni. eyni ölçüdə daha çox dəyər yerləşdirə bilərsiniz
Xarakter sahələri sözdə replikasiya vəzifələri üçün «universaldır», yəni. əlaqəli olmayan verilənlər bazalarını birləşdirin

Rəqəmsal sahələrin formalaşdırılması daha asandır

Rəqəmsal sahələr burada qeyri-rəqabətlidir, çünki rəqəmli açar sahələrin yaradılmasının standart yolu «maksimum dəyər üstəgəl bir»dir. Simvol sahələri vəziyyətində, adətən, psevdo-təsadüfi ədəd generatoru istifadə olunur. Bu, simvol açarlarının necə yaradıldığını müzakirə etmək üçün yer deyil, lakin həqiqətən unikal dəyəri təmin etmək çətinliyinə görə cəlb olunan prosedurlar adətən olduqca mürəkkəbdir.

Onu da qeyd edim ki, yeni açar dəyəri yaratmaq üçün cari cədvəldəki maksimum dəyərin tərifindən istifadə etməyə ehtiyac yoxdur. Bu, tək istifadəçi rejimində yaxşıdır, lakin çox istifadəçi rejimində iki istifadəçi eyni vaxtda yeni rekord əlavə etdikdə 2 eyni açar dəyəri əldə etmək riski var. Tipik olaraq, son istifadə olunan (və ya ilk istifadə olunmayan) açar dəyərinin dəyərini saxlayan xüsusi texniki xidmət cədvəlindən istifadə olunur. Belə cədvəldən istifadə nümunələri standart FoxPro nümunə layihələrində verilmişdir: Solution.pjx (forma NewID.scx) və TasTrade.pjx. FoxPro-nun 8-ci versiyasında bu tapşırığı tamamilə asanlaşdıran avtomatik artım sahələri meydana çıxdı.

Xarakter sahələri «daha qənaətlidir», yəni. eyni ölçüdə daha çox dəyər yerləşdirə bilərsiniz

Gəlin sualdan başlayaq, cədvəldəki bütün qeydləri müəyyən etmək üçün neçə dəyər lazımdır?

Sistem məhdudiyyətlərindən bilirik ki, DBF cədvəlində icazə verilən qeydlərin maksimum sayı 1 milyard qeyddir (1 milyard). Bu. bu birdən sonra doqquz sıfırdır

Tam ədəd tipli sahə -2,147,483,647 ilə 2,147,483,647 arasında olan dəyərləri qəbul edə bilər. Mənfi dəyərlər ümumiyyətlə istifadə edilmir, lakin müsbət dəyərlər maksimum qeyd sayından 2 dəfə çoxdur. Qeydləri silmək qabiliyyətini nəzərə alsaq — budur.

Tam ədəd sahəsi fiziki olaraq 4 bayt (4 simvol) tutduğundan, simvol sahəsi üçün eyni ölçüdə neçə dəyər təyin edilə biləcəyinə baxaq.

Bir baytda 256 dəyər yazıla bilər, yəni. bu 256**4=4,294,967,296 olardı. Lakin bir sıra səbəblərə görə bəzi dəyərlər (məsələn, yeni sətir simvolu, Esc və s.) Karakter(4) növü sahəsindən aşağı, bəlkə də bir qədər yüksəkdir.

İzahat

Qeyd etmək lazımdır ki, rəqəmsal sahələr FoxPro-da simvolik sahələr kimi saxlanılır, yəni. hər rəqəmi saxlamaq üçün bir bayt tələb olunur. Bu o deməkdir ki, bu cədvəldə gözlənilən dəyərlərin sayı mindən çox deyilsə (4 simvoldan az), onda «saxlamaq» və məsələn, Tam ədədin əvəzinə tip sahəsini daxil etmək istəyi var. N (2)

Buna görə aşağıdakı səbəblərə görə bunu etməyi məsləhət görmürəm:

Müasir kompüterlərdə cədvəllərin fiziki ölçüsü (baytla) əvvəlki kimi fundamental rol oynamır. Çox disk sahəsinə qənaət etməyəcəksiniz.
Bütün cədvəllərdəki bütün əsas sahələr eyni məlumat növü və ölçüsünə malikdirsə, bu, proqramlaşdırma prosesinin özünü xeyli asanlaşdırır. Müəyyən bir cədvəldə hansı növ və ölçüdən istifadə olunduğunu dəqiq xatırlamağa ehtiyac yoxdur. Bəzən bu prinsip vacibdir.

Replikasiya tapşırığı adlanan işlərdə simvol sahələri «universal»dır

Replikasiya bir-biri ilə əlaqəsi olmayan iki verilənlər bazasından, məsələn, eyni təşkilatın coğrafi cəhətdən uzaq iki filialından məlumatların birləşməsidir.

Bəli, həqiqətən də, bu cür tapşırıqlarda simvolik sahələrdən istifadə etmək daha rahatdır, baxmayaraq ki, belə itirilmiş halda belə, rəqəmsal sahələrlə «mübahisə» var.

Bu, miqyasına görə bu məsələni müzakirə etmək üçün yer deyil, ona görə də yalnız qeyd edəcəyəm ki, çox geniş bir sıra tapşırıqlar üçün təkrarlama tapşırığının özü vacib deyil. Ya fayl-server texnologiyasından istifadə olunur, ya da bağlantılar və hesabatlar əldə etmək üçün yalnız bir istiqamətdə inteqrasiya tələb olunur
Nəticə surroqat açarlardakı kimi kateqoriyalı deyil:

Rəqəmsal açar üçün yeni dəyər yaratmaq simvolik açar üçün yeni dəyər yaratmaqdan daha asandır
Integer və Character(4) növləri üçün açar dəyərlərin sayı demək olar ki, eynidir
mürəkkəb replikasiya tapşırıqlarını həll edərkən simvolik açar sahələrindən istifadə etmək daha rahatdır
Lakin əksər proqramçılar replikasiya tapşırıqları ilə məşğul olmaq məcburiyyətində olmadığından, əsas sahələr üçün Tam ədəddən istifadə etmək təhlükəsizdir.

Bütün cədvəllər unikal açar sahəsindən istifadə etməlidirmi?

İlk baxışdan sual qəribə görünə bilər. Əsas sahə olmadan mümkündürmü? Bəzi hallarda bu mümkündür.

Məsələn, çoxdan çoxa münasibətləri təşkil etmək üçün standart üsul vasitəçilik cədvəli yaratmaqdır. Bunun mənası nədi?

Tutaq ki, qarşı tərəflərin siyahısı və bankların siyahısı var. Təbii ki, bir qarşı tərəfin bir neçə bankda hesabı ola bilər. Amma bunun əksi də doğrudur — bir bank bir neçə qarşı tərəflə işləyir. Bu halda, siz qarşı tərəf cədvəlində bank xarici açarını və ya banklar cədvəlində qarşı tərəfin xarici açarını yarada bilməzsiniz. Bankın xarici açarını və qarşı tərəfin xarici açarını saxlayan vasitəçi cədvələ daxil olmalısınız.

Belə bir təşkilatla, bu aralıq cədvəldəki hər bir giriş unikal şəkildə bir cüt dəyərlə müəyyən edilir: qarşı tərəf kodu-bank kodu. Buna görə də, bu proxy cədvəlinin surroqat açarı üçün başqa sahəyə daxil olmamaq maraqlıdır.

Bununla belə, bütün verilənlər bazası cədvəlləri üçün öz açar sahənizi daxil etməyi məsləhət görürəm. Niyə? Axı, hər hansı bir proqramın inkişaf «metodu» var.

Qarşı tərəflər və banklar nümunəsinə qayıtsaq, bir qarşı tərəfin bir bankda bir neçə hesabı ola biləcəyini nəzərə almadığımı asanlıqla görmək olar. Eyni rekvizit (qarşı tərəfin bank hesabı) nə bankda, nə də qarşı tərəfdə qeydiyyata alına bilməz. Ancaq bu yan masaya mükəmməl uyğun gəlir. Cütlüyünə etibar edirsinizsə: bank kodu — bu cədvəldəki girişi müəyyən etmək üçün qarşı tərəf kodu, onda proqramın mühüm hissəsini ciddi şəkildə yenidən işləməli olacaqsınız. Və öz kodunuzu yazsanız, heç bir problem olmayacaq. Başqa sahə əlavə etdilər, bəs nə olacaq?

Bu vəziyyətdə, mən çox açıq bir vəziyyəti nəzərdən keçirdim, lakin tez-tez belə görünür ki, başqa cür ola bilməz, hətta burada öz poçt identifikatorunuza ehtiyacınız yoxdur. Aldanma. Əgər bir şey sizə qeyri-mümkün görünürsə, bu o deməkdir ki, siz nəyisə bilmirsiniz.
Aşağı xətt — istisnasız olaraq bütün cədvəllərdə öz açar sahənizi istifadə edin. Onsuz edə biləcəyinizi düşünsəniz belə.