Khóa chính và khóa ngoại: Sự khác biệt là gì?

Mục lục:

Anonim

Trước khi tìm hiểu sự khác biệt giữa khóa chính và khóa ngoại, chúng ta hãy tìm hiểu:

Phím là gì?

Các phím là thuộc tính giúp bạn xác định một hàng (tuple) trong một quan hệ (bảng). Chúng cho phép bạn tìm mối quan hệ giữa hai bảng. Các phím giúp bạn xác định duy nhất một hàng trong bảng bằng sự kết hợp của một hoặc nhiều cột trong bảng đó. Khóa cơ sở dữ liệu cũng hữu ích để tìm một bản ghi hoặc hàng duy nhất từ ​​bảng.

Mối quan hệ cơ sở dữ liệu là gì?

Mối quan hệ cơ sở dữ liệu là các liên kết giữa một hoặc nhiều bảng được tạo bằng cách sử dụng các câu lệnh nối. Nó được sử dụng để lấy dữ liệu từ cơ sở dữ liệu một cách hiệu quả. Chủ yếu có ba kiểu quan hệ 1) Một-một, 2) Một-nhiều, 3) Nhiều-nhiều.

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ệ quản trị cơ sở dữ liệu quan hệ. Nó không được trùng lặp, nghĩa là cùng một giá trị không được xuất hiện nhiều hơn một lần trong bảng.

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

Khóa ngoại là gì?

Khóa ngoại là một 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 của dữ liệu và cho phép điều hướng giữa hai trường hợp 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 đến khóa chính của một bảng khác. Mọi mối quan hệ trong cơ sở dữ liệu phải được hỗ trợ bởi một khóa ngoại.

SỰ KHÁC BIỆT CHÍNH:

  • Ràng buộc khóa chính là 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 bảng trong khi bạn có thể có nhiều khóa ngoại trong bảng.
  • Giá trị của khóa chính không thể bị xóa khỏi bảng mẹ 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ị nào giống nhau cho một khóa chính, mặt khác một 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 bảng trong khi chèn bất kỳ giá trị nào trong bảng khóa ngoại, hãy đảm bảo rằng giá trị đó có trong một cột của khóa chính.

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

Dưới đây là những nhược điểm / lợi ích của việc sử dụng khóa chính:

  • Mục đích chính của khóa chính là xác định từng và mọi 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ị rỗng.
  • 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 mẹ.
  • Dữ liệu được tổ chức theo một chuỗi chỉ mục được phân cụm bất cứ khi nào bạn tổ chức bảng DBMS một cách vật lý.

Tại sao sử dụng Khóa ngoại?

Dưới đây là những lý do quan trọng của việc sử dụng 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 mẹ.
  • 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 kết hợp các cột với khóa chính trong bảng mẹ.
  • Ràng buộc khóa ngoại trong SQL được sử dụng để đảm bảo tính toàn vẹn tham chiếu của dữ liệu mẹ phù hợp với các giá trị trong bảng con.

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 (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Đây,

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

Thí dụ:

StudID Cuộn không Tên đầu tiên Họ E-mail
1 11 Tom Giá bán Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó.
2 12 Nick Được rồi Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó.
3 13 Dana Natan Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó.

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, Roll No, First Name, Last Name 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.

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 
(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ẽ tạo.
  • Các tham số column1, column2… mô tả các cột cần được thêm vào bảng.
  • Ràng buộc biểu thị tên của ràng buộc bạn đang tạo.
  • Tham chiếu chỉ ra một bảng có khóa chính.

Thí dụ:

DeptCode DeptName
001 Khoa học
002 Tiếng Anh
005 Máy vi tính
ID giáo viên Họ tên Tên
B002 David Warner
B017 Sara Joseph
B009 Mike Brunton

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

Trong bảng này, 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.

ID giáo viên DeptCode Họ tên Tên
B002 002 David Warner
B017 002 Sara Joseph
B009 001 Mike Brunton

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

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

Đây là sự khác biệt quan trọng giữa khóa chính và khóa ngoại:

Khóa chính Khóa ngoại
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ệ quản trị 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.
Nó giúp bạn xác định duy nhất một bản ghi trong bảng. Đây là một trường trong bảng là khóa chính của một bảng khác.
Khóa chính không bao giờ chấp nhận giá trị rỗng. Một khóa ngoại có thể chấp nhận nhiều giá trị null.
Khóa chính là một chỉ mục được phân nhóm và dữ liệu trong bảng DBMS được tổ chức vật lý theo trình tự của chỉ mục được phân nhóm. Khóa ngoại không thể tự động tạo chỉ mục, được phân cụm hoặc không được phân cụm.
Bạn có thể có một khóa chính trong một bảng. Bạn có thể có nhiều khóa ngoại trong một bảng.
Không thể xóa giá trị của khóa chính khỏi bảng chính. Giá trị của khóa ngoại giá trị có thể được xóa khỏi bảng con.
Bạn có thể xác định khóa chính một cách ngầm định trên các bảng tạm thời. Bạn không thể xác định khóa ngoại trên bảng tạm thời cục bộ hoặc toàn cầu.
Khóa chính là một chỉ mục được phân cụm. Theo mặc định, nó không phải là một chỉ mục được phân cụm.
Không có hai hàng nào có thể có bất kỳ giá trị nào giống nhau cho một khóa chính. 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 bảng. Trong khi chèn bất kỳ giá trị nào trong bảng khóa ngoại, hãy đảm bảo rằng giá trị đó có trong một cột của khóa chính.