Menganalisis struktur tabel database

Selesai

Memahami bagaimana tabel disusun dan untuk apa Anda dapat menggunakannya di Azure SQL adalah kunci untuk mengembangkan model data aplikasi yang baik.

Dalam aplikasi referensi online permainan kartu, berbagai jenis data perlu disimpan dalam database sehingga dapat mewakili kartu fisik seakurat mungkin dalam media digital ini.

Di unit ini, Anda akan mempelajari dasar-dasar tabel database di Azure SQL, cara tabel disimpan, dan jenis data yang dapat mereka simpan.

Diagram of a database with pointers to separate tables showing Azure SQL holds tables.

Database relasional dan model data

Database relasional adalah jenis database yang menyimpan data dalam baris dan kolom yang digabungkan untuk membuat struktur yang disebut tabel, mirip dengan memasukkan data ke dalam lembar bentang Excel. Anda bisa menghubungkan tabel dalam database dengan nilai kunci unik; misalnya, ID produk dalam tabel produk yang dirujuk dalam tabel pesanan. Anda juga dapat memiliki nilai kunci yang terkait dalam hierarki dengan hubungan satu-ke-banyak atau induk-anak. Model data adalah representasi tabel dalam database relasional dan bagaimana mereka terhubung ke atau mereferensikan satu sama lain.

Diagram of a sample data model consisting of four tables.

Apa itu tabel database?

Tabel adalah salah satu dari banyak objek dalam database relasional, tetapi sejauh ini adalah yang paling penting. Tanpa tabel, bagaimana dan di mana kita akan menyimpan data? Tabel mirip dengan spreadsheet, terdiri dari kolom dan baris. Mengapa memiliki database sama sekali saat Anda bisa menggunakan spreadsheet? Bayangkan memiliki ribuan lembar bentang di komputer Anda dengan beberapa berisi jutaan atau miliaran baris. Bagaimana Anda dapat mencari file-file ini? Bagaimana mereka disimpan dan dipesan secara logis dan fisik? Database memungkinkan kami untuk menyimpan "spreadsheet" ini dalam metodologi terstruktur dan terpesan, menyediakan akses instan ke rekaman apa pun dalam tabel apa pun dengan kecepatan subdetik.

Mirip dengan spreadsheet, tabel terdiri dari baris (elemen horizontal) dan kolom (elemen vertikal). Anda dapat menganggap kolom sebagai atribut dari apa yang disimpan atau dijelaskan tabel kami. Anda bisa menganggap baris dalam tabel sebagai rekaman yang terdiri dari data di kolom ini. Saat baris dan kolom bersinggungan, itu disebut bidang, seperti sel di lembar bentang. Meskipun jumlah rekaman, atau baris, Anda dapat menyimpan dalam tabel dibatasi oleh jumlah penyimpanan komputer atau ruang disk yang dapat diakses database Anda, jumlah kolom dibatasi hingga 1.024. Memiliki tabel dengan ratusan kolom sulit dipertahankan, seperti mencari penclip kertas di bagian bawah laci sampah Anda. Tabel adalah struktur permanen dalam database, tetapi Anda dapat menggunakan tabel sementara dalam skenario tertentu, yang akan kita bahas nanti dalam modul ini.

Diagram of a sample table with multiple columns and rows.

Dalam tabel ini yang disusun dalam format baris dan kolom adalah data, yang dapat disimpan sebagai angka, tanggal, teks, objek biner, atau bahkan sebagai dokumen JSON. Bersama dengan hubungan antar tabel, Anda dapat menerapkan seperangkat aturan untuk membatasi atau meningkatkan data apa yang dapat disimpan dalam tabel.

Beberapa aturan yang dapat Anda terapkan adalah:

  • Kemampuan untuk membatasi apakah bidang dalam baris bisa null atau memerlukan nilai
  • Menetapkan nilai default jika tidak ada nilai yang diberikan
  • Tentukan dan batasi apa yang merupakan nilai yang dapat diterima
  • Menyisipkan data secara otomatis yang berasal dari nilai komputasi berdasarkan kolom lain dalam tabel

Aplikasi informasi permainan kartu akan memiliki bidang seperti nama kartu, ID kartu, dan warna kartu, dengan setiap kartu menjadi catatan dalam tabel. Dengan menggunakan skenario ini, Anda dapat melihat bagaimana baris dan kolom dalam tabel menyimpan informasi khusus untuk salah satu kartu permainan dalam gambar berikut.

Diagram showing how the columns of the cards table relates to the physical playing card of the scenario.

Tabel yang dioptimalkan memori

Azure SQL juga memiliki tabel memori yang dioptimalkan, tabel yang disimpan dalam memori utama server database, di mana baris dibaca dan ditulis langsung ke memori. Namun, ada juga salinan fisik tabel pada disk untuk durabilitas jika ada skenario mulai ulang atau pemulihan bencana. Untuk tujuan Anda dalam modul ini, Anda tidak akan bekerja dengan tabel yang dioptimalkan memori, tetapi penting untuk mengetahui bahwa tabel tersebut ada.

Seperti yang Anda lihat, membuat keputusan cerdas tentang struktur tabel sebelum menerapkan kode apa pun dapat memastikan model data yang kuat dan dapat diperluas yang dapat tumbuh dan berkembang dengan aplikasi Anda.

Membandingkan jenis data Azure SQL

Saat Anda menentukan kolom dalam tabel, Anda tidak hanya perlu mengidentifikasinya dengan nama yang unik untuk tabel, Anda juga harus menetapkan jenis data. Jenis data adalah atribut kolom yang menentukan jenis data yang dapat disimpannya seperti angka, teks, dan tanggal.

