Sự khác biệt giữa khóa chính và khóa ngoại

Sự khác biệt chính giữa Khóa chính và Khóa ngoại

  • Ràng buộc khóa chính là một cột xác định duy nhất mỗi hàng trong bảng của hệ thống quản lý cơ sở dữ liệu quan hệ, trong khi khóa ngoại là cột tạo mối quan hệ giữa hai bảng.
  • Khóa chính không bao giờ chấp nhận giá trị null, trong khi khóa ngoại có thể chấp nhận nhiều giá trị null.
  • Bạn chỉ có thể có một khóa chính duy nhất trong một bảng, trong khi bạn có thể có nhiều khóa ngoại trong một bảng.
  • Giá trị của khóa chính không thể bị xóa khỏi bảng cha, trong khi giá trị của khóa ngoại có thể bị xóa khỏi bảng con.
  • Không có hai hàng nào có thể có bất kỳ giá trị giống nhau nào cho khóa chính; mặt khác, khóa ngoại có thể chứa các giá trị trùng lặp.
  • Không có giới hạn trong việc chèn các giá trị vào cột trong bảng trong khi chèn bất kỳ giá trị nào vào bảng khóa ngoại; đảm bảo rằng giá trị có trong một cột của khóa chính.
Sự khác biệt giữa khóa chính và khóa ngoại
Sự khác biệt giữa khóa chính và khóa ngoại

Ở đây, tôi đã phân tích sự khác biệt giữa khóa chính và khóa ngoại và sẽ đánh giá toàn diện ưu và nhược điểm của chúng.

Khóa chính là gì?

Ràng buộc khóa chính là một cột hoặc nhóm cột xác định duy nhất mỗi hàng trong bảng của hệ thống quản lý cơ sở dữ liệu quan hệ. Nó không thể trùng lặp, nghĩa là cùng một giá trị không được xuất hiện nhiều lần trong bảng.

Một bảng không thể có nhiều hơn một khóa chính. Các khóa chính có thể được xác định ở cấp độ cột hoặc bảng. Nếu bạn tạo khóa chính tổng hợp thì khóa đó phải được xác định ở cấp bảng.

Ví dụ về khóa chính

Cú pháp:

Dưới đây là cú pháp của Khóa chính:

CREATE TABLE <Table-Name>
(
Column1 datatype,
Column2 datatype,  PRIMARY KEY (Column-Name)
.
);    

Ở đây,

  • Table_Name là tên bảng bạn phải tạo.
  • Column_Name là tên cột có khóa chính.

Ví dụ:

Mã sinh viên Cuộn không Tên Họ Email
1 11 Tom Giá abc@gmail.com
2 12 Nick Wright xyz@gmail.com
3 13 Dana Natan mno@yahoo.com

Trong ví dụ trên, chúng tôi đã tạo một bảng sinh viên với các cột như StudID, Mã số báo danh, Tên, Họ và Email. StudID được chọn làm khóa chính vì nó có thể xác định duy nhất các hàng khác trong bảng.

Tại sao nên sử dụng Khóa chính?

Trong suốt nhiều năm xử lý các hệ thống cơ sở dữ liệu, tôi đã lưu ý những nhược điểm và lợi ích này khi sử dụng khóa chính:

  • Mục đích chính của khóa chính là xác định từng bản ghi trong bảng cơ sở dữ liệu.
  • Bạn có thể sử dụng khóa chính khi không cho phép ai đó nhập giá trị null.
  • Nếu bạn xóa hoặc cập nhật bản ghi, hành động bạn chỉ định sẽ được thực hiện để đảm bảo tính toàn vẹn của dữ liệu.
  • Thực hiện thao tác hạn chế để từ chối thao tác xóa hoặc cập nhật cho bảng cha.
  • Dữ liệu được sắp xếp theo một chuỗi các chỉ mục cụm bất cứ khi nào bạn sắp xếp vật lý một bảng DBMS.

Khóa ngoại là gì?

Khóa ngoại là cột tạo mối quan hệ giữa hai bảng. Mục đích của Khóa ngoại là duy trì tính toàn vẹn dữ liệu và cho phép điều hướng giữa hai phiên bản khác nhau của một thực thể. Nó hoạt động như một tham chiếu chéo giữa hai bảng vì nó tham chiếu khóa chính của bảng khác. Mọi mối quan hệ trong cơ sở dữ liệu phải được hỗ trợ bởi khóa ngoại.

Ví dụ về khóa ngoại

Cú pháp:

Dưới đây là cú pháp của Khóa ngoại:

CREATE TABLE <Table Name>( 
column1    datatype,
column2    datatype,  
constraint (name of constraint) 
FOREIGN KEY [column1, column2...] 
REFERENCES [primary key table name] (List of primary key table column) ...);

