Có bất kỳ lý do để xây dựng các ràng buộc giữa các bảng (bên trong SQLserver) ngày nay không? Nếu sau đó? Hầu hết các ứng dụng trong khu vực của tôi được xây dựng trên các nguyên tắc đối tượng và các bảng được nối theo yêu cầu. Nhu cầu dựa trên nhu cầu từ ứng dụng. Tôi sẽ không tải một loạt các bảng bị ràng buộc để tìm kiếm đơn giản, do đó (sau khi hành động) yêu cầu một tra cứu đơn giản khác.
Các công cụ ORM như EntityContext, Linq2Data, NHibernate cũng tự xử lý các ràng buộc, ít nhất bạn biết bảng nào cần nhau. Làm các ràng buộc bên trong máy chủ chỉ là thực hiện (buộc) thay đổi tương tự hai lần?
Đây thường không phải là một câu hỏi cho quyết định, nhưng cơ sở dữ liệu này được thiết kế khá khác nhau. Thiết kế có vẻ tốt thường xuyên, chủ yếu là nhân đôi các đối tượng được sử dụng bởi các ứng dụng. Điều làm tôi băn khoăn là tất cả các ràng buộc được cấu hình bên trong SQLserver với "không phải tầng". Điều đó có nghĩa là bạn phải chơi "tìm và tìm" khi mã hóa các truy vấn cơ sở dữ liệu mới. Một số trường hợp yêu cầu tối đa 10 cấp của một đơn đặt hàng chính xác để thực hiện xóa một lần.
Điều này làm tôi ngạc nhiên và tôi không biết phải xử lý thế nào.
Trong thế giới đơn giản của tôi, cài đặt đó làm cho các ràng buộc mất đi phần lớn mục đích. OK nếu cơ sở dữ liệu được truy cập từ máy chủ mà không có kiến thức về thiết kế.
Làm thế nào bạn sẽ hành động trong kịch bản này?
Tại sao không loại bỏ tất cả các ràng buộc khỏi db và giữ chúng ở mức ứng dụng?