Tôi vẫn không chắc tại sao http://en.wikipedia.org/wiki/Compound_key không được hỏi ý kiến. Nó nói rất rõ (và đúng):
Trong thiết kế cơ sở dữ liệu, khóa ghép là một khóa bao gồm 2 hoặc nhiều thuộc tính xác định duy nhất một sự xuất hiện của thực thể. Mỗi thuộc tính tạo nên khóa ghép là một khóa đơn giản theo đúng nghĩa của nó.
Điều này thường bị nhầm lẫn với một khóa tổng hợp, mặc dù đây cũng là một khóa bao gồm 2 hoặc nhiều thuộc tính xác định duy nhất một sự xuất hiện của thực thể, ít nhất một thuộc tính tạo nên khóa tổng hợp không phải là một khóa đơn giản theo đúng nghĩa của nó.
Khóa tổng hợp được tạo thành từ các yếu tố có thể có hoặc không phải là khóa ngoại. Ví dụ: Trong một bảng chi tiết Giao dịch, khóa là (TransactionId, ItemNumber). Một chi tiết giao dịch là một phần phụ của một giao dịch. TransactionId là khóa ngoại, tham chiếu bảng Giao dịch. ItemNumber không phải là một chìa khóa trong chính nó. Nó chỉ xác định duy nhất một mục trong bối cảnh của một giao dịch.
Khóa ghép là một khóa trong đó bất kỳ phần nào của khóa là khóa ngoại. Ví dụ: trong hệ thống đặt phòng khách sạn, đặt phòng có khóa ghép, (GuestId, HotelId, DestinationDate). GuestId xác định một Khách và tham chiếu bảng Khách. HotelId xác định một Khách sạn và tham chiếu bảng Khách sạn. DestinationDate xác định một Ngày. Có thể có hoặc không có bảng Ngày mà nó tham chiếu, nhưng nó xác định một Thực thể (một Ngày) theo bất kỳ cách nào.
Cũng cần lưu ý là thông tin này: Một khóa đơn giản là một khóa được tạo thành từ một cột, trong khi đó một khóa tổng hợp được tạo thành từ hai hoặc nhiều cột.