Data biasanya diasosiasikan dengan pemrograman dan di dunia informasi modern disajikan dalam tiga versi yang setara secara logis: data dijelaskan dan digunakan dalam program dalam bahasa pemrograman; data dalam sistem database; data dalam sistem informasi terdistribusi. Pemrograman modern telah memberikan kebebasan relatif hanya untuk varian pertama formalisasi informasi. Dua opsi kedua adalah bentuk yang kurang lebih dapat diandalkan untuk menyediakan informasi dan hubungan antara komponen-komponennya.
Data dulu dan sekarang
Posisi dasar bahasa pemrograman adalah deskripsi yang tepat dari data dan algoritma. Komputer tidak "menghadirkan" peluang ketidakpastian: ada sesuatu yang harus ditindaklanjuti, dan ada perintah yang melakukan tindakan itu.
Konsep modern didasarkan pada fondasi yang jauh lebih tinggi: ada yang diberikan, dan apa tepatnya yang akan ditentukan di tempat penggunaannya. Bagaimanapun, pada saat digunakan, data secara otomatis diperiksa dan dikonversi ke jenis yang benar. Pemrogram modern tidak berkewajiban untuk menjaga deskripsi awal mereka dan memperhatikan kompatibilitas tipe dalam algoritma.
Proses transisi:
- dari data yang diketik dan deskripsi wajibnya sebelum digunakan;
- untuk data yang tidak diketik dan bebas dari kewajiban untuk mendeskripsikan dan menggunakannya.
Faktanya, kita dapat mengenali relaksasi relatif dari persyaratan formalisasi - ini hanya tersedia di lingkungan alat pemrograman modern. Saat runtime, jenis setiap datum ditetapkan, dan urutan perintah didefinisikan dengan baik.
Tipe dan Pemodelan
Matematika dan fisika, perdagangan dan produksi, ekonomi dan bidang lain di mana angka digunakan, selalu beroperasi dengan data dan tidak mementingkan konsep tipe. Fakta bahwa bilangan bisa utuh atau pecahan tidak terlalu penting.
Setiap rumus atau tindakan spesifik dapat menghasilkan bilangan bulat, pecahan tak hingga, bilangan real atau kompleks. Sampai sekarang, ada keajaiban pikiran seperti yang sangat kecil dan sangat besar. Selain itu, keajaiban ini bahkan memiliki sifat.
Masih belum ada kebebasan dalam pemrograman. Semuanya harus diformalkan secara ketat. Konsep data, pertama-tama, adalah tipe:
- bilangan bulat;
- boolean;
- char;
- string dan seterusnya.
Nama tipe mungkin berbeda dalam bahasa pemrograman yang berbeda, tetapi selalu ada bilangan bulat atau bilangan real, nilai boolean, simbol,garis. Masih ada relik dan ide-ide spesifik yang tersisa: unsigned integer, code, byte, word, double word, fixed length string.
Konsep data dalam sistem data tidak memiliki kebebasan. Bahasa SQL - "internasional" (ada dialek untuk setiap basis data modern) - tidak mentolerir ketidakakuratan tidak hanya dalam data, tetapi juga dalam kueri sql. Kesalahan dalam permintaan adalah jaminan tidak adanya hasil. Tidak perlu membicarakan pelanggaran deskripsi sama sekali.
Memodelkan proses informasi dan representasi data adalah satu-satunya cara pasti untuk membangun struktur yang dapat berkembang dan beradaptasi dengan kondisi yang berubah.
Dinamika asli
Informasi alami adalah perubahan yang terus menerus. Untuk memberikan deskripsi formal dan konsep model data di area subjek tertentu berarti memecahkan tiga masalah:
- tentukan data apa yang ada di sini;
- formalkan hubungan di antara mereka;
- jelaskan proses untuk mengubah data dan hubungan.
Contoh kumpulan data dari algoritme sederhana dalam JavaScript - salinan model sistem manajemen basis data yang paling solid sekalipun.
Hanya saja dalam kasus kedua, para ahli dan spesialis, ketika merancang struktur data, tabel, dan hubungan, biasanya tidak melihat (sangat sulit untuk menutupi sejumlah besar informasi alami) esensi dari berbagai hal, dan kumpulan data yang rumit dan belum dikembangkan diperoleh, sementara di area subjek informasi sumber beredar dengan bebas dan mudah.
Statismungkin
Ini adalah praktik JavaScript yang umum untuk menyertakan kode yang dilampirkan ke halaman dan fungsi yang ditetapkan ke peristiwa pada tag halaman. Apa pun itu, tag halaman menentukan data yang diterima, diubah, atau dibuat oleh sumber daya web tertentu.
Jika Anda memusatkan kode pengendali Anda dengan sangat hati-hati pada peristiwa elemen, dan bukan pada kode halaman secara keseluruhan, ini adalah jalan keluar terbaik. Idealnya, ketika kode tidak memasukkan data baru atau tidak memperbaiki data yang tersedia, tetapi berfokus pada apa yang sebenarnya dimilikinya pada saat tertentu.
Bahkan, jika Anda mendefinisikan konsep "data" sebagai deskripsi statis minimal dari sumber informasi dan mengikutinya, maka ini berarti Anda memiliki peluang untuk berhasil.
Berkenaan dengan database, segalanya jauh lebih rumit. Kode JavaScript apa pun "menyediakan" halaman dengan fungsionalitas. Basis data apa pun adalah kumpulan tabel, hubungan di antara mereka, prosedur tersimpan, kueri, dan fungsionalitas yang tersedia dari luar.
Statis adalah masalah dari algoritma apa pun. Konsep modern data statis: angka, string, karakter, dan sebagainya. Saat memproses atau menulis ke tabel database, semuanya berjalan lancar. Tetapi kapan yang asli memperoleh dimensi atau makna yang berbeda? Opsi satu: ubah tanda, tetapi koneksi dan permintaan mungkin langsung masuk.
Statika dan objek
Mendefinisikan konsep "data" sebagai objek mengubah situasi secara dramatis. Objek memiliki strukturnya sendiri. Di sini Anda dapat menggunakan deskripsi variabel apa pun. Peran tidak akan dimainkan. Sebuah objek memiliki metode melalui mana data tersedia. Sejak semuanyadigunakan dalam bidang pemrograman, yaitu tiga metode dasar: baca, tulis, ubah. Anda dapat menambahkan lebih banyak untuk membandingkan, mencari, mengkloning, dll.
Area subjek memberlakukan rentang properti pada setiap data. Dengan demikian, ternyata konsep data ditransformasikan menjadi semacam deskripsi yang dapat diubah secara dinamis. Statis di dalam objek memberikan dinamika di luarnya.
Mengubah kombinasi deskriptor statis di dalam suatu objek, Anda tidak perlu khawatir tentang dinamika hubungannya dengan objek lain.
Pemrograman dan penyajian data
Apa itu data? Kesadaran publik sudah terbiasa dengan teknologi informasi, bekerja di awan dan memiliki wadah di ruang virtual. Sekarang, tidak hanya programmer dan pengguna profesional, tetapi juga orang biasa yang kompeten dalam hal informasi dan penggunaannya.
Tapi apa itu pemrograman? Sampai hari ini, opini publik memberikan definisi berikut untuk konsep ini dan konsep-konsepnya:
- Informasi dan data adalah konsep dasar yang digunakan dalam ilmu komputer.
- Data adalah cara tertentu yang diterima dan dicatat pengamatan relatif terhadap kenyataan di sekitarnya.
- Mereka sederhana dan kompleks (struktur), primer dan sekunder.
- Basis data adalah kumpulan materi independen yang disajikan secara sistematis sehingga dapat ditemukan, dimodifikasi, dan digunakan.
Seberapa objektif ini? Penulis otoritatifberpikir begitu. Praktek nyata cenderung memastikan bahwa setiap bidang studi menentukan sistem data yang benar dan memberikan setiap kesempatan untuk membangun model dinamis yang baik.
Tidak jarang seorang pelanggan (konsumen) memaksakan pendapatnya sendiri kepada seorang programmer (perancang basis data) tentang bagaimana dan apa yang harus dilakukan. Dari sudut pandang pemrograman, setiap keinginan pelanggan dapat dipenuhi dengan sangat presisi.
Perlu Oracle untuk memecahkan masalah penganggaran untuk pemeliharaan pasokan air pedesaan (gedung 21 di desa) - baik. MySQL diperlukan untuk mengatur sistem pelacakan untuk item surat untuk semua kantor pos di Rusia - semuanya akan berfungsi juga.
Anda selalu dapat menyusun algoritme apa pun dan menyediakan akses ke representasi informasi apa pun dalam definisi konsep data, yang dibuat oleh pengembang sistem manajemen basis data atau bahasa pemrograman. Pertanyaannya berbeda: bagaimana melakukannya dengan biaya minimal dalam dinamika maksimum?
Database, contoh
Basis sederhana dibuat tanpa model. Konsep dasar data dan komunikasi kecil, fungsinya sangat sederhana. Misalnya, untuk institusi pendidikan tinggi yang Anda butuhkan:
- tabel guru;
- tabel grup (kunci dan nomor grup);
- tabel umum siswa (kunci grup digunakan).
Dekan ingin mengetahui perkembangan para guru. Tabel guru memiliki bidang:
- nama keluarga;
- nama;
- patronimik;
- nomor grup yang diawasi.
Tabel siswa memiliki kolom:
- nama keluarga;
- nama;
- patronimik;
- tanggal lahir;
- IPK (untuk semua mata pelajaran);
- nomor grup.
Setidaknya ada dua opsi untuk pengambilan sampel: menggunakan nama guru, Anda dapat pergi ke nomor grup dan melihat semua siswa dan nilai rata-rata mereka, atau dengan nama belakang guru dan nama belakang nama siswa, Anda dapat melihat nilai rata-rata yang terakhir.
Bahkan dalam versi yang begitu sederhana, masalah dijamin dan sesuatu harus diubah. Situasi: guru jatuh sakit, satu bulan lagi menggantikannya, yang berarti dia mengawasi dua kelompok. Hanya ada satu field di bawah satu nomor kelompok di tabel guru.
Untuk mengatasi masalah, Anda perlu menambahkan bidang duplikat. Dan jika dua sakit, maka tambahkan tiga bidang. Jadi meja guru mulai tumbuh dari nol.
Ada opsi lain: ganti bidang numerik dari kunci grup dengan yang simbolis. Kemudian, setiap kali Anda memilih, Anda harus mengubah string menjadi urutan kunci, dan satu kueri sql akan berubah menjadi beberapa.
Contoh yang lebih menjanjikan bukanlah membuat tabel, tetapi membuat objek. Kemudian guru adalah objek, dan dia dapat memiliki beberapa kelompok yang diawasi. Tapi itu selalu satu objek. Objek pengajar memiliki kunci unik, tetapi dapat memiliki beberapa grup yang diawasi. Grup juga memiliki kunci unik. Seorang siswa juga.
Ketiga posisi tidak hanya tersedia dalam tugas, tetapi dapat dikembangkan lebih lanjut.
Basis berorientasi objek
Pemimpin industri informasimenawarkan database relasional klasik. Mereka diuji oleh kehidupan, mereka bekerja, mereka aman, dapat diandalkan dan, jika ada masalah, mereka memungkinkan Anda untuk memulihkan informasi.
Database berorientasi objek (OODB) mulai dikembangkan pada pertengahan 1980-an dan, menurut penulis yang berwenang, menjanjikan hingga hari ini. Namun sejauh ini, terlepas dari teori fundamental dan ketentuan konseptual, tidak ada OODB yang mencapai peringkat dan distribusi yang sama seperti MySQL, MS SQL Server atau Oracle dalam semua inkarnasinya yang beragam.
Tetapi bagaimana jika definisi, konsep data, tipe, atribut, kelas, hierarki diusulkan oleh pengembang yang peringkatnya tidak cukup untuk membuat komunitas pemrogram yang menganut mentalitas OODB ini? Kita harus mengandalkan kekuatan kita sendiri.
Lebih dari tiga puluh varian OODB telah dibuat di lingkungan Linux. Tapi di mana jaminan bahwa database yang dibuat tidak akan membutuhkan lebih banyak fungsionalitas? Lingkungan Windows tidak menawarkan banyak jaminan di area ini.
Solusi berorientasi objek
Namun, ada solusinya. Menggunakan MySQL sebagai contoh, Anda dapat menunjukkan bagaimana tabel relasional standar berubah menjadi model berorientasi objek dari masalah yang sedang dipecahkan.
Tidak ada database di sini, tetapi ada lingkungan untuk membentuk sistem objek Anda sendiri. Kekuatan MySQL hanya digunakan sebagai memori relasional untuk tabel dari baris info. Logika penggunaan ditentukan oleh pengembang sendiri. Secara khusus, ada tabel is_cache. Ini memiliki segalanyabeberapa bidang dasar:
- kode_pemilik;
- session_code;
- h_code;
- a_surprise;
- a_contents.
Field lainnya membawa fungsi layanan. Tabel ini berdiri di masukan dari setiap permintaan dan mencatat kedatangannya. Apa model database akan bekerja ditentukan oleh pengembangnya. Apa yang akan muat di bidang konten (a_contents) ditentukan oleh objek model yang dibuat oleh pengembang.
Ada empat hal dalam ide ini: hit, hit session, hit history code, dan konten tertentu. Apa itu panggilan, sistem objek apa yang harus dibangun - ditentukan oleh pengembang. Yang dimaksud dengan sesi (proses kerja) ditentukan oleh pengembang. Kode histori adalah kemampuan untuk melakukan rollback pada permintaan.
Tabel di sini tidak ada hubungannya dengan area subjek. Ada call controller (is_cache), ada logging (is_customs), ada call history (is_hitories). Tabel yang tersisa ditentukan oleh tugas yang sedang diselesaikan.
Bahkan, solusi ini menyarankan untuk membuat OODB Anda sendiri berdasarkan model database domain yang dibangun dan masalah sedang diselesaikan. Ada nilai tambah yang besar di sini - ini adalah konsep data Anda sendiri, model presentasi Anda sendiri dan hubungan di antara mereka. Ada fondasi di sini - basis data relasional yang hebat. Tidak akan ada masalah dalam mencari sesuatu dan salah memahami sesuatu.
Model: sistem objek + DBMS
Hampir tidak mungkin mengubah apa pun dalam teknologi informasi. Revolusi informasi yang sebenarnya masih jauh. kesadaran profesionalpengembang perangkat lunak tidak akan mengubah tradisi klasik. Tapi masih ada jalan keluar dari situasi tersebut.
Menggunakan sistem manajemen basis data modern yang andal sebagai dasar untuk menciptakan lingkungan bagi keberadaan model Anda sendiri, Anda dapat mencapai kesuksesan yang nyata.
Bagaimanapun, Anda harus membangun tampilan atau model data untuk menyelesaikan tugas, tetapi Anda harus melakukannya dengan benar: biarkan itu menjadi sistem objek, dan DBMS yang baik menjadi lingkungannya.