Mirip dengan MySQL, PostgreSQL, Oracle, dan banyak database relasional lainnya, SQL Server paling baik digunakan saat menetapkan kunci utama unik ke sebagian besar tabel database.
Keuntungan menggunakan kunci utama numerik yang ditambahkan secara otomatis sangat banyak, tetapi manfaat yang paling berdampak adalah kecepatan yang lebih cepat saat melakukan kueri dan kemandirian data saat mencari melalui ribuan catatan yang mungkin berisi data yang sering diubah di tempat lain dalam tabel. Dengan pengenal numerik yang konsisten dan unik, aplikasi dapat memanfaatkan kueri yang lebih cepat dan lebih andal ini.
Pembuatan Tabel Dasar
Setelah terhubung ke SQL Server, Anda biasanya memulai dengan CREATING
tabel baru yang berisi bidang yang ingin Anda gunakan sebagai kunci utama tambahan Anda. Sebagai contoh, kami akan tetap menggunakan id
yang telah dicoba dan benar bidang:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Masalahnya di sini adalah, kami tidak memiliki cara untuk mengontrol id
kami bidang. Ketika record baru dimasukkan, kita tidak hanya harus memasukkan nilai secara manual untuk id
, tetapi kami harus melakukan kueri sebelumnya untuk mencoba memverifikasi id
nilai belum ada (hampir tidak mungkin ketika berhadapan dengan banyak koneksi simultan).
Menggunakan Kendala Identitas dan Kunci Utama
Solusinya ternyata menggunakan dua opsi kendala yang disediakan oleh SQL Server.
Yang pertama adalah PRIMARY KEY
, yang seperti namanya, memaksa kolom yang ditentukan untuk berperilaku sebagai indeks yang benar-benar unik untuk tabel, memungkinkan pencarian dan kueri yang cepat.
Sementara SQL Server hanya mengizinkan satu PRIMARY KEY
batasan yang ditetapkan ke satu tabel, yaitu PRIMARY KEY
dapat didefinisikan untuk lebih dari satu kolom. Dalam skenario multi-kolom, kolom individual dapat berisi duplikat, nilai non-unik, tetapi PRIMARY KEY
batasan memastikan bahwa setiap kombinasi dari nilai-nilai yang dibatasi sebenarnya akan menjadi unik relatif terhadap setiap kombinasi lainnya.
Bagian kedua dari teka-teki adalah IDENTITY
kendala, yang menginformasikan SQL Server untuk secara otomatis menambah nilai numerik dalam kolom yang ditentukan kapan saja catatan baru INSERTED
. Sedangkan IDENTITY
bisa menerima dua argumen dari seed
numer numerik di mana nilai akan dimulai serta increment
, nilai-nilai ini biasanya tidak ditentukan dengan IDENTITY
kendala dan sebagai gantinya dibiarkan sebagai default (keduanya default ke 1
).
Dengan pengetahuan baru ini di ujung jari kami, kami dapat menulis ulang CREATE TABLE
kami sebelumnya pernyataan dengan menambahkan dua batasan baru kami.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Itu saja. Sekarang id
kolom books
kami tabel akan bertambah secara otomatis pada setiap INSERT
dan id
bidang ini dijamin memiliki nilai unik juga.