Tôi biết mục đích "Thực thi ràng buộc khóa ngoại" trong RDBMS. Nhưng có lợi ích gì khi nó được đặt thành "KHÔNG"?Sql Server: Lợi ích của việc sử dụng "Thực thi ràng buộc khóa ngoài" khi nó được đặt thành "KHÔNG" là gì?
Trả lời
Trong quá trình sản xuất bình thường, cài đặt này phải không bao giờ được đặt thành NO
.
Nhưng: khi bạn đang phát triển hoặc cơ cấu lại cơ sở dữ liệu hoặc khi bạn thực hiện ví dụ: một lượng lớn tải dữ liệu lớn mà bạn sẽ cần phải "khử trùng" (làm sạch), sau đó có thể có ý nghĩa để tắt các ràng buộc khóa ngoài để cho phép dữ liệu "không hợp lệ" được tải vào bảng. Tất nhiên, như tôi đã nói - bạn không nên tắt cài đặt đó trong một thời gian dài - bạn nên tiến hành xóa dữ liệu, xóa các hàng vi phạm ràng buộc FK hoặc cập nhật giá trị của chúng để chúng khớp với hàng gốc.
Vì vậy, một lần nữa: ở chế độ sản xuất "bình thường", cài đặt này sẽ không bao giờ là NO
- nhưng đối với các tác vụ cụ thể, nó có thể giúp thực hiện công việc dễ dàng hơn. Sử dụng nó một cách thận trọng, và luôn luôn bật các ràng buộc FK trở lại càng sớm càng tốt!
Cảm ơn bạn đã lưu ý, nhưng có những trường hợp chúng tôi nhập dữ liệu vào một cột để nói ví dụ như tất cả dữ liệu được xác định trước. Tôi có nghĩa là nếu dữ liệu hợp lệ là 1,2 và 3 sau đó để nói tất cả chúng tôi đặt -1 trong cột. Trong tình huống này, chúng ta nên đặt "Thực thi ràng buộc khóa ngoài" thành NO trong sơ đồ. đúng? như vậy là nó thực sự cần thiết để tạo ra một mối quan hệ? – odiseh
@odiseh: Không. Trong trường hợp của bạn, tốt hơn hết là nên loại bỏ khóa ngoại trừ vì nó không phục vụ mục đích hữu ích nào cả. Thay vào đó bạn có thể tạo ràng buộc CHECK để xác nhận hợp lệ các giá trị dữ liệu. – sqlvogel
+1 để cho nó giống như vậy. Tôi thấy cài đặt này bị lạm dụng mọi lúc trong một số công ty mà tôi ký hợp đồng. Nó liên tục dẫn đến các vấn đề. Tôi sẽ thêm rằng đôi khi tôi sử dụng nó như là một bước trung gian khi một khóa nước ngoài nên tồn tại không và tôi muốn thêm nó. Đôi khi tôi không tự tin rằng tất cả các ứng dụng tham chiếu đều hoạt động theo đúng thứ tự và điều này cho phép tôi xác định mối quan hệ ngay lập tức, kiểm tra các ứng dụng được đề cập (hoặc tìm kiếm mã của chúng) và sau đó bật thực thi. –
Không sử dụng hàng ngày, theo như tôi biết. Thời gian tôi đã không thực thi các khóa ngoại trong một thời gian là khi có vấn đề với dữ liệu và sửa chữa chúng bị che khuất bởi các kiểm tra mối quan hệ.
Trong khi kiểm tra hạn chế hoạt động hàng loạt tạm thời bị bỏ qua để tăng hiệu suất.
- 1. lợi thế của việc xác định khóa ngoài là gì
- 2. SQLAlchemy - không thực thi ràng buộc khóa ngoài đối với mối quan hệ
- 3. Lợi thế của việc sử dụng cột INCLUDE với chỉ mục SQL Server là gì?
- 4. Mục đích của việc ràng buộc đặt tên là
- 5. Khóa ngoài không được thực thi
- 6. Lợi ích/lợi thế của việc sử dụng Python 3 là gì?
- 7. Lợi ích của việc sử dụng ổ cắm không chặn với chức năng "chọn" là gì?
- 8. Chính xác là lợi ích của việc sử dụng Punjab
- 9. Có lợi ích gì khi sử dụng @staticmethod không?
- 10. Lợi ích của việc sử dụng Scala trong .Net là gì?
- 11. Lợi ích của letrec là gì?
- 12. Lợi ích thực tế của ADO.NET Entity Framework là gì?
- 13. Có lợi ích thực sự khi sử dụng J # không?
- 14. Lợi ích chính của việc sử dụng Haskell để phát triển web là gì?
- 15. Ràng buộc khó chịu trong SQL Server
- 16. Lợi ích của việc tạo các thủ tục lưu sẵn trong SQL và MySQL là gì?
- 17. Lợi ích của việc sử dụng out/ref so với return là gì?
- 18. Lợi ích của việc sử dụng System.Diagnostics.Debugger.Break() qua Đính kèm quy trình là gì?
- 19. Lợi ích của việc sử dụng Lớp học trong VBA là gì?
- 20. Lợi ích của JCA là gì?
- 21. Lợi ích của việc hạn chế ném được phép bởi hàm C++ là gì?
- 22. Lợi ích của việc sử dụng cú pháp Constructor trong câu lệnh chèn T-Sql là gì?
- 23. Lợi ích của việc sử dụng RichTextBox trên TextBox là gì?
- 24. Lợi ích của việc sử dụng một bindingsource với danh sách ràng buộc <business obj> làm nguồn dữ liệu là gì?
- 25. Lợi ích của việc cho phép biến không được khởi tạo là gì?
- 26. Có bất kỳ lợi ích hiệu suất nào khi sử dụng SQL Server 2008 trên SQL Server 2005 không?
- 27. Lợi ích của việc sử dụng WPF trên Windows Forms là gì?
- 28. Năng suất là gì ?, và lợi ích của việc sử dụng năng suất trong asp.net là gì?
- 29. Ràng buộc kiểm tra khóa ngoài T-SQL
- 30. lợi thế của việc sử dụng giao diện là gì
Khi bạn có hai khóa chính giống nhau trong hai bảng và bạn phải tạo mối quan hệ khóa ngoài, thì bạn phải đặt "Thực thi ràng buộc khóa ngoài" thành "Không". Điều này là khá khó hiểu, vì vậy tôi đưa url youtube dưới đây, bạn sẽ được rõ ràng sau khi kết thúc video này. https://www.youtube.com/watch?v=H7uGGg1BQ2Y –