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

Mối quan hệ sql khóa chính tổng hợp

Nếu bạn có hỗn hợp khóa chính, rồi đến tất cả ràng buộc khóa ngoại tham chiếu nó phải sử dụng tất cả các cột của khóa chính tổng hợp.

Vì vậy, trong trường hợp của bạn - TableTwo phải tham chiếu TableOne(ReportID, Date)

Cách duy nhất để giải quyết vấn đề này là tạo UNIQUE INDEX trên TableOne (ReportID) - sau đó bạn có thể tạo một tham chiếu khóa ngoại cho riêng ràng buộc duy nhất đó.

Nhưng điều đó đặt ra câu hỏi:tại sao không phải là ReportID một mình khóa chính, nếu nó đã là duy nhất (vì bạn có thể đặt UNIQUE INDEX trên đó) và KHÔNG ĐỦ (vì nó là một phần của PK phức hợp)?

Bước 1:tạo UNIQUE INDEX :

CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);

Bước 2:Tạo khóa ngoại từ TableTwo :

ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 Phương pháp hay nhất về chỉ mục SQL Server để cải thiện hiệu suất

  2. cách phát hiện thời gian chờ của máy chủ sql từ ứng dụng .NET mà không sử dụng bắt Ngoại lệ

  3. Sử dụng sự kiện mở rộng để ghi nhật ký Các tính năng không được dùng nữa đang được sử dụng trong phiên bản máy chủ SQL (Ví dụ T-SQL)

  4. Tôi nên sử dụng kiểu dữ liệu nào để lưu trữ các giá trị tiền tệ?

  5. SQL Agent Job - Run As danh sách thả xuống trống