Data biasanya dikaitkan dengan pengaturcaraan dan dalam dunia maklumat moden dibentangkan dalam tiga versi yang setara secara logik: data yang diterangkan dan digunakan dalam atur cara dalam bahasa pengaturcaraan; data dalam sistem pangkalan data; data dalam sistem maklumat teragih. Pengaturcaraan moden telah memberikan kebebasan relatif hanya kepada varian pertama pemformalan maklumat. Dua pilihan kedua ialah bentuk yang lebih atau kurang boleh dipercayai untuk menyediakan maklumat dan perhubungan antara komponennya.
Data dahulu dan sekarang
Kedudukan asas bahasa pengaturcaraan ialah penerangan tepat data dan algoritma. Komputer tidak "menunjukkan" sebarang peluang ketidakpastian: ada sesuatu yang perlu diambil tindakan dan ada perintah yang melaksanakan tindakan itu.
Konsep moden didasarkan pada asas yang lebih tinggi: ada yang tertentu, dan apa sebenarnya ia akan ditentukan di tempat penggunaannya. Walau apa pun, pada masa penggunaan, data disemak secara automatik dan ditukar kepada jenis yang betul. Seorang pengaturcara moden tidak diwajibkan untuk menjaga penerangan awal mereka dan mematuhi keserasian jenis dalam algoritma.
Proses peralihan:
- daripada data yang ditaip dan penerangan wajibnya sebelum digunakan;
- kepada data yang tidak ditaip dan kebebasan daripada sebarang kewajipan untuk menerangkan dan menggunakannya.
Malah, kami dapat mengenali kelonggaran relatif keperluan pemformalkan - ia hanya tersedia dalam persekitaran alat pengaturcaraan moden. Pada masa jalanan, jenis setiap datum ditetapkan dan urutan arahan ditakrifkan dengan baik.
Jenis dan Pemodelan
Matematik dan fizik, perdagangan dan pengeluaran, ekonomi dan bidang lain di mana nombor digunakan, sentiasa beroperasi dengan data dan tidak mementingkan konsep jenis. Fakta bahawa nombor boleh menjadi keseluruhan atau pecahan tidak begitu penting.
Setiap formula atau tindakan tertentu boleh memberikan integer, pecahan tak terhingga, nombor nyata atau kompleks. Sehingga kini, terdapat keajaiban minda yang tidak terhingga kecil dan tidak terhingga besar. Lebih-lebih lagi, keajaiban ini malah mempunyai sifat.
Masih tiada kebebasan dalam pengaturcaraan. Semuanya mesti diformalkan dengan ketat. Konsep data ialah, pertama sekali, jenis:
- integer;
- boolean;
- char;
- rentetan dan sebagainya.
Nama jenis mungkin berbeza dalam bahasa pengaturcaraan yang berbeza, tetapi sentiasa ada integer atau nombor nyata, nilai boolean, simbol,barisan. Masih ada peninggalan dan idea khusus yang tinggal: integer tidak bertanda, kod, bait, perkataan, kata ganda, rentetan panjang tetap.
Konsep data dalam sistem data tidak mempunyai kebebasan. Bahasa SQL - "antarabangsa" (terdapat dialek untuk setiap pangkalan data moden) - tidak bertolak ansur dengan sebarang ketidaktepatan bukan sahaja dalam data, tetapi juga dalam pertanyaan sql. Ralat dalam permintaan adalah jaminan ketiadaan hasil. Tidak perlu bercakap tentang pelanggaran perihalan sama sekali.
Memodelkan proses maklumat dan perwakilan data ialah satu-satunya cara yang pasti untuk membina struktur yang boleh berkembang dan menyesuaikan diri dengan keadaan yang berubah-ubah.
Dinamik asal
Maklumat semula jadi ialah perubahan berterusan. Untuk memberikan penerangan formal dan konsep model data dalam kawasan subjek tertentu bermakna menyelesaikan tiga masalah:
- tentukan data yang ada di sini;
- formalkan hubungan antara mereka;
- huraikan proses untuk menukar data dan perhubungan.
Contoh set data algoritma ringkas dalam JavaScript - salinan model yang dikurangkan walaupun sistem pengurusan pangkalan data yang paling kukuh.
Cuma dalam kes kedua, pakar dan pakar, apabila mereka bentuk struktur data, jadual dan perhubungan, biasanya tidak melihat (memang sukar untuk merangkumi sejumlah besar maklumat semula jadi) intipati sesuatu, dan set timbunan data yang menyusahkan dan belum dibangunkan diperolehi, manakala maklumat sumber kawasan subjek beredar dengan bebas dan mudah.
Statikmungkin
Adalah amalan JavaScript biasa untuk memasukkan kod yang dilampirkan pada halaman dan fungsi yang diberikan kepada acara pada teg halaman. Sama ada cara, teg halaman menentukan data yang diterima, diubah suai atau dibuat oleh sumber web tertentu.
Jika anda menumpukan kod pengendali anda dengan berhati-hati pada acara elemen dan bukan pada kod halaman secara keseluruhan, ini adalah jalan keluar terbaik. Sebaik-baiknya, apabila kod tidak memperkenalkan data baharu atau tidak membetulkan data yang tersedia, tetapi memfokuskan pada apa sebenarnya yang ada padanya pada masa tertentu.
Malah, jika anda mentakrifkan konsep "data" sebagai penerangan statik minimum bagi maklumat sumber dan mengikutinya, maka ini bermakna anda mempunyai peluang untuk berjaya.
Berkenaan dengan pangkalan data, perkara menjadi lebih rumit. Mana-mana kod JavaScript "menyediakan" halaman dengan fungsi. Mana-mana pangkalan data ialah koleksi jadual, perhubungan antara mereka, prosedur tersimpan, pertanyaan dan kefungsian yang tersedia dari luar.
Statik ialah masalah mana-mana algoritma. Konsep moden data adalah statik: nombor, rentetan, aksara, dan sebagainya. Apabila memproses atau semasa menulis ke jadual pangkalan data, semuanya menjadi lancar. Tetapi bilakah yang asal memperoleh dimensi atau makna yang berbeza? Pilihan satu: tukar tanda, tetapi sambungan dan permintaan boleh serta-merta masuk.
Statik dan objek
Mentakrifkan konsep "data" sebagai objek mengubah keadaan secara dramatik. Objek mempunyai struktur tersendiri. Di sini anda boleh menggunakan sebarang penerangan tentang sebarang pembolehubah. Peranan tidak akan dimainkan. Objek mempunyai kaedah di mana data tersedia. Sejak segala-galanyadigunakan dalam bidang pengaturcaraan, iaitu, tiga kaedah asas: baca, tulis, tukar. Anda boleh menambah lagi untuk membandingkan, mencari, mengklon, dsb.
Kawasan subjek mengenakan julat sifat pada setiap data. Oleh itu, ternyata konsep data diubah menjadi sejenis huraian yang boleh diubah secara dinamik. Statik di dalam objek memberikan dinamik di luarnya.
Mengubah gabungan deskriptor statik di dalam objek, anda tidak perlu risau tentang dinamik hubungannya dengan objek lain.
Pengaturcaraan dan pembentangan data
Apakah itu data? Kesedaran awam sudah terbiasa dengan teknologi maklumat, bekerja di awan dan mempunyai bekas di ruang maya. Kini, bukan sahaja pengaturcara dan pengguna profesional, malah orang biasa juga cekap dalam hal maklumat dan penggunaannya.
Tetapi apakah itu pengaturcaraan? Sehingga hari ini, pendapat umum memberikan definisi berikut kepada konsep ini dan konsepnya:
- Maklumat dan data ialah konsep asas yang digunakan dalam sains komputer.
- Data ialah cara tertentu diterima dan merekodkan pemerhatian berbanding dengan realiti sekeliling.
- Ia mudah dan kompleks (struktur), primer dan sekunder.
- Pangkalan data ialah koleksi bahan bebas yang dipersembahkan dengan cara yang sistematik supaya ia boleh ditemui, diubah suai dan digunakan.
Sejauh manakah objektif ini? Pengarang yang berwibawaagaknya. Amalan sebenar cenderung untuk memastikan setiap bidang subjek menentukan sistem datanya yang betul dan memberi setiap peluang untuk membina model dinamik yang baik.
Adalah perkara biasa bagi pelanggan (pengguna) untuk memaksakan pendapatnya sendiri pada pengaturcara (pereka bentuk pangkalan data) tentang cara dan perkara yang perlu dilakukan. Dari sudut pengaturcaraan, sebarang keinginan pelanggan boleh dipenuhi dengan ketepatan yang terbaik.
Memerlukan Oracle untuk menyelesaikan masalah bajet untuk penyelenggaraan bekalan air luar bandar (bangunan 21 di kampung) - bagus. MySQL diperlukan untuk mengatur sistem penjejakan untuk item mel untuk semua pejabat pos di Rusia - semuanya akan berfungsi juga.
Anda sentiasa boleh mengarang sebarang algoritma dan menyediakan akses kepada sebarang perwakilan maklumat dalam definisi konsep data, yang ditubuhkan oleh pembangun sistem pengurusan pangkalan data atau bahasa pengaturcaraan. Soalannya berbeza: bagaimana untuk melakukannya dengan kos minimum dalam dinamik maksimum?
Pangkalan data, contoh
Pangkalan ringkas dibuat tanpa model. Konsep asas data dan komunikasi adalah kecil, fungsinya sangat mudah. Sebagai contoh, untuk institusi pengajian tinggi anda memerlukan:
- jadual guru;
- jadual kumpulan (kunci dan nombor kumpulan);
- jadual am pelajar (kunci kumpulan digunakan).
Dekan ingin tahu perkembangan guru-guru. Jadual guru mempunyai medan:
- nama keluarga;
- nama;
- patronim;
- nombor kumpulan diawasi.
Meja pelajar mempunyai medan:
- nama keluarga;
- nama;
- patronim;
- tarikh lahir;
- GPA (untuk semua mata pelajaran);
- nombor kumpulan.
Terdapat sekurang-kurangnya dua pilihan untuk pensampelan: menggunakan nama guru, anda boleh pergi ke nombor kumpulan dan melihat semua pelajar dan purata markah mereka, atau dengan nama akhir guru dan yang terakhir nama pelajar, anda boleh melihat purata markah yang terakhir.
Walaupun dalam versi yang begitu mudah, masalah dijamin dan sesuatu perlu diubah. Situasi: guru jatuh sakit, sebulan lagi menggantikannya, bermakna dia menyelia dua kumpulan. Hanya terdapat satu medan di bawah satu nombor kumpulan dalam jadual guru.
Untuk menyelesaikan masalah, anda perlu menambah medan pendua. Dan jika dua orang sakit, maka tambahkan tiga bidang. Jadi jadual guru mula berkembang dari awal.
Terdapat pilihan lain: gantikan medan angka kekunci kumpulan dengan yang simbolik. Kemudian, setiap kali anda memilih, anda perlu menukar rentetan itu kepada urutan kunci dan satu pertanyaan sql akan bertukar menjadi beberapa.
Contoh yang lebih menjanjikan ialah bukan untuk membuat jadual, tetapi untuk membuat objek. Kemudian guru adalah objek, dan dia boleh mempunyai beberapa kumpulan yang diawasi. Tetapi ia sentiasa satu objek. Objek guru mempunyai kunci unik, tetapi boleh mempunyai berbilang kumpulan yang diawasi. Kumpulan ini juga mempunyai kunci unik. Seorang pelajar juga.
Ketiga-tiga jawatan bukan sahaja tersedia dalam tugasan, tetapi boleh dikembangkan lagi.
Pangkalan berorientasikan objek
Pemimpin industri maklumatmenawarkan pangkalan data hubungan klasik. Ia diuji oleh kehidupan, ia berfungsi, ia selamat, boleh dipercayai dan, sekiranya berlaku masalah, ia membenarkan anda memulihkan maklumat.
Pangkalan data berorientasikan objek (OODB) mula dibangunkan pada pertengahan 1980-an dan, menurut pengarang yang berwibawa, menjanjikan sehingga hari ini. Tetapi setakat ini, selain daripada teori asas dan peruntukan konsep, tiada OODB yang telah mencapai penarafan dan pengedaran yang sama seperti MySQL, MS SQL Server atau Oracle dalam semua penjelmaannya yang pelbagai.
Tetapi bagaimana pula jika takrifan, konsep data, jenis, atribut, kelas, hierarki dicadangkan oleh pembangun yang ratingnya tidak mencukupi untuk mewujudkan komuniti pengaturcara yang mengamalkan mentaliti OODB ini? Kita perlu bergantung pada kekuatan kita sendiri.
Lebih daripada tiga puluh varian OODB telah dicipta dalam persekitaran Linux. Tetapi di manakah jaminan bahawa pangkalan data yang dibuat tidak memerlukan lebih banyak fungsi? Persekitaran Windows tidak menawarkan banyak jaminan dalam bidang ini.
Penyelesaian berorientasikan objek
Namun, ada penyelesaiannya. Menggunakan MySQL sebagai contoh, anda boleh menunjukkan cara jadual hubungan standard bertukar menjadi model berorientasikan objek bagi masalah yang sedang diselesaikan.
Tiada pangkalan data di sini, tetapi terdapat persekitaran untuk membentuk sistem objek anda sendiri. Kuasa MySQL digunakan hanya sebagai memori hubungan untuk jadual daripada baris maklumat. Logik penggunaan ditentukan oleh pembangun sendiri. Khususnya, terdapat jadual is_cache. Ia mempunyai segala-galanyabeberapa medan asas:
- kod_pemilik;
- kod_sesi;
- h_code;
- a_surprise;
- a_kandungan.
Medan selebihnya membawa fungsi perkhidmatan. Jadual ini terletak pada input sebarang permintaan dan merekodkan ketibaannya. Perkara model pangkalan data akan berfungsi ditentukan oleh pembangunnya. Perkara yang sesuai dalam medan kandungan (a_contents) ditentukan oleh objek model yang dibuat oleh pembangun.
Terdapat empat perkara dalam idea ini: hit, hit session, kod sejarah hit dan kandungan tertentu. Apakah panggilan, sistem objek apa yang perlu dibina - ditentukan oleh pemaju. Apa yang dimaksudkan dengan sesi (proses kerja) ditentukan oleh pembangun. Kod sejarah ialah keupayaan untuk melancarkan semula permintaan.
Jadual di sini tiada kaitan dengan kawasan subjek. Terdapat pengawal panggilan (is_cache), terdapat pengelogan (is_customs), terdapat sejarah panggilan (is_histories). Jadual selebihnya ditentukan oleh tugasan yang sedang diselesaikan.
Malah, penyelesaian ini mencadangkan mencipta OODB anda sendiri berdasarkan model pangkalan data domain terbina dan masalah yang sedang diselesaikan. Terdapat kelebihan yang besar di sini - ini ialah konsep data anda sendiri, model pembentangan anda sendiri dan hubungan antara mereka. Terdapat asas di sini - pangkalan data hubungan yang hebat. Tidak akan ada masalah mencari sesuatu dan salah faham sesuatu.
Model: sistem objek + DBMS
Hampir mustahil untuk mengubah apa-apa dalam teknologi maklumat. Revolusi maklumat sebenar masih jauh. kesedaran profesionalpembangun perisian tidak akan mengubah tradisi klasik. Tetapi masih ada jalan keluar dari situasi itu.
Menggunakan sistem pengurusan pangkalan data moden yang boleh dipercayai sebagai asas untuk mewujudkan persekitaran untuk kewujudan model anda sendiri, anda boleh mencapai kejayaan yang ketara.
Dalam apa jua keadaan, anda perlu membina paparan atau model data untuk menyelesaikan tugasan, tetapi anda perlu melakukannya dengan betul: biarkan ia menjadi sistem objek, dan DBMS yang baik menjadi persekitarannya.