Trong SQL, có cách nào để thực thi rằng chỉ một cột trong một nhóm cột có giá trị không và cột còn lại là rỗng? Có thể một ràng buộc hoặc kích hoạt? Loại điều này có thể là một bảng tra cứu, nhưng có bất kỳ thiết kế bảng thay thế nào có thể thực hiện điều này tốt hơn không?SQL: làm thế nào để thực thi rằng chỉ có một cột duy nhất được đặt trong một nhóm cột
Ví dụ:
ID OtherTable1ID OtherTable2ID OtherTable3ID
-----------------------------------------------------
1 23 NULL NULL
2 NULL 45 NULL
3 33 55 NULL -- NOT ALLOWED
Vấn đề chính là các cột này đều FKS đến các bảng khác, vì vậy tôi không thể sụp đổ chúng xuống một cột duy nhất.
Tôi đang sử dụng SQL Server, nhưng mọi câu trả lời đều sẽ thực hiện.
Cảm ơn bạn đã cập nhật, nhưng bạn có thể muốn cung cấp thêm chi tiết về thiết kế cơ sở dữ liệu. Ví dụ, đây là một tình huống phụ, trong đó bảng này có thể là một kiểu con của một và chỉ một trong các bảng khác. Ngoài ra, có được phép cho tất cả các cột "Khác" không có giá trị không? –
Trông giống như bảng tra cứu. Về cơ bản nó có nghĩa là nếu bạn thêm một FK nữa, bạn thêm một cột nữa vào nó? –
Vâng, về cơ bản nó là một bảng tra cứu cho tôi. Nếu tôi cần thêm một tham số tra cứu khác, tôi phải thêm một cột FK khác. Có cách nào tốt hơn để đạt được điều này? –