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. rimary Key)
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.