Batasan tabel

Selesai

Batasan tabel database tidak hanya memungkinkan Anda mengontrol apa dan bagaimana Anda menyimpan data, tetapi juga menentukan hubungan antar tabel.

Dengan menggunakan batasan dan hubungan tabel, Anda dapat memenuhi aturan khusus permainan kartu untuk kualitas data tanpa baris duplikat. Penting untuk menghilangkan baris duplikat karena tidak hanya menyebabkan masalah performa, mereka juga menghapus kemampuan untuk memiliki data yang lengkap, konsisten, dan akurat (juga disebut integritas data).

Dengan mempelajari cara menggunakan batasan dan hubungan tabel, Anda dapat memastikan integritas data di seluruh aplikasi.

Menetapkan nilai unik dengan kunci primer

Klasifikasi membantu saat mencari item tertentu dengan membatasi pilihan Anda dan menyajikan serangkaian hasil yang lebih kecil. Database relasional berisi kunci primer, yang merupakan kolom atau kombinasi kolom yang berisi nilai yang secara unik mengidentifikasi setiap baris dalam tabel. Dengan permainan kartu, Anda dapat membatasi hasil pencarian berdasarkan jenis kartu atau warna, tetapi dengan menetapkan kunci primer juga, database dapat langsung memanggil kembali semua informasi tentang kartu itu dengan satu nilai unik.

Saat menentukan dan membuat tabel, Anda dapat menggabungkan kolom kunci utama dengan kolom identitas. Menggabungkan dua kolom tidak hanya memastikan nilai yang unik, tetapi juga memiliki Azure SQL untuk mengurus penegakan dan pembuatan nilai unik ini secara otomatis. Perhatikan bahwa tabel hanya boleh berisi satu kunci primer, dan kolom atau kumpulan kolom ini tidak boleh berisi nilai kosong atau null. Dalam skenario kami, tabel kartu akan memiliki kunci utama pada kolom card_id , menyediakan penunjuk pencarian langsung ke kartu tertentu yang dicari pengguna.

Diagram showing an arrow pointing to a primary key in a table.

Menentukan hubungan tabel dengan kunci asing

Persyaratan untuk aplikasi referensi kartu online adalah untuk mendukung kartu yang memiliki terjemahan untuk beberapa bahasa. Anda hanya bisa menambahkan kolom untuk setiap bahasa pada tabel kartu utama, tetapi akhirnya itu akan menjadi sulit dikelola. Ini juga akan mengharuskan Anda untuk menambahkan kolom baru ke tabel setiap kali terjemahan baru diperlukan. Solusi yang lebih baik adalah memiliki tabel terjemahan terpisah yang dapat Anda tautkan kembali ke tabel kartu card_id kolom. Di sinilah kunci asing datang bermain.

Kunci asing adalah kolom atau kombinasi kolom yang dapat digunakan untuk menerapkan tautan, atau hubungan, di antara dua tabel. Kunci asing membantu mengontrol data yang dapat disimpan menggunakan hubungan ini, memastikan bahwa hanya data dari kolom kunci utama dalam tabel terkait yang dapat disimpan di kolom kunci asing. Dalam skenario permainan kartu, Anda akan menggunakan hubungan kunci asing dalam tabel terjemahan ke kunci utama tabel kartu utama. Hubungan ini kemudian hanya akan memungkinkan nilai dari kolom kunci utama dalam tabel kartu dimasukkan ke dalam kolom kunci asing dalam tabel terjemahan untuk memastikan selalu ada hubungan antara keduanya, mencegah baris tanpa induk atau data yang tidak akurat. Misalnya, Anda tidak dapat memiliki baris dalam tabel terjemahan untuk card_id 52 jika card_id 52 tidak ada di tabel kartu.

Diagram showing tables linked by foreign keys.

Menerapkan integritas data dengan batasan

Nilai null, nilai default, dan batasan pemeriksaan

Mengontrol data apa yang disimpan dalam tabel permainan kartu dapat membantu menjaga nilai yang tidak diinginkan dan menerapkan integritas data (himpunan data lengkap, konsisten, dan akurat). Pada tingkat yang paling sederhana, ada kolom di mana Anda harus selalu memiliki nilai yang dimasukkan (seperti card_name), mencegah kelalaian potongan kunci data. Saat membuat tabel, Anda bisa mengatur kolom untuk mengizinkan atau melarang nilai kosong atau null. Database Azure SQL akan melihat kapan seseorang tidak menyediakan semua elemen data yang diperlukan dengan meneruskan nilai null. Ketika situasi ini terjadi, database akan mencegah rekaman dimasukkan.

Azure SQL juga dapat membantu kami mengontrol nilai apa yang dapat diterima dalam kolom dengan menetapkan satu atau beberapa nilai default. Database bahkan dapat membatasi data yang diizinkan ke daftar nilai yang ditetapkan. Nilai default dengan kolom akan memberi tahu database nilai apa yang akan digunakan jika tidak ada nilai yang ditentukan. Setelah contoh seperti itu kita dapat menggunakan dengan aplikasi referensi kartu adalah dengan kolom status. Di sini, Anda dapat menetapkan nilai default yang akan digunakan pada entri kartu, membantu entri data cepat dan elemen antarmuka pengguna default.

Batasan pemeriksaan dapat membatasi nilai apa yang bisa diterima kolom. Dalam skenario aplikasi referensi kartu, warna kartu dan jenis kartu harus dari sekumpulan nilai tertentu; kondisi sempurna untuk batasan pemeriksaan sehingga nilai yang tidak memenuhi kriteria ini akan ditolak.

Diagram showing a check constraint rejecting a value that is not in the list of acceptable values.

Mungkin ada situasi di mana menentukan sekumpulan nilai default tidak realistis. Bayangkan kolom yang hanya mengizinkan angka antara satu dan 10000. Membuat daftar nilai untuk 10000 angka individu akan menjadi tidak perlu dan padat karya. Anda dapat membuat batasan pemeriksaan dengan ekspresi logis (Boolean) apa pun yang mengembalikan TRUE atau FALSE berdasarkan operator logika, seperti rentang nilai yang menggunakan lebih besar dari dan kurang dari operator. Anda dapat memiliki beberapa batasan pemeriksaan pada satu kolom, dan Anda bisa memiliki batasan pemeriksaan tunggal yang berlaku untuk beberapa kolom.

Batasan unik

Sama seperti kunci utama yang memberlakukan keunikan, ada situasi di mana Anda ingin kolom memiliki nilai unik tetapi bukan kunci utama (ingat, hanya ada satu kunci primer per tabel). Dengan membuat kolom dengan batasan unik, Azure SQL dapat mengizinkan entri nilai unik, mengizinkan nilai null jika sesuai tidak seperti kunci primer, dan menggunakan sebagai kunci asing jika diperlukan. Kita dapat menggunakan batasan unik dalam aplikasi kartu pada tabel set_lists . Di sini, Anda dapat menempatkan batasan unik pada kolom card_id dan set_id untuk memastikan bahwa kartu tidak ditambahkan ke set lebih dari sekali.

Uji pengetahuan Anda

1.

Referensi kunci asing jenis kolom apa di tabel lain?

2.

Jenis batasan apa yang akan Anda gunakan untuk membatasi nilai yang diterima oleh satu atau beberapa kolom dalam tabel ke rentang tertentu menggunakan ekspresi logis?