Khóa DBMS: Ứng viên, Chính, Siêu cấp & Ngoại lai
⚡ Tóm tắt thông minh
Trong hệ quản trị cơ sở dữ liệu (DBMS), khóa là các thuộc tính xác định duy nhất một hàng trong bảng và thiết lập mối quan hệ giữa các bảng. Tám loại khóa, từ khóa siêu cấp và khóa chính đến khóa ngoại và khóa thay thế, đảm bảo tính đồng nhất và toàn vẹn dữ liệu trong cơ sở dữ liệu quan hệ.

Khóa trong hệ quản trị cơ sở dữ liệu (DBMS) là gì?
Khóa trong hệ quản trị cơ sở dữ liệu (DBMS) Khóa là một thuộc tính hoặc tập hợp các thuộc tính giúp bạn xác định một hàng (bộ dữ liệu) trong một quan hệ (bảng). Chúng cho phép bạn tìm ra mối quan hệ giữa hai bảng. Khóa 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, và chúng cũng hữu ích để tìm một bản ghi duy nhất trong bảng.
Ví dụ:
| Mã hiệu công nhân | Tên đầu tiên | Họ |
|---|---|---|
| 11 | Andrew | Johnson |
| 22 | Tom | Gỗ |
| 33 | Alex | Mạnh khỏe |
Trong ví dụ trên, Mã nhân viên là khóa chính vì nó xác định duy nhất một bản ghi nhân viên. Trong bảng này, không có nhân viên nào khác có thể có cùng Mã nhân viên.
Tại sao chúng ta cần chìa khóa?
Dưới đây là một số lý do để sử dụng khóa trong hệ quản trị cơ sở dữ liệu:
- Khóa giúp bạn xác định bất kỳ hàng dữ liệu nào trong bảng. Trong ứng dụng thực tế, một bảng có thể chứa hàng nghìn bản ghi, và các bản ghi đó có thể bị trùng lặp. Khóa đảm bảo bạn có thể xác định duy nhất một bản ghi trong bảng bất chấp những thách thức này.
- Chúng cho phép bạn thiết lập và xác định mối quan hệ giữa các bảng.
- Chúng giúp bạn củng cố bản sắc và sự chính trực trong mối quan hệ.
Các loại khóa trong hệ quản trị cơ sở dữ liệu (DBMS)
Trong hệ quản trị cơ sở dữ liệu (DBMS), chủ yếu có tám loại khóa khác nhau, và mỗi loại khóa có chức năng riêng:
- Siêu chìa khóa
- Khóa chính
- Chìa khóa ứng viên
- Khóa thay thế
- chính nước ngoài
- Khóa ghép
- Tổ hợp phím
- Phím thay thế
Bảng dưới đây tóm tắt cả tám đặc điểm một cách tổng quan trước khi mỗi đặc điểm được giải thích chi tiết.
| Key | Tóm lại | Độc nhất? |
|---|---|---|
| Siêu chìa khóa | Bất kỳ tập hợp thuộc tính nào xác định một hàng, các thuộc tính bổ sung đều được cho phép. | Có |
| Chìa khóa ứng viên | Một khóa siêu tối giản, không có thuộc tính dư thừa. | Có |
| Khóa chính | Khóa ứng viên được chọn, không rỗng. | Có |
| Khóa thay thế | Khóa ứng cử viên không được chọn làm khóa chính. | Có |
| chính nước ngoài | Tham chiếu đến khóa chính trong một bảng khác. | Không |
| Khóa ghép | Hai hoặc nhiều thuộc tính, mỗi thuộc tính có thể không phải là duy nhất. | Kết hợp |
| Tổ hợp phím | Kết hợp hai hoặc nhiều cột để tạo sự độc đáo | Kết hợp |
| Phím thay thế | Mã định danh nhân tạo được tạo ra | Có |
Khóa siêu cấp là gì?
Khóa siêu cấp là một nhóm các khóa đơn hoặc nhiều khóa dùng để xác định các hàng trong một bảng. Khóa siêu cấp có thể có thêm các thuộc tính không cần thiết cho việc xác định duy nhất.
Ví dụ:
| EmpSSN | EmpNum | tên emp |
|---|---|---|
| 9812345098 | AB05 | Cho xem |
| 9876512345 | AB06 | Roslyn |
| 199937890 | AB07 | James |
Trong ví dụ trên, EmpSSN và EmpNum là các khóa siêu cấp.
Khóa chính là gì?
KHÓA CHÍNH in DBMS Khóa chính là một cột hoặc một nhóm cột trong bảng dùng để xác định duy nhất mỗi hàng trong bảng đó. Khóa chính không được trùng lặp, nghĩa là cùng một giá trị không thể xuất hiện nhiều hơn một 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 quy tắc để định nghĩa khóa chính
- Hai hàng không thể có cùng giá trị khóa chính.
- Mỗi hàng phải có một giá trị khóa chính.
- Trường khóa chính không thể rỗng.
- Giá trị trong cột khóa chính không bao giờ có thể được sửa đổi hoặc cập nhật nếu bất kỳ khóa ngoại nào tham chiếu đến khóa chính đó.
Ví dụ: Trong ví dụ sau, StudID là khóa chính.
| Mã sinh viên | Cuộn không | Tên | Họ | |
|---|---|---|---|---|
| 1 | 11 | Tom | Giá | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |
Chìa khóa thay thế là gì?
KHÓA THAY THẾ Khóa chính là một cột hoặc một nhóm cột trong bảng dùng để xác định duy nhất mỗi hàng. Một bảng có thể có nhiều lựa chọn cho khóa chính, nhưng chỉ có một lựa chọn được đặt làm khóa chính. Tất cả các khóa không phải là khóa chính được gọi là khóa thay thế.
Ví dụ: Trong bảng này, StudID, Roll No và Email đủ điều kiện trở thành khóa chính. Nhưng vì StudID là khóa chính, nên Roll No và Email trở thành khóa thay thế.
| Mã sinh viên | Cuộn không | Tên | Họ | |
|---|---|---|---|---|
| 1 | 11 | Tom | Giá | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |
Khóa ứng viên là gì?
KHÓA THÍ SINH Khóa chính là một tập hợp các thuộc tính xác định duy nhất các bản ghi trong một bảng. Khóa ứng cử viên là một khóa siêu cấp không có thuộc tính lặp lại. Khóa chính nên được chọn từ các khóa ứng cử viên. Mỗi bảng phải có ít nhất một khóa ứng cử viên, và một bảng có thể có nhiều khóa ứng cử viên nhưng chỉ có một khóa chính duy nhất.
Các thuộc tính của khóa ứng viên:
- Nó phải chứa các giá trị duy nhất.
- Một khóa ứng viên có thể có nhiều thuộc tính.
- Nó không được chứa giá trị rỗng.
- Nó nên chứa số lượng trường tối thiểu cần thiết để đảm bảo tính duy nhất.
- Nó xác định duy nhất từng bản ghi trong bảng.
Ví dụ: Trong bảng bên dưới, StudID, Roll No và Email là các khóa ứng viên giúp chúng ta xác định duy nhất một hồ sơ sinh viên. Mối quan hệ của chúng với khóa chính và khóa siêu cấp là một cách phổ biến để hiểu. phụ thuộc chức năng.
| Mã sinh viên | Cuộn không | Tên | Họ | |
|---|---|---|---|---|
| 1 | 11 | Tom | Giá | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Natan | mno@yahoo.com |