Ở đây,

  • Tham số Table Name cho biết tên của bảng mà bạn sắp tạo.
  • Các tham số cột1, cột2… mô tả các cột cần thêm vào bảng.
  • Một ràng buộc biểu thị tên của ràng buộc bạn đang tạo.
  • Tài liệu tham khảo chỉ ra một bảng có khóa chính.

Ví dụ:

Mã phòng Tên phòng ban
001 Khoa học
002 Tiếng Anh
005 Máy tính
Mã giáo viên Họ tên tên
B002 David Warner
B017 Sara người đàn ông chay tịnh
B009 làm biếng Brunton

Trong ví dụ trên, chúng ta có hai bảng: một giáo viên và một khoa trong trường học. Tuy nhiên, không có cách nào để biết tìm kiếm nào hoạt động ở bộ phận nào.

Trong bảng này, bằng cách thêm khóa ngoại trong Deptcode vào tên giáo viên, chúng ta có thể tạo mối quan hệ giữa hai bảng.

Mã giáo viên Mã phòng Họ tên tên
B002 002 David Warner
B017 002 Sara người đàn ông chay tịnh
B009 001 làm biếng Brunton

Khái niệm này còn được gọi là tính toàn vẹn tham chiếu.

Tại sao nên sử dụng khóa ngoại?

Từ những gì tôi đã thấy, đây là những lý do quan trọng để triển khai khóa ngoại:

  • Khóa ngoại giúp bạn di chuyển các thực thể bằng khóa chính từ bảng cha.
  • A khóa ngoại cho phép bạn liên kết hai hoặc nhiều bảng với nhau.
  • Nó làm cho dữ liệu cơ sở dữ liệu của bạn nhất quán.
  • Khóa ngoại có thể được sử dụng để khớp một cột hoặc tổ hợp các cột với khóa chính trong bảng cha.
  • Ràng buộc khóa ngoài SQL được sử dụng để đảm bảo tính toàn vẹn tham chiếu của dữ liệu gốc khớp với các giá trị trong bảng con.

Sự khác biệt giữa Khóa chính và Khóa ngoài

Hãy để tôi chia sẻ sự khác biệt quan trọng giữa khóa chính và khóa ngoại, như cá nhân tôi đã trải nghiệm:

Khóa chính vs Khóa ngoại
Khóa chính vs Khóa ngoại
Cơ sở so sánh Khóa chính chính nước ngoài
Định nghĩa Ràng buộc khóa chính là một cột hoặc một nhóm cột xác định duy nhất mỗi hàng trong bảng của hệ thống quản lý cơ sở dữ liệu quan hệ. Khóa ngoại là một cột tạo mối quan hệ giữa hai bảng.
Cơ bản Nó giúp bạn xác định duy nhất một bản ghi trong bảng. Đó là một trường trong bảng và là khóa chính của bảng khác.
NULL Khóa chính không bao giờ chấp nhận giá trị null. Khóa ngoại có thể chấp nhận nhiều giá trị null.
Lập chỉ mục Khóa chính là một chỉ mục cụm và dữ liệu trong bảng DBMS được sắp xếp vật lý theo trình tự của chỉ mục cụm. Khóa ngoại không thể tự động tạo chỉ mục, có nhóm hoặc không có nhóm.
Đếm Bạn có thể có một khóa Chính duy nhất trong một bảng. Bạn có thể có nhiều khóa ngoại trong một bảng.
xóa Không thể xóa giá trị của khóa chính khỏi bảng cha. Giá trị của khóa ngoại có thể được xóa khỏi bảng con.
Bảng tạm thời Bạn có thể xác định ngầm khóa chính trong các bảng tạm thời. Bạn không thể xác định khóa ngoại trên các bảng tạm thời cục bộ hoặc toàn cục.
Mối quan hệ Khóa chính là một chỉ mục cụm. Theo mặc định, nó không phải là một chỉ mục được nhóm.
Sao chép Không có hai hàng nào có thể có giá trị giống nhau cho khóa chính. Khóa ngoại có thể chứa các giá trị trùng lặp.
chèn Không có giới hạn trong việc chèn các giá trị vào cột trong bảng. Trong khi chèn bất kỳ giá trị nào vào bảng khóa ngoại, hãy đảm bảo rằng giá trị đó hiện diện trong một cột của khóa chính.

Cách chọn giữa khóa chính và khóa ngoại

Từ những gì chúng ta đã thấy, khóa chính xác định duy nhất các mục trong bảng và khóa ngoại liên kết các mục này trên các bảng, cả hai đều quan trọng để duy trì tính toàn vẹn dữ liệu và hỗ trợ truy xuất dữ liệu hiệu quả.