Beri tahu pengembang bahwa mereka boleh menambahkan logika seperti itu ke kode aplikasi untuk mencegah pembaruan tersebut. Tapi, juga Anda tidak akan menghapus DENY
. Jika / ketika hari itu tiba (dan itumungkin tidakmungkin tidak) bahwa seseorang mendapatkan kesalahan saat mencoba memperbarui salah satu kolom ini, maka Anda dapat berdiskusi tentang apakah Anda akan menghapus atau tidak DENY
, yang akan membutuhkan pembenaran yang kuat dan aktual mengapa seseorang akan memperbarui nilai tersebut di tempat pertama.
Poinnya adalah: harus ada kasus bisnis nyata yang mengarahkan orang-orang menghabiskan waktu mereka. Waktu sangat diminati tetapi persediaannya sedikit, sehingga Anda (dan semua orang) memiliki hal-hal yang lebih penting untuk dilakukan daripada mengubah sistem berdasarkan pendapat seseorang. Akan selalu ada berbagai pendapat (spasi vs tab, siapa pun?) Dan Anda bisa menghabiskan waktu bertahun-tahun untuk mengubah ini dan sebagainya jika pengembang itu pergi dan digantikan oleh orang yang sangat keberatan agar bidang tersebut dapat diperbarui. Jika tidak ada pelanggan yang meminta ini (atau sesuatu yang memerlukannya), dan tidak ada manfaat nyata (bahkan manfaat tertunda seperti membersihkan utang teknis, yang sulit untuk menunjukkan ROI, tetapi sangat bernilai - sementara mengingat bahwa peluang waktu yang dihabiskan tidak menghasilkan penghematan biaya aktual dalam jangka panjang tipis ke tidak ada), kemudian tutup permintaan atau taruh di backlog dengan prioritas rendah, bahkan dalam kasus-kasus di mana idealisme mengatakan bahwa itu harus diubah (ini bukan salah satu dari kasus-kasus itu, tetapi disebutkan untuk mereka yang berpikir bahwa itu adalah). Idealisme bagus untuk percakapan, tetapi perusahaan tidak dapat membayar sewa, utilitas, karyawan, pajak, dll dengan cita-cita.
@ jpmc26 benar tentang perlunya komunikasi, tetapi tidak sepenuhnya benar tentang apa yang perlu dikomunikasikan. Ya, Anda harus mendengarkan apa yang orang lain minta dan berusaha memahami alasan mereka, yang mencakup mengajukan pertanyaan jika Anda tidak jelas tentang apa pun.
NAMUN, basis data tidak tunduk pada aplikasi, dan profesional basis data (admin, insinyur, apa pun nama yang digunakan perusahaan Anda) tidak tunduk kepada pengembang (seperti yang tampaknya tersirat dalam jawaban itu). Anda tidak bekerja untuk pengembang, Anda bekerja untuk perusahaan, sama seperti mereka. Ini adalah upaya tim dan Anda tidak harus meminta maaf karena melakukan pekerjaan Anda. Yang mengatakan, kami tipe komputer tidak (umumnya) dikenal karena kemampuan komunikasi antar manusia kami, jadi, Anda benar-benar perlu memastikan bahwa orang lain memahami Anda , apa alasan Anda, apa tanggung jawab Anda, DAN bagaimana hal ini sebenarnya bekerja .
Saya memasukkan bagian terakhir itu karena ada tingkat kesalahpahaman, informasi yang salah, dan kurangnya pengetahuan di luar sana (bahkan beberapa di sini, di halaman ini). Misalnya, tampaknya ada anggapan bahwa semua aturan adalah aturan bisnis. Kita perlu menjelaskan bahwa ada perbedaan antara aturan data dan aturan bisnis (@ Harun menyebutnya sebagai "batasan alur kerja vs batasan data" dalam komentar pada pertanyaan), dan bahwa sementara sebagian besar data secara alami adalah milik aplikasi, beberapa data sebenarnya milik model data. Haruskah DBA menentukan kepada pengembang bagaimana data aplikasi akan dibatasi? Tentu saja tidak. Adalah tugas kami untuk menawarkan bagaimana data aplikasi dapatdibatasi. Jika pelanggaran aturan bisnis yang terkait dengan data aplikasi dapat menyebabkan kerusakan, dan aplikasi bukanlah satu- satunya cara 100% untuk memanipulasi data, maka mungkin kendala pemeriksaan mungkin sangat membantu (dan mereka tidak sulit untuk mengubah atau menghapus ).
TETAPI, datang dari arah lain, pengembang seharusnya tidak menentukan bagaimana data model data (yaitu meta-data) ditangani. Ini termasuk bidang audit (seperti kolom created_on
/ created_by
) dan kolom PK / FK (nilai-nilai ini hanya seharusnya diketahui secara internal dan tidak diberikan kepada pelanggan). Data ini bukan yang disimpan aplikasi tentang pelanggan (bahkan jika aplikasi dapat melihat nilai-nilai dan bahkan menggunakannya, seperti dengan ID), itu yang disimpan oleh model data tentang data aplikasi.
Jadi masuk akal untuk menggunakan aturan data untuk melindungi data model data. Dan melakukannya tidak menyiratkan bahwa Anda akan mulai menambahkan kendala atau batasan pada data aplikasi. TETAPI, akan sulit untuk memajukan pembicaraan dengan cara yang benar-benar produktif jika perbedaan ini tidak dipahami.