Nói với nhà phát triển rằng họ được hoan nghênh thêm logic như vậy vào mã ứng dụng để ngăn những cập nhật đó. Nhưng, cũng là bạn sẽ không loại bỏ DENY
. Nếu / khi ngày bao giờ đến (và nócó thể khôngcó lẽ sẽ không) rằng ai đó gặp lỗi khi cố cập nhật một trong các cột này, sau đó bạn có thể thảo luận về việc bạn có xóa hay không DENY
, điều này sẽ yêu cầu sự biện minh thực tế, vững chắc về lý do tại sao ai đó sẽ cập nhật giá trị đó trong địa điểm đầu tiên.
Quan điểm: cần có một trường hợp kinh doanh thực sự thúc đẩy những gì mọi người dành thời gian của họ vào. Thời gian là nhu cầu cao nhưng nguồn cung ngắn, vì vậy bạn (và mọi người khác) có nhiều việc quan trọng hơn là thay đổi hệ thống dựa trên ý kiến của ai đó. Sẽ luôn có nhiều ý kiến khác nhau (khoảng trắng so với tab, có ai không?) Và bạn có thể mất nhiều năm để thay đổi điều này nếu nhà phát triển đó rời đi và được thay thế bởi một người phản đối mạnh mẽ những trường đó có thể cập nhật. Nếu không có khách hàng nào yêu cầu điều này (hoặc một cái gì đó yêu cầu) và không có lợi ích hữu hình (thậm chí lợi ích bị trì hoãn như xóa nợ kỹ thuật, khó có thể hiển thị ROI, nhưng rất đáng giá trong khi cho rằng cơ hội của thời gian đó không dẫn đến tiết kiệm chi phí thực tế trong dài hạn là không có gì), sau đó đóng yêu cầu hoặc đặt nó ở mức tồn đọng ở mức ưu tiên thấp, ngay cả trong trường hợp chủ nghĩa duy tâm nói rằng nó nên được thay đổi (đây không phải là một trong những trường hợp đó, nhưng được đề cập cho những người cho rằng đó là). Chủ nghĩa lý tưởng là tuyệt vời cho các cuộc trò chuyện, nhưng các công ty không thể trả tiền thuê nhà, tiện ích, nhân viên, thuế, vv với lý tưởng.
@ jpmc26 là chính xác về nhu cầu giao tiếp, nhưng không chính xác về những gì cần truyền đạt. Có, bạn nên lắng nghe những gì người khác đang yêu cầu và tìm cách hiểu lý lẽ của họ, bao gồm đặt câu hỏi nếu bạn không rõ ràng về bất cứ điều gì.
TUY NHIÊN, cơ sở dữ liệu không phụ thuộc vào ứng dụng và các chuyên gia cơ sở dữ liệu (quản trị viên, kỹ sư, bất kỳ tên nào công ty bạn sử dụng) không phụ thuộc vào nhà phát triển (dường như được ngụ ý trong câu trả lời đó). Bạn không làm việc cho các nhà phát triển, bạn làm việc cho công ty, giống như họ làm. Đây là một nỗ lực của nhóm và bạn không nên cầu xin sự tha thứ khi thực hiện công việc của mình. Điều đó nói rằng, các loại máy tính của chúng tôi không (thường) được biết đến với các kỹ năng giao tiếp giữa người với người, vì vậy, bạn thực sự cần đảm bảo rằng những người khác hiểu bạn , lý do của bạn là gì, trách nhiệm của bạn là gì, và công cụ này thực sự hoạt động như thế nào .
Tôi đặt phần cuối cùng đó bởi vì có một mức độ hiểu lầm cao, thông tin sai lệch và thiếu kiến thức ngoài kia (thậm chí một số ngay tại đây trên chính trang này). Ví dụ, dường như có khái niệm rằng tất cả các quy tắc là quy tắc kinh doanh. Chúng tôi cần giải thích rằng có một sự khác biệt giữa quy tắc dữ liệu và quy tắc kinh doanh (@Aaron gọi đây là "ràng buộc quy trình làm việc và ràng buộc dữ liệu" trong một nhận xét về câu hỏi) và trong khi hầu hết dữ liệu thuộc về ứng dụng, một số dữ liệu tự nhiên thuộc về ứng dụng, một số dữ liệu thực sự thuộc về mô hình dữ liệu. DBA có nên ra lệnh cho các nhà phát triển cách dữ liệu ứng dụng sẽ bị hạn chế không? Tất nhiên là không. Công việc của chúng tôi là cung cấp dữ liệu ứng dụng có thể như thế nàobị gò bó. Nếu việc vi phạm quy tắc kinh doanh liên quan đến dữ liệu ứng dụng có thể gây hại và ứng dụng không phải là cách duy nhất 100% để thao túng dữ liệu, thì có lẽ ràng buộc kiểm tra có thể thực sự hữu ích (và chúng không khó thay đổi hoặc xóa ).
NHƯNG, đến từ hướng khác, các nhà phát triển không nên đưa ra cách xử lý dữ liệu mô hình dữ liệu (tức là dữ liệu meta). Điều này bao gồm các trường kiểm toán (chẳng hạn như created_on
/ created_by
cột) và cột PK / FK (các giá trị này chỉ được cho là được biết trong nội bộ và không được cung cấp cho khách hàng). Dữ liệu này không phải là những gì ứng dụng lưu trữ về khách hàng (ngay cả khi ứng dụng có thể nhìn thấy các giá trị và thậm chí sử dụng chúng, chẳng hạn như với ID), đó là những gì mô hình dữ liệu lưu trữ về dữ liệu của ứng dụng.
Vì vậy, nó có ý nghĩa để sử dụng các quy tắc dữ liệu để bảo vệ dữ liệu mô hình dữ liệu. Và làm như vậy không có nghĩa là bạn sắp bắt đầu thêm các ràng buộc hoặc hạn chế đối với dữ liệu ứng dụng. NHƯNG, sẽ rất khó để chuyển cuộc trò chuyện về phía trước một cách thực sự hiệu quả nếu không hiểu được sự khác biệt này.