01/10/2018, 14:24

Cần trợ giúp về SQL server ạ

Các bạn ơi , mình loay hoay mãi vẫn chưa ra!
Mình có 2 bảng như này
Mượn trả (Mã mượn trả, Số thẻ, Mã nhân viên, Ngày mượn)
CT Mượn trả (Mã mượn trả, Mã sách, Ghi chú, Đã_trả, Ngày trả)
Mình viết trên sql


Nhưng không được , nó báo lỗi :
Msg 1776, Level 16, State 0, Line 109
There are no primary or candidate keys in the referenced table ‘MuonTra’ that match the referencing column list in the foreign key ‘FK_1CT’.
Msg 1750, Level 16, State 0, Line 109
Could not create constraint or index. See previous errors.
Mong mọi người giúp đỡ với ạ!

Huỳnh Kim Ninh viết 16:37 ngày 01/10/2018

Bảng MuonTra có tới 2 khóa chính MaMuonTra, MaNV hả bạn? Theo như mình nhớ thì khóa ngoại phải được tham chiếu đúng đến khóa chính (nếu nhiều khóa chính thì phải liệt kê hết ra). Như dòng lỗi đã báo thì khóa ngoại MaMuonTra trong bảng CTMuonTra ko thể tham chiếu đến bảng MuonTra do không có đủ khóa chính thích hợp.

Vô Hình Vô Tướng viết 16:27 ngày 01/10/2018

Ý bạn là Khi mình tham chiếu đến một bảng thì phải tham chiếu đến TOÀN BỘ khóa chính ???(phải không?) .Ví dụ ,CTMuonTra(MaMuonTra) phải tham chiếu hết toàn bộ khóa chính bên table MuonTra(MaMuonTra,MaNV) phải không nhỉ?

Huỳnh Kim Ninh viết 16:39 ngày 01/10/2018

Tạm hiểu theo cách đó cũng được. Do hình cũng là newbie thôi nên cũng chưa nắm chắc.

Quốc Công viết 16:32 ngày 01/10/2018
stackoverflow.com
Chris J

There are no primary or candidate keys in the referenced table that match the referencing column list in the foreign key

sql, sql-server, key, candidate
answered by Chris J on 11:14AM - 26 Jul 13

Bạn xem cái nảy để giải quyết vấn đề trên nhé!
Do bảng Mượn Trả của bạn gồm tổ hợp 2 khóa chính nên khi liên kết khóa ngoại bắt buộc phải trùng nha bạn!

Hai Lúa viết 16:27 ngày 01/10/2018

Khi làm PTTK, đến lúc ra mô hình CSDL thì bạn phải lấy bộ khóa chính (Primary Key) từ table CHA (MuonTra) xuống table CON (CTMuonTra).

Do đó khi tạo Foreign Key từ bảng CON tham chiếu đến bảng CHA phải liệt kê Bộ Khóa tương ứng.
Trong trường hợp này bộ khóa bảng cha là (MaMuonTra, MaNV) thì bảng con phải có cặp column tương ứng khi tham chiếu.

Thiết kế 2 bảng của bạn hơi kỳ, thông thường chỉ cần:

  • Bảng MuonTra: chỉ cần 1 column (vd: MaMuonTra) làm PrimaryKey
  • Bảng CTMuonTra:
  • tạo Column, vd: MaMuonTraCT làm PrimaryKey
  • ForeignKey: CTMuonTra (MaMuonTra) -> tham chiếu tới MuonTra(MaMuonTra).

Ngoại lệ: cái này chỉ dành cho SQL Server.
Bạn có thể tạo FK từ bảng con tham chiếu tới UniqueKey ở bảng cha. <= không khuyến khích dùng.

NgUyỄn KyN viết 22:44 ngày 05/03/2020

Cho mình hỏi CTMuonTra ở đây CT nghĩa là gì vậy?  :3 

Bài liên quan
0