btvn.vn

Bảng, khóa chính và khóa ngoài

Lưu trên thiết bị này
Cơ sở dữ liệu và SQL · Chọn bài khác

Vì sao cần mã học sinh?

Hai bạn có thể cùng họ tên. Nếu chỉ dựa vào tên để liên kết điểm với người học, ta có thể nhầm. Mã nhận diện giúp phân biệt các đối tượng.

Từ bảng đến quan hệ

Quan sát sơ đồ để nối các khái niệm với nhau.
Một lớp có nhiều học sinh; MaLop trong HocSinh tham chiếu MaLop của Lop.
Một lớp có nhiều học sinh; MaLop trong HocSinh tham chiếu MaLop của Lop.
Mở hình lớn
Trong CSDL quan hệ, bảng gồm các hàng (bản ghi) và cột (trường/thuộc tính). Khóa là tập thuộc tính giúp phân biệt bản ghi và không thừa thuộc tính cho nhiệm vụ ấy; có thể có nhiều khóa ứng viên. Khóa chính là một khóa được chọn, không trùng và không nhận giá trị rỗng theo ràng buộc khóa chính. Khóa có thể gồm nhiều trường. Khóa ngoài tham chiếu khóa phù hợp ở bảng được liên kết. Một giá trị khóa ngoài có thể lặp ở nhiều hàng; nếu cho phép NULL thì giá trị đó biểu thị chưa có tham chiếu, còn giá trị khác NULL phải thỏa ràng buộc. Hai cột cùng tên chưa tự tạo quan hệ có kiểm soát.

Một lớp có nhiều học sinh

Bảng Lop có MaLop khóa chính và TenLop. Bảng HocSinh có MaHS khóa chính, HoTen và MaLop khóa ngoài tới Lop. Nhiều học sinh cùng MaLop là bình thường; hai học sinh cùng MaHS vi phạm khóa chính. Quan hệ là một lớp có nhiều học sinh.

Thử vận dụng

Trong bảng HocSinh, trường nào thích hợp hơn làm khóa chính nếu quy định mã học sinh là duy nhất?
Chọn một đáp án

Khóa ghép trong đăng kí

Bảng DangKi có MaHS, MaCLB và NgayDangKi. Nếu mỗi học sinh chỉ đăng kí mỗi CLB một lần, cặp (MaHS, MaCLB) có thể làm khóa chính. Từng MaHS hoặc từng MaCLB riêng lẻ có thể lặp nên không đủ phân biệt một đăng kí.

Ví dụ xem cách làm

Bảng Lop chỉ có mã A và B. Thêm học sinh mang MaLop = C có vi phạm khóa ngoài đang được thực thi không?

Ví dụ xem cách làm

Có thể kết luận HoTen là khóa vì năm hàng đang xem chưa có ai trùng tên không?

Những điều cần nhớ

Khóa chính nhận diện bản ghi, khóa ngoài liên kết có ràng buộc. Xét quy tắc của bài toán và nhớ khả năng dùng khóa ghép.

Đang học