Trong Microsoft Access, bạn không thể có nhiều khóa chính trong một bảng. Tuy nhiên, bạn có thể sử dụng một khóa chính kết hợp (Composite Primary Key), và có thể có nhiều khóa phụ (Foreign Key) tham chiếu đến các bảng khác. primary Key)

Có một yêu cầu: có 1 bảng danh mục xã, huyện, tỉnh. vậy bạn xem dữ liệu trên có kết hợp khóa chính 3 cột lại với nhau hay không ?
| Xã | Huyện | Tĩnh |
| A | H1 | T01 |
| B | H1 | T01 |
Trả lời nhiều khóa trong trong table được hay không: ?
Khóa chính kết hợp được sử dụng khi một cột duy nhất không đủ để xác định duy nhất một bản ghi, nhưng sự kết hợp của nhiều cột sẽ giúp đảm bảo tính duy nhất. Bạn thường gặp tình huống này khi bảng lưu trữ dữ liệu nhiều chiều hoặc quan hệ giữa các bảng.
Giả sử bạn có bảng OrderDetails để lưu trữ chi tiết các đơn hàng, trong đó mỗi đơn hàng có thể chứa nhiều sản phẩm. Trong trường hợp này, mỗi bản ghi trong bảng OrderDetails cần xác định duy nhất bởi sự kết hợp của OrderID (ID của đơn hàng) và ProductID (ID của sản phẩm). Vì một sản phẩm có thể xuất hiện trong nhiều đơn hàng, và một đơn hàng có thể có nhiều sản phẩm, do đó chỉ sử dụng một cột đơn lẻ như OrderID hoặc ProductID sẽ không đủ để xác định duy nhất một bản ghi.
Cấu trúc bảng OrderDetails:
| OrderID | ProductID | Quantity | UnitPrice |
|---|---|---|---|
| 1001 | P001 | 2 | 10.0 |
| 1001 | P002 | 1 | 20.0 |
| 1002 | P001 | 3 | 10.0 |
| 1002 | P003 | 4 | 30.0 |
Ở đây, OrderID và ProductID kết hợp với nhau sẽ tạo thành khóa chính kết hợp.
OrderDetails trong chế độ Design View.OrderID và ProductID (giữ phím Ctrl khi chọn).Kết quả: Sự kết hợp của OrderID và ProductID sẽ là khóa chính kết hợp, đảm bảo rằng mỗi sản phẩm trong mỗi đơn hàng sẽ có một bản ghi duy nhất trong bảng OrderDetails.
Giả sử bạn có một bảng StudentCourses để lưu trữ thông tin về các khóa học mà sinh viên tham gia. Một sinh viên có thể tham gia nhiều khóa học, và một khóa học có thể có nhiều sinh viên tham gia. Trong trường hợp này, StudentID và CourseID cần kết hợp với nhau để tạo thành khóa chính, vì sự kết hợp này sẽ xác định duy nhất một bản ghi.
Cấu trúc bảng StudentCourses:
| StudentID | CourseID | EnrollmentDate |
|---|---|---|
| S001 | C001 | 2024-09-01 |
| S001 | C002 | 2024-09-02 |
| S002 | C001 | 2024-09-05 |
| S003 | C003 | 2024-09-06 |
Ở đây, StudentID và CourseID kết hợp với nhau sẽ tạo thành khóa chính kết hợp.
Cách tạo khóa chính kết hợp:
StudentCourses trong chế độ Design View.StudentID và CourseID (nhấn giữ phím Ctrl khi chọn).Kết quả: Sự kết hợp của StudentID và CourseID sẽ là khóa chính kết hợp, giúp xác định duy nhất mỗi sinh viên trong mỗi khóa học.
- Nếu bạn thuần thục (rất giỏi về CSDL) thì chọn cách tạo nhiều khóa chính trong table của Access
- Nếu ở tầm trung bạn sẽ thêm 1 cột ID (kiểu Autonumber) để làm khóa chính (chọn 1 khóa chính duy nhất) thau vì chọn khóa chính kết hợp.
- Nếu khóa chính kết hợp như vậy làm bài toán khóa hơn ở phần Query. Form ...
Trong các phần mềm ứng dụng dữ liệu lớn, thì ứng dụng nhiều khóa chính kết hợp trong table của MS Access thường xuyên sử dụng.