Memutuskan kapan menggunakan jenis data mana

Menyimpan data dalam database mengharuskan Anda untuk melihat dari dekat jenis data apa yang ingin Anda simpan. Apakah itu uang? Seberapa besar jumlahku? Apakah Anda perlu menyimpan desimal? Apakah aplikasi memerlukan database untuk menyimpan gambar? Berapa banyak teks yang perlu ditangguhkan kolom? Bergantung pada jawaban ini, Anda memiliki jenis data tertentu yang dapat digunakan untuk setiap skenario.

Beberapa jenis data umum yang digunakan di Azure SQL adalah:

  • Karakter: Saat Anda ingin menyimpan karakter atau teks dalam database, Azure SQL menyediakan nchar jenis data dan nvarchar . Gunakan nchar untuk data teks ukuran tetap dan nvarchar untuk data teks ukuran variabel. Menggunakan max sebagai panjang nvarchar memungkinkan penyimpanan teks hingga 2 GB panjang per bidang berturut-turut. Nchar dan nvarchar juga memungkinkan karakter multibyte yang Anda lihat dalam bahasa seperti Jepang dan Cina.
  • Desimal: Angka dengan presisi tertentu menggunakan decimal jenis data. Jenis data ini harus ditentukan oleh dua variabel. Pertama, presisi (p), atau jumlah total maksimum digit desimal yang akan disimpan. Kedua, skala, jumlah digit desimal yang disimpan di sebelah kanan titik desimal.
  • Bilangan bulat: Saat menyimpan angka persis yang tidak perlu membawa nilai desimal, Anda dapat menggunakan integer jenis. Sebagian besar kasus penggunaan termasuk dalam menggunakan int jenis data, tetapi ada jenis bilangan bulat lainnya untuk kasus khusus. Untuk nilai kecil, Anda dapat menggunakan tinyint dan smallint; untuk jumlah besar, bigint adalah yang terbaik. Jenis data uang dapat digunakan untuk menyimpan mata uang.
  • Bit: Jenis bit data hanya dapat berisi 0 atau 1, membuatnya sempurna untuk data boolean atau true/false.
  • Tanggal dan Waktu: Mirip dengan jenis data angka, Anda dapat menyimpan tanggal dan waktu dalam database dengan berbagai tingkat presisi. date Jenis data menyimpan data dalam database dalam format YYYY-MM-DD. Jika Anda membutuhkan lebih banyak akurasi, Anda dapat menggunakan datatime2 jenis data, yang menyimpan tanggal dalam format YYYY-MM-DD hh:mm:ss[.nnnnnnn]. Jika Anda hanya membutuhkan waktu, maka Anda dapat menggunakan time jenis data, yang menggunakan format hh:mm:ss[.nnnnnnn]. Jika Anda membuat aplikasi dengan ingat globalisasi, Anda dapat menggunakan datetimeoffset jenis data, yang berisi informasi zona waktu.
  • Biner: Jika Anda perlu menyimpan data seperti gambar atau file, Anda dapat menggunakan binary jenis data dan varbinary . Jenis binary data adalah untuk data biner panjang tetap, sementara varbinary untuk data biner panjang variabel.
  • Spasial: Azure SQL memiliki dua jenis data spasial; geometry dan geography. Jenis mewakili geometry data dalam sistem koordinat Euclidean (datar), sementara jenis mewakili geography data dalam sistem koordinat bulat-bumi. Setelah data disimpan dalam database menggunakan jenis ini, Anda dapat melakukan operasi spasial dengan SQL, seperti kueri Tetangga Terdekat (di mana adalah restoran pizza terdekat dengan lokasi saya) atau lokasi titik di ruang geometris (di mana x, y, dan z bersinggungan pada grafik).

Dengan pengetahuan baru Anda tentang jenis data database, lihat kembali model data aplikasi permainan kartu. Anda dapat melihat bahwa kolom seperti card_id dan card_power akan menjadi jenis angka, di mana card_name, card_type, dan card_color akan menjadi jenis data teks. Seni kartu perlu disimpan, jadi menggunakan varbinary ukuran maksimalnya akan memungkinkan Anda untuk menyimpan gambar dalam tabel.

Bagaimana tabel disimpan?

Pada sistem file tempat database berada, tabel disimpan di halaman. Halaman ini adalah file 8K yang berasal dari data, teks/gambar, atau halaman indeks. Seperti indeks buku atau artikel, setiap halaman dimulai dengan bagian header yang menjelaskan apa yang ada di halaman. Informasi header ini mencakup nomor halaman, jenis halaman, jumlah ruang kosong di halaman, dan ID unit alokasi objek yang memiliki halaman. Ekstensi menampung delapan halaman yang berdekatan secara fisik, sehingga database Azure SQL memiliki 16 tingkat per megabyte. (64K per tingkat * 16 tingkat = 1.024K atau 1 MB) Anda dapat membaca selengkapnya tentang topik ini di Panduan arsitektur Halaman dan tingkat.

Diagram showing eight pages to an extent for storing SQL Server tables.

Mengapa tabel disimpan penting? Saat merancang model data dan memutuskan jenis data dan ukuran tipe data apa yang akan digunakan, Anda perlu mengingat bahwa data dari satu halaman tidak dapat mengalir dan melanjutkan ke halaman lain. Membuat kolom dengan jenis data yang selalu menggunakan ukuran maksimum dapat menyebabkan masalah performa karena halaman berpotensi dibuat untuk setiap baris.

Uji pengetahuan Anda

1.

Aplikasi global memerlukan waktu untuk disimpan dengan informasi zona waktu. Jenis data mana yang akan digunakan?

2.

Seberapa besar file halaman yang menyimpan data tabel?