Hỏi về Khóa Ngoại, Khóa chính.

anh chị cho em hỏi.Khi nào chúng ta cần phải tạo khóa ngoại. và nhửng yếu tố nào để đặt 1 trường là khoá ngoại, hay mình thích đặt trường nào làm khóa ngoại thì đặt, và ý nghĩa nó khi liên kết với khóa Chính của Bảng khác ạ. mong anh chị trả lời cho em mấy ý kia giùm.
 

thunderboth

Vi diệu......Sạch sẽ
một câu hỏi thật vi diệu!!! cái này căn bản học lập trình có ngay trong sách vở mà bạn ko chịu khó ngồi lật sách ra mà đọc à :rage3:
 

VSupport

Ngây thơ trong tối
Bạn đọc tham khảo này
Khóa chính:
Khóa chính (hay ràng buộc khóa chính) được sử dụng để định danh duy nhất mỗi record trong table của cơ sở dữ liệu.
Ngoài ra, nó còn dùng để thiết lập quan hệ 1-n (hay ràng buộc tham chiếu) giữa hai table trong cơ sở dữ liệu.
Dữ liệu (value) của field khóa chính phải có tính duy nhất. Và không chứa các giá trị Null.
Mỗi table nên chỉ có một khóa chính, khóa chính có thể tạo ra từ nhiều field của table.
Khóa ngoại:
Khóa ngoại của một table được xem như con trỏ trỏ tới khóa chính của table khác.
Nếu trường MaSV của table DiemSV được sử dụng để tạo ràng buộc tham chiếu đến table HSSV, thông qua khóa chính là MaSV thì MaSV của table DiemSV được gọi là khóa ngoại của bảng này. Đây cũng chính là lý do mà ta nói, khóa ngoại được xem như con trỏ trởi tới khóa chính.
Để hiểu rõ hơn về ý nghĩa sử dụng của khóa chính, khóa ngoại chúng ta hãy xét ví dụ sau: Giả sử cơ sở dữ liệu QLDiemSV có hai table: HSSV và DiemSV như sau:
Table HSSV gồm 6 field, trong đó MaSV được chọn làm khóa chính của table này.
vforum.vn-321041-mysql9.png
Table DiemSV gồm 6 field, trong đó STT là khóa chính và MaSV được chọn làm khóa ngoại của table này.
vforum.vn-321041-mysql10.png
Như vậy, hai table HSSV và DiemSV quan hệ dữ liệu với nhau thông qua field MaSV của mỗi table (đây là qun hệ 1 – n). Hay nói cách khác, ràng buộc tham chiếu đã được tạo giữa hai table (từ table DiemSV đến table HSSV).
Với ràng buộc này thì, việc người sử dụng vô tình hay cố ý phá hủy các liên kết sẽ bị ngăn chặn. Và, người sử dụng cũng không thể nhập vào cột khóa ngoại một giá trị mà giá trị đó không xuất hiện ở cột khóa chính mà khóa này trỏ tới (không thể nhập điểm cho một sinh viên, vào table DiemSV, mà mã của họ không xuất hiện ở cột MaSV ở table HSSV).
 

thunderboth

Vi diệu......Sạch sẽ
Bạn đọc tham khảo này
Khóa chính:
Khóa chính (hay ràng buộc khóa chính) được sử dụng để định danh duy nhất mỗi record trong table của cơ sở dữ liệu.
Ngoài ra, nó còn dùng để thiết lập quan hệ 1-n (hay ràng buộc tham chiếu) giữa hai table trong cơ sở dữ liệu.
Dữ liệu (value) của field khóa chính phải có tính duy nhất. Và không chứa các giá trị Null.
Mỗi table nên chỉ có một khóa chính, khóa chính có thể tạo ra từ nhiều field của table.
Khóa ngoại:
Khóa ngoại của một table được xem như con trỏ trỏ tới khóa chính của table khác.
Nếu trường MaSV của table DiemSV được sử dụng để tạo ràng buộc tham chiếu đến table HSSV, thông qua khóa chính là MaSV thì MaSV của table DiemSV được gọi là khóa ngoại của bảng này. Đây cũng chính là lý do mà ta nói, khóa ngoại được xem như con trỏ trởi tới khóa chính.
Để hiểu rõ hơn về ý nghĩa sử dụng của khóa chính, khóa ngoại chúng ta hãy xét ví dụ sau: Giả sử cơ sở dữ liệu QLDiemSV có hai table: HSSV và DiemSV như sau:
Table HSSV gồm 6 field, trong đó MaSV được chọn làm khóa chính của table này.
vforum.vn-321041-mysql9.png
Table DiemSV gồm 6 field, trong đó STT là khóa chính và MaSV được chọn làm khóa ngoại của table này.
vforum.vn-321041-mysql10.png
Như vậy, hai table HSSV và DiemSV quan hệ dữ liệu với nhau thông qua field MaSV của mỗi table (đây là qun hệ 1 – n). Hay nói cách khác, ràng buộc tham chiếu đã được tạo giữa hai table (từ table DiemSV đến table HSSV).
Với ràng buộc này thì, việc người sử dụng vô tình hay cố ý phá hủy các liên kết sẽ bị ngăn chặn. Và, người sử dụng cũng không thể nhập vào cột khóa ngoại một giá trị mà giá trị đó không xuất hiện ở cột khóa chính mà khóa này trỏ tới (không thể nhập điểm cho một sinh viên, vào table DiemSV, mà mã của họ không xuất hiện ở cột MaSV ở table HSSV).
:thattinh: kiến thức trong sách mà cũng ko chịu khó mà ngồi đọc! bác tl làm gì cho nó tự kiếm để mà nhớ :phingua::xuan-2015:
 

Thống kê

Chủ đề
100,657
Bài viết
467,427
Thành viên
339,833
Thành viên mới nhất
duythinh2222
Top