Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

EF4.1:Có thể có mối quan hệ không-hoặc-một đến không-hoặc-một (0..1 đến 0..1) không?

Không, nó không thể thực hiện được và tôi nghi ngờ nó hoạt động trong máy chủ SQL. Mối quan hệ cơ sở dữ liệu yêu cầu rằng một đầu trở nên phụ thuộc. Nó có nghĩa là nó tham chiếu đến khóa chính (PK) của một đầu chính - chúng tôi gọi đây là khóa ngoại (FK). Nếu chúng ta nói về quan hệ một-một, FK phải được đánh dấu là duy nhất để chỉ một bản ghi trong bảng phụ thuộc có thể tham chiếu đến một bản ghi đã cho từ bảng chính. Mối quan hệ hợp lệ duy nhất trong trường hợp này là 0..1 - 1 trong đó mối quan hệ chính có thể tồn tại mà không phụ thuộc nhưng mối quan hệ phụ thuộc chỉ có thể tồn tại khi liên quan đến mối quan hệ chính hiện có vì giá trị FK của nó phải được đặt thành giá trị PK của mối quan hệ chính. Về mặt lý thuyết, FK có thể là nullable nhưng nó phụ thuộc vào cách cơ sở dữ liệu thực hiện các ràng buộc duy nhất. Nếu cơ sở dữ liệu tính null là một giá trị duy nhất khác thì chỉ một bản ghi phụ thuộc có thể đặt FK thành null (tôi nghĩ đây là trường hợp của máy chủ SQL).

Trong EF, điều này thậm chí còn phức tạp hơn vì EF không hỗ trợ các ràng buộc duy nhất và do đó bạn có thể xây dựng quan hệ 1-1 chỉ khi FK trong thực thể phụ thuộc cũng là PK của nó (=không có cách nào để đặt nó thành null). Nếu bạn không thể đặt FK thành null, bạn không thể đặt nó là null và vì thực thể chính đó phải tồn tại nếu không, tính toàn vẹn tham chiếu sẽ gây ra lỗi.

Giải pháp tốt nhất cho bạn là xem xét Request là thực thể chính và Result như phụ thuộc. Yêu cầu phải được tạo trước và nó phải được lưu trong cơ sở dữ liệu miễn là Result . Result phải có cùng giá trị PK (cột không được tự động tăng dần) như Request tương ứng (và PK phải là FK để Request ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ các tệp lớn trong cơ sở dữ liệu gây ra Ngoại lệ của loại 'System.OutOfMemoryException'

  2. XML dưới dạng tham số trong thủ tục được lưu trữ (máy chủ sql)

  3. Cách khắc phục “Câu lệnh EXECUTE không thành công vì mệnh đề WITH RESULT SETS của nó đã chỉ định 2 cột cho tập kết quả…” Msg 11537 trong SQL Server

  4. Truy vấn SELECT có luôn trả về các hàng theo cùng một thứ tự không? Bảng có chỉ mục được phân nhóm

  5. Tính tổng số đang chạy trong SQL Server