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 null
hữ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 null
IMO, 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 owner
trườ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 DEFAULT
như 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 Nobody
nhâ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 disabled
lĩ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ó!