Anda jelas menyarankan bahwa CONSTRAINT
s di dalam basis data harus diberlakukan oleh aplikasi yang mengakses basis data itu?
Ada banyak alasan mengapa ini adalah ide yang buruk (buruk, buruk ...).
1) Jika Anda sedang membangun "roll-your-own" engine "engine" (yaitu dalam kode aplikasi Anda), maka Anda hanya meniru apa yang Oracle / SQL Server / MySQL / PostgreSQL / <. Siapa pun ...> telah menghabiskan tahun menulis. Kode CONSTRAINT mereka telah diuji selama bertahun-tahun oleh jutaan pengguna akhir.
2) Dengan segala hormat kepada Anda dan tim Anda, Anda tidak akan memperbaikinya bahkan dalam hitungan tahun - dari sini , kode MySQL saja menelan biaya 40 Juta dolar. Dan MySQL adalah yang termurah dari 3 server di atas, dan mereka bahkan tidak mengimplementasikan CHECK CONSTRAINTs. Jelas, mendapatkan RI (Integritas Referensial) sepenuhnya benar itu sulit.
Saya sering mengunjungi forum Oracle dan saya tidak bisa memberi tahu Anda berapa kali manajer / programmer yang buruk memiliki proyek yang disodorkan kepadanya di mana si jenius yang memiliki pekerjaannya sebelumnya memiliki ide "cemerlang" untuk melakukan apa yang Anda sarankan .
Jonathan Lewis (dia menulis buku setebal 550 halaman tentang dasar-dasar optimiser Oracle ) memberi sebagai tidak. 2 dari Bencana Desain di buku lain (" Tales of the Oak Table " - the Oak Table adalah sekelompok ahli Oracle) adalah
- Kami akan memeriksa integritas data di tingkat aplikasi alih-alih memanfaatkan kemampuan pengecekan kendala Oracle.
3) Bahkan jika dengan beberapa keajaiban Anda dapat menerapkan RI dengan benar, Anda harus sepenuhnya mengimplementasikannya berulang kali untuk setiap aplikasi yang menyentuh database itu - dan jika data Anda penting, maka aplikasi baru akan melakukannya. Memilih ini sebagai sebuah paradigma akan membawa Anda dan rekan programmer Anda (belum lagi staf pendukung dan penjualan) ke kehidupan yang terus-menerus memadamkan api dan kesengsaraan.
Anda dapat membaca lebih lanjut tentang mengapa menerapkan data CONSTRAINT pada tingkat aplikasi tidak kurang gila di sini , di sini dan di sini .
Untuk secara khusus menjawab pertanyaan Anda:
Kenapa mereka diumumkan? Tampaknya sangat membantu, tetapi apakah sebenarnya perlu memiliki database yang berfungsi
Alasan bahwa KEY
s (baik PRIMARY
, FOREIGN
, UNIQUE
atau hanya biasa INDEX
es) dinyatakan adalah bahwa, sementara itu tidak benar-benar diperlukan untuk database untuk memiliki mereka untuk itu berfungsi, itu benar-benar diperlukan bagi mereka untuk dinyatakan untuk itu untuk fungsi dengan baik .