Khóa ngoại là gì?
KHÓA NGOÀI Khóa ngoại là một cột tạo ra 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 thể hiệ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 đến khóa chính của bảng khác.
Ví dụ:
| PhòngCode | 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ụ này, chúng ta có hai bảng, Giáo viên và Phòng ban, trong một trường học. Như hiện tại, không có cách nào để biết giáo viên nào làm việc ở phòng ban nào.
Bằng cách thêm khóa ngoại DeptCode Thông qua bảng 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 | PhòngCode | 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.
Khóa phức hợp là gì?
KHÓA TỔNG HỢP Khóa kép có hai hoặc nhiều thuộc tính cho phép bạn nhận dạng duy nhất một bản ghi cụ thể. Có thể mỗi cột riêng lẻ không phải là duy nhất trong cơ sở dữ liệu. Tuy nhiên, khi kết hợp lại, các cột trở nên duy nhất. Mục đích của khóa kép là để xác định duy nhất mỗi bản ghi trong bảng.
Ví dụ:
| Đặt hàngKhông | ID sản phẩm | Tên sản phẩm | Số Lượng |
|---|---|---|---|
| B005 | nhật bản102459 | Chuột | 5 |
| B005 | DKT321573 | USB | 10 |
| B005 | OMG446789 | Màn hình LCD | 20 |
| B004 | DKT321573 | USB | 15 |
| B002 | OMG446789 | Máy in laser | 3 |
Trong ví dụ này, OrderNo và ProductID không thể cùng là khóa chính, vì cả hai đều không xác định duy nhất một bản ghi. Tuy nhiên, một khóa kết hợp gồm OrderNo và ProductID sẽ xác định duy nhất mỗi bản ghi.
Khóa tổng hợp là gì?
TỔ HỢP PHÍM Đây là sự kết hợp của hai hoặc nhiều cột dùng để xác định duy nhất các hàng trong bảng. Sự kết hợp các cột đảm bảo tính duy nhất, mặc dù tính duy nhất của từng cột riêng lẻ không được đảm bảo. Do đó, chúng được kết hợp để xác định duy nhất các bản ghi trong bảng.
Sự khác biệt giữa khóa phức hợp và khóa tổng hợp là ở chỗ bất kỳ phần nào của khóa phức hợp đều có thể là khóa ngoại, trong khi khóa tổng hợp có thể là hoặc không phải là một phần của khóa ngoại.
Khóa thay thế là gì?
KHÓA THAY THẾ Khóa thay thế là một khóa nhân tạo nhằm mục đích xác định duy nhất mỗi bản ghi. Loại khóa này là duy nhất vì nó được tạo ra khi bạn không có bất kỳ khóa chính tự nhiên nào. Khóa thay thế không mang ý nghĩa gì đối với dữ liệu trong bảng và thường là một số nguyên được tạo ra ngay trước khi bản ghi được chèn.
| Họ tên | lastname | Thời gian bắt đầu | Thời gian kết thúc |
|---|---|---|---|
| Anne | Smith | 09:00 | 18:00 |
| jack | Francis | 08:00 | 17:00 |
| Anna | McLean | 11:00 | 20:00 |
| Cho xem | Willam | 14:00 | 23:00 |
Ví dụ trên cho thấy thời gian làm việc theo ca của các nhân viên khác nhau. Ở đây, cần có một khóa thay thế để xác định duy nhất từng nhân viên. Khóa thay thế trong SQL được sử dụng khi:
- Không có thuộc tính nào có tham số là khóa chính.
- Khóa chính quá lớn hoặc quá phức tạp.
Sự khác biệt giữa khóa chính và khóa ngoại
Sau đây là sự khác biệt chính giữa khóa chính và khóa ngoại:
| Khóa chính | chính nước ngoài |
|---|---|
| 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. |
| 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. |
| Khóa chính là một chỉ mục nhóm, và dữ liệu trong bảng được sắp xếp vật lý theo trình tự của chỉ mục nhóm đó. | Khóa ngoại không thể tự động tạo chỉ mục, dù là chỉ mục phân cụm hay không phân cụm. Bạn phải tạo chỉ mục thủ công. |
| Một bảng chỉ có thể có một khóa chính duy nhất. | Bạn có thể có nhiều khóa ngoại trong một bảng. |
