Apa definisi yang jelas dari batasan database? Mengapa batasan penting untuk database? Apa saja jenis kendala tersebut?
Apa definisi yang jelas dari batasan database? Mengapa batasan penting untuk database? Apa saja jenis kendala tersebut?
Jawaban:
Batasan adalah bagian dari definisi skema database.
Batasan biasanya dikaitkan dengan tabel dan dibuat dengan pernyataan CREATE CONSTRAINT
atau CREATE ASSERTION
SQL.
Mereka mendefinisikan properti tertentu yang harus dipatuhi oleh data dalam database. Mereka dapat diterapkan ke kolom, seluruh tabel, lebih dari satu tabel atau seluruh skema. Sistem database yang andal memastikan bahwa batasan berlaku setiap saat (kecuali mungkin di dalam transaksi, untuk apa yang disebut batasan yang ditangguhkan).
Jenis kendala yang umum adalah:
Untuk memahami mengapa kita membutuhkan batasan, Anda harus terlebih dahulu memahami nilai integritas data.
Integritas Data mengacu pada validitas data. Apakah data Anda valid? Apakah data Anda mewakili untuk apa Anda merancangnya?
Pertanyaan aneh apa yang saya ajukan mungkin Anda pikirkan, tetapi sayangnya terlalu sering, database dipenuhi dengan data sampah, referensi yang tidak valid ke baris di tabel lain, yang sudah lama hilang ... dan nilai yang tidak berarti apa-apa bagi logika bisnis solusi Anda lagi.
Semua sampah ini tidak saja cenderung menurunkan kinerja Anda, tetapi juga merupakan bom waktu menurut logika aplikasi Anda yang pada akhirnya akan mengambil data yang tidak dirancang untuk dipahami.
Batasan adalah aturan yang Anda buat pada waktu desain yang melindungi data Anda agar tidak rusak. Sangat penting untuk kelangsungan hidup anak hati Anda yang lama dari solusi database. Tanpa kendala, solusi Anda pasti akan rusak seiring waktu dan penggunaan yang berat.
Anda harus mengakui bahwa mendesain desain database Anda hanyalah kelahiran solusi Anda. Di sini setelah itu harus hidup (semoga) untuk waktu yang lama, dan menanggung semua jenis perilaku (aneh) oleh pengguna akhir (mis. Aplikasi klien). Tetapi fase desain dalam pengembangan ini sangat penting untuk kesuksesan solusi Anda dalam waktu lama! Hormati, dan beri waktu serta perhatian yang dibutuhkannya.
Orang bijak pernah berkata: "Data harus melindungi dirinya sendiri!" . Dan inilah yang dilakukan kendala. Ini adalah aturan yang menjaga data dalam database Anda sevalid mungkin.
Ada banyak cara untuk melakukan ini, tetapi pada dasarnya intinya adalah:
sys.check_constraints
tampilan dalam database contoh AdventureWorksSeperti yang telah saya tunjukkan di sini, diperlukan beberapa pertimbangan menyeluruh untuk membangun pendekatan kendala terbaik dan paling defensif untuk desain database Anda. Anda harus terlebih dahulu mengetahui kemungkinan dan batasan dari berbagai jenis kendala di atas. Bacaan lebih lanjut dapat mencakup:
Batasan KUNCI ASING - Microsoft
Batasan kunci asing - w3schools
Semoga berhasil! ;)
Batasan tidak lain adalah aturan pada data. Data apa yang valid dan apa yang tidak valid dapat didefinisikan dengan menggunakan batasan. Sehingga integritas data dapat terjaga. Berikut adalah kendala yang banyak digunakan:
NOT NULL
. Di sini kita dapat menentukan data apa yang bisa kita masukkan untuk kolom tertentu dan apa yang tidak diharapkan untuk kolom itu.Batasan dapat digunakan untuk menerapkan properti data tertentu. Contoh sederhananya adalah membatasi kolom int ke nilai [0-100000]. Pengenalan ini terlihat bagus.
Batasan menentukan nilai apa yang valid untuk data dalam database. Misalnya, Anda dapat menerapkan nilai bukan null ( NOT NULL
batasan), atau nilai tersebut ada sebagai batasan unik di tabel lain ( FOREIGN KEY
batasan), atau unik dalam tabel ini ( UNIQUE
batasan atau mungkin PRIMARY KEY
batasan tergantung pada kebutuhan Anda ). Batasan yang lebih umum dapat diimplementasikan dengan menggunakan CHECK
batasan.
The dokumentasi MSDN untuk SQL Server 2008 kendala mungkin tempat awal terbaik Anda.
UNIQUE
kendala (di mana PRIMARY KEY
kendala adalah varian). Memeriksa bahwa semua nilai bidang tertentu unik di seluruh tabel. Ini adalah X
-axis constraint (catatan)
CHECK
kendala (yang NOT NULL
kendala adalah varian). Memeriksa apakah kondisi tertentu berlaku untuk ekspresi di atas bidang rekaman yang sama. Ini adalah Y
-saksi kendala (bidang)
FOREIGN KEY
paksaan. Memeriksa apakah nilai bidang ditemukan di antara nilai bidang di tabel lain. Ini adalah Z
batasan sumbu (tabel).
CHECK
batasan jadi mengapa mengklasifikasikannya secara berbeda? yaitu " Y
-axis" (apapun artinya).
FOREIGN KEY
penggunaan CHECK
batasan?
SELECT
pertanyaan. Anda tidak dapat menggunakan subkueri (atau konstruksi lain yang merujuk ke nilai di luar rekaman saat ini) dalam CHECK
batasan di SQL Server
.
Basis data adalah representasi logis terkomputerisasi dari model konseptual (atau bisnis), yang terdiri dari sekumpulan aturan bisnis informal. Aturan-aturan ini adalah makna data yang dipahami pengguna. Karena komputer hanya memahami representasi formal, aturan bisnis tidak dapat direpresentasikan secara langsung dalam database. Mereka harus dipetakan ke representasi formal, model logis, yang terdiri dari sekumpulan batasan integritas. Batasan ini - skema database - adalah representasi logis dalam database dari aturan bisnis dan, oleh karena itu, merupakan makna data yang dipahami DBMS. Oleh karena itu, jika DBMS tidak menyadari dan / atau tidak menerapkan batasan lengkap yang mewakili aturan bisnis, DBMS memiliki pemahaman yang tidak lengkap tentang apa arti data tersebut dan, oleh karena itu,
Catatan: DBMS- makna "dipahami" - batasan integritas - tidak identik dengan makna yang dipahami pengguna - aturan bisnis - tetapi, meskipun kehilangan beberapa makna, kami memperoleh kemampuan untuk memekanisasi kesimpulan logis dari data.
"Kelas Kesalahan Lama" oleh Fabian Pascal
Pada dasarnya ada 4 jenis batasan utama dalam SQL:
Batasan Domain: jika salah satu nilai atribut yang diberikan untuk tupel baru bukan dari domain atribut yang ditentukan
Batasan Kunci: jika nilai atribut kunci dalam tupel baru sudah ada di tupel lain dalam relasinya
Integritas Referensial: jika nilai kunci asing dalam tupel baru merujuk pada nilai kunci utama yang tidak ada dalam relasi yang direferensikan
Integritas Entitas: jika nilai kunci utama adalah null di tupel baru
kendala adalah kondisi, yang dapat memvalidasi kondisi tertentu. Batasan yang terkait dengan database adalah Integritas domain, Integritas entitas, Integritas Referensial, Batasan Integritas yang Ditentukan Pengguna, dll.