Pada modul sebelumnya, kami memperkenalkan konsep database, membahas jenis data yang disimpan, dan berlatih mengirim permintaan REST API untuk mengambil data. Pada saat yang sama, kami tetap menjadi peserta luar dalam proses dan hanya meminta informasi dari berbagai sumber.

Saatnya membuat database Anda! Dalam modul ini, kita akan melakukan hal itu, kita akan memahami bagaimana data disimpan dalam database dan bagaimana mereka dapat saling berhubungan. Tapi pertama-tama, mari kita mulai dengan teorinya. Mari kita berurusan dengan bentuk di mana data datang kepada kita, serta dengan kategori apa basis data dibagi menurut struktur data.

Dasar Data

Representasi data

Pemimpin mutlak dalam representasi data di REST API adalah format JSON. Dalam semua contoh dari modul sebelumnya, kami menerima data dalam format ini. Perlu diingat bahwa REST tidak memberlakukan batasan pada pilihan format untuk kami, di masa depan Anda pasti akan bertemu orang lain (misalnya, XML). Pada saat yang sama, karena bobotnya yang ringan dan mudah dibaca oleh manusia, pengembang sering kali lebih memilih JSON.

JSON (JavaScript Object Notation) adalah format pertukaran data berbasis teks berdasarkan JavaScript. Dan jangan biarkan JavaScript dalam judul membodohi Anda. Format JSON, meskipun berasal dari bahasa pemrograman ini, sepenuhnya independen dan dapat digunakan di mana saja.

Mari kita lihat apa yang terdiri dari objek JSON dan bagaimana penulisannya.

Semua data yang Anda terima diapit oleh kurung kurawal “{}”. Mereka selalu ditempatkan di awal dan di akhir objek JSON.

Objek itu sendiri terdiri dari sekumpulan record, yang merupakan pasangan “Kunci : Nilai” dan dipisahkan satu sama lain dengan koma “,".

Kuncinya adalah nama entri itu sendiri, diapit tanda kutip “”. Contoh: “nama”, “nilai”, “wilayah”, “alamat”. Itu bisa berupa kata apa saja, hal utama saat berkembang adalah memastikan bahwa maknanya jelas.

Nilai bisa dari berbagai jenis. Mari kita pertimbangkan semuanya.

  1. Tali . Berisi informasi teks, satu set karakter dalam standar Unicode. String diapit oleh tanda petik “”.
  2. Nomor . Itu bisa berupa integer atau floating point. Ditulis apa adanya, tidak perlu menyertakan tanda kutip.
  3. Boolean . Salah satu dari dua nilai. Entah benar atau salah. Seperti angka, ditulis tanpa tanda kutip.
  4. Array . Sekumpulan elemen yang teratur. Setiap elemen dapat dari jenis apa pun. Array diapit dalam tanda kurung siku “[]”, dan elemen-elemennya dipisahkan dengan koma.
  5. Objek . Nilai JSON dapat berupa objek JSON lainnya. Aturan yang sama berlaku untuk itu untuk objek root. Itu juga diapit oleh kurung kurawal dan berisi kumpulan catatannya sendiri.

Lihatlah data yang Anda terima di modul pertama dengan mempertimbangkan informasi ini. Pilih komponen JSON, tentukan jenis nilai yang diterima.

Menyimpan data

Kami telah menangani JSON. Sekarang kita beralih ke hal utama — database. Data dapat disimpan di dalamnya dengan berbagai cara. Pada saat yang sama, secara historis dikembangkan sehingga model database relasional telah menerima distribusi terbesar.

Saat menggunakan model relasional, data disimpan dalam bentuk tabel, dengan kumpulan data tertentu, yang strukturnya ditentukan secara kaku pada tahap desain basis data. Deskripsi struktur data dalam database relasional disebut skema. Ini mendefinisikan komposisi tabel, struktur bidang dalam tabel ini, serta hubungan di antara mereka.

DBMS menggunakan bahasa SQL untuk mengelola data dengan model relasional.

