Tôi đã thực thi các quy tắc nghiệp vụ trong cả tầng ứng dụng (mô hình) và tầng cơ sở dữ liệu của tôi (các thủ tục được lưu trữ gây ra lỗi).Quy tắc kinh doanh có nên được thực thi ở cả cấp ứng dụng và tầng cơ sở dữ liệu hay chỉ một trong hai quy tắc này không?
Tôi đã sao chép kiểm chứng thực của tôi ở cả hai nơi trong một vài lý do:
- Nếu các điều kiện thay đổi giữa khi họ được kiểm tra trong mã ứng dụng và khi họ kiểm tra trong cơ sở dữ liệu, kiểm tra quy tắc kinh doanh trong cơ sở dữ liệu sẽ tiết kiệm trong ngày. Cơ sở dữ liệu cũng cho phép tôi khóa các bản ghi khác nhau theo cách đơn giản hơn trong mã số ứng dụng của tôi, vì vậy dường như tự nhiên làm như vậy tại đây.
- Nếu chúng ta có để làm một số dữ liệu hàng loạt chèn/cập nhật cơ sở dữ liệu trực tiếp, nếu tuyến đường tôi tất cả các hoạt động này thông qua thủ tục lưu trữ của tôi/chức năng mà đang làm quy tắc kinh doanh hợp lệ, không có cơ hội của tôi đưa vào dữ liệu xấu mặc dù tôi thiếu sự bảo vệ mà tôi sẽ nhận được nếu tôi đang thực hiện nhập liệu đơn thông qua ứng dụng.
- Trong khi thực thi những điều này chỉ trong cơ sở dữ liệu sẽ có tác dụng tương tự trên các dữ liệu thực tế, có vẻ như không đúng chỉ ném dữ liệu ở cơ sở dữ liệu trước khi lần đầu tiên thực hiện một nỗ lực tốt để xác nhận rằng nó phù hợp với để các ràng buộc và quy tắc kinh doanh.
Số dư chính xác là gì?
Sự khác nhau giữa việc thực thi logic nghiệp vụ và thực thi tính toàn vẹn của dữ liệu là gì? Giả sử tôi có quy tắc kinh doanh cho biết tối đa 3 người có thể được chỉ định cho người giám sát. Khi tôi đi để chèn người # 4, là không vì nó là một lỗi toàn vẹn dữ liệu để có> 3 người cho mỗi người giám sát, hoặc nó là một vi phạm quy tắc kinh doanh? Không khóa hồ sơ giám sát trước khi xác minh rằng có tối đa 2 người dưới sự giám sát khi thực hiện chèn, làm thế nào mã ứng dụng có thể chắc chắn 100% rằng quy tắc này sẽ không bị phá vỡ? –
@Rednerln - tỷ lệ thay đổi. Các quy tắc toàn vẹn cơ sở dữ liệu là những thứ có thể được giả định là đúng lâu hơn nhiều so với quy tắc kinh doanh. Ví dụ của bạn về một người giám sát, tôi sẽ có một thời gian khó biện minh rằng làm cho một ràng buộc cơ sở dữ liệu, nếu tôi đã làm, nó sẽ phải dựa trên dữ liệu (udf dựa trên một thiết lập cấu hình). Và nếu quy tắc thay đổi, người ta phải đặt câu hỏi phải làm gì về dữ liệu vi phạm nguyên tắc đó. Thông thường, bạn muốn các quy tắc cơ sở dữ liệu chỉ thoải mái, không bị siết chặt hoặc thay đổi về mặt chất lượng. –
@Rednerln - trong các tình huống đa phương thức, bạn muốn mọi người có thể truy cập lớp truy cập DB của bạn (xem, có lẽ) với công cụ BI của họ hoặc bất cứ điều gì và biết rằng giả định của họ là hợp lệ, rằng cơ sở dữ liệu có sự gắn kết và toàn vẹn chu vi. –