Tôi có lẽ là người hẹp hòi, nhưng nếu tôi tạo một ràng buộc khóa ngoại và một hàng được cập nhật hoặc xóa, tôi sẽ mất kết nối đó nếu cột của bảng con được đặt thành NULL.
Mục đích của việc cố ý giữ những hàng mồ côi này là gì?
Tôi có lẽ là người hẹp hòi, nhưng nếu tôi tạo một ràng buộc khóa ngoại và một hàng được cập nhật hoặc xóa, tôi sẽ mất kết nối đó nếu cột của bảng con được đặt thành NULL.
Mục đích của việc cố ý giữ những hàng mồ côi này là gì?
Câu trả lời:
Có set nullhữu ích hay không phụ thuộc vào nullý nghĩa của bạn trong bối cảnh cụ thể - với tất cả sự nhầm lẫn và ý kiến xung quanh nullIMO, cách tiếp cận hợp lý là dành cho DBA
Với các quy tắc đó, hãy xem xét trường hợp sử dụng sau:
nullđể đại diện cho một cửa hàng độc lập (nghĩa là một cửa hàng không phải là một phần của chuỗi)Trong trường hợp này, một on delete set nullý nghĩa. Có nhiều cách khác để mô hình hóa các quy tắc kinh doanh này nhưng đây là cách đơn giản nhất và nếu nó phù hợp chính xác với sự thật mà bạn quan tâm trong thế giới thực, tôi đề nghị nó hoàn toàn ổn
Hầu hết các trường hợp sử dụng mà tôi có thể nghĩ chung thường có dạng "Chà, chúng tôi có thể làm điều gì đó khác biệt nhưng chúng tôi cảm thấy muốn làm điều này thay vào đó".
Xem xét một ownertrường cho một lỗi trong hệ thống theo dõi vấn đề tại một công ty. Nếu John thoát, chắc chắn tất cả các vấn đề của anh ta không nên bị xóa khi tài khoản của anh ta bị xóa. Thậm chí sau đó, một số cơ sở dữ liệu cho phép SET DEFAULTnhư một hành động (hoặc có một trình kích hoạt thực hiện cùng một nhiệm vụ) và để một Nobodynhân viên là chủ sở hữu mặc định của các vấn đề có thể là một lựa chọn. Hoặc chúng ta có thể có một disabledlĩnh vực cho John hơn là xóa hồ sơ của mình.
RESTRICT), nếu không có lý do nào khác để chỉ ra sự đổ lỗi cho một nhân viên cũ khi có sự cố xảy ra với nó!