SQL - Bahasa Kueri Terstruktur . Ini adalah bahasa deklaratif, yang berarti bahwa perintahnya hanya menjelaskan tindakan yang diperlukan (menemukan data, menghapusnya, mengubahnya), dan setiap DBMS memutuskan sendiri bagaimana melakukannya.

Ada banyak DBMS relasional yang berbeda. Di antara yang paling umum adalah Oracle, MySQL, MS SQL, PostgreSQL . Omong-omong, AppMaster menggunakan PostgreSQL, yang berarti ia menggunakan DBMS canggih modern yang bekerja di sejumlah besar organisasi yang berbeda dan juga merupakan perangkat lunak gratis (yaitu, Anda tidak perlu membayar uang ekstra untuk menggunakannya).

Pernahkah Anda memperhatikan keberadaan singkatan SQL di hampir setiap nama DBMS? Sebenarnya, nama alternatif untuk database relasional adalah database SQL.

Namun, ada pendekatan alternatif. Database non-relasional, atau NoSQL. Perlu dicatat bahwa TIDAK dalam hal ini bukanlah negasi dari “tidak”, tetapi singkatan dari Tidak saja. Artinya, "Tidak hanya SQL".

DBMS non-relasional tidak menggunakan format kueri umum (seperti SQL), masing-masing mengimplementasikan caranya sendiri dalam bekerja dengan data.

Mereka tidak memerlukan struktur penyimpanan data yang didefinisikan secara unik. Data itu sendiri disimpan di dalamnya bukan dalam bentuk tabel ketat, tetapi dalam bentuk objek dengan serangkaian atribut yang berubah-ubah (seperti JSON). Ini mungkin relevan ketika bekerja dengan data yang strukturnya sering berubah.

Pada saat yang sama, karena strukturnya yang gratis, solusi NoSQL lebih mudah untuk diskalakan jika Anda perlu membuat database yang didistribusikan di beberapa server.

Contoh DBMS NoSQL termasuk MongoDB dan Redis.

Desain basis data

Saatnya mendesain database Anda sendiri. Untuk melakukan ini, buka tab Data Design (Data Designer) di panel kiri.

Data dalam database disimpan dalam bentuk tabel khusus (model). Dan Anda dapat melihat bahwa kami sudah memiliki satu model. Ini adalah bagian dari modul otorisasi dan disertakan dalam setiap proyek secara default. Berkat itu, pengguna baru aplikasi dibuat dan yang sudah ada dikelola. Tapi kami tidak akan memikirkan studinya sekarang, tetapi akan membuat model kami sendiri.

Bayangkan kita sedang mengembangkan layanan peta. Mari kita buat model yang berisi informasi tentang negara. Untuk membuatnya, Anda perlu mengklik kanan di area kosong kanvas dan pilih Buat model kosong.

Untuk membuat, kita hanya perlu menentukan nama model. Kami akan membahas pembuatan otomatis titik akhir dan elemen antarmuka pengguna dalam modul kursus selanjutnya.

Harap dicatat bahwa segera setelah pembuatan, model sudah berisi 4 bidang. Ini adalah bidang sistem, yang keberadaannya sangat menyederhanakan pembuatan awal dan penggunaan model lebih lanjut.

  1. ID (bilangan bulat) - Pengidentifikasi unik, kunci utama. Ini dibuat secara otomatis untuk setiap entri baru dalam tabel dan dimaksudkan untuk memastikan bahwa tidak ada duplikat. Dengan ID Anda dapat secara unik mengidentifikasi catatan dalam tabel. Nilainya dimulai dari 1 dan secara otomatis meningkat 1 untuk setiap entri baru.
  2. CreatedAt (datetime) - Waktu catatan dibuat dalam tabel.
  3. UpdatedAt (datetime) - Waktu entri terakhir diubah.
  4. DeletedAt (datetime) - Waktu entri dihapus. Tentu saja, hanya jika soft-removal digunakan. Yaitu, penghapusan seperti itu, ketika catatan hanya ditandai sebagai dihapus dan difilter oleh permintaan untuk mengaksesnya, tetapi pada saat yang sama secara fisik tetap ada di tabel. Ini berbeda dengan penghapusan massal, yang sebenarnya menghapus data sepenuhnya.

Selain yang sistem, akan lebih bijaksana untuk menambahkan bidang khusus ke model yang dibuat. Misalkan kita ingin melihat nama negara dan beberapa deskripsi dengan informasi tentangnya.

Memilih jenis bidang seharusnya tidak menjadi masalah. Untuk nama, String cocok, dan untuk deskripsi informasi, Teks.


Selain itu, empat sakelar lagi tersedia:

  1. Beberapa nilai (Array) - gunakan array alih-alih entri tunggal.
  2. Bukan nol - bidang yang ditentukan tidak boleh kosong, harus selalu berisi data.
  3. Unik - nilai bidang harus unik, dalam model ini tidak boleh ada dua catatan yang nilainya sama.
  4. Indeks - menunjukkan bahwa indeks khusus akan dibuat untuk bidang ini untuk mempercepat pencarian.

Secara umum, centang tanda hanya benar jika benar-benar diperlukan. Misalnya, kita dapat menandai Not null dan Unique untuk nama negara, dengan asumsi bahwa tidak mungkin ada negara tanpa nama, atau dua negara dengan nama yang sama. Namun, ada baiknya untuk mengontrol ini pada tahap pembuatan logika aplikasi, dan tidak membatasi database itu sendiri.

Demikian pula, buat tabel dengan informasi tentang kota. Pikirkan tentang bidang data apa yang dapat dikandungnya, jenis bidang apa ini.

Data dalam database tidak ada dengan sendirinya, berupa tabel-tabel yang tersebar. Mereka terkait satu sama lain dengan cara tertentu. Kunci untuk mengembangkan model data adalah mendefinisikan hubungan ini dan membangun hubungan.

Untuk membuat tautan seperti itu, perlu untuk menggambar garis dengan mouse dari batas satu model ke model lainnya. Dalam contoh kami, kami tahu pasti bahwa setiap kota terletak di beberapa negara, sehingga kami dapat membuat tautan dari satu negara ke kota lainnya.


Ada 3 jenis koneksi yang berbeda:

  1. Satu-ke-satu (memiliki satu) . Setiap record dalam tabel dipetakan ke satu record dari tabel terkait (ini juga berlaku sebaliknya). Contoh sederhana adalah seseorang dan paspornya. Kami selalu dapat yakin bahwa koneksi ini unik. Paspor hanya dapat memiliki satu pemegang, dan setiap orang hanya dapat memiliki satu paspor yang masih berlaku.
  2. Satu-ke-banyak (memiliki banyak) . Setiap record dalam satu tabel dapat memiliki banyak record di tabel lain. Database kami adalah contoh serupa. Suatu negara dapat memiliki banyak kota yang berbeda, tetapi setiap kota hanya dapat dimiliki oleh satu negara. Ini adalah koneksi yang akan kita buat.
  3. Banyak-ke-banyak . Hubungan di mana beberapa catatan dari satu tabel bisa berhubungan dengan beberapa catatan dari yang lain. Contoh sederhananya adalah hubungan antara guru dan siswa. Setiap guru dapat mengajar banyak siswa, sama seperti setiap siswa dapat belajar dari banyak guru yang berbeda.

Pekerjaan rumah

Bayangkan Anda harus mengembangkan aplikasi untuk toko online. Buat model database agar bisa berfungsi.

  • Penting untuk menyediakan ketersediaan barang dengan kartu deskripsinya, berbagai kategori barang, informasi tentang pesanan dan tentang pelanggan.
  • Isi tabel dengan bidang dari berbagai jenis (gunakan setidaknya 5 jenis).
  • Membangun hubungan antar tabel. Gunakan semua 3 jenis tautan.