Công cụ chỉ cho bạn biết rằng có thể có một số mục nhập cho tổ hợp uId-groupId. Ví dụ:
uId groupId performacesScore 1 1 10 1 2 20 2 1 30 2 1 30 2 1 40 2 2 20
Bây giờ, hãy tưởng tượng dữ liệu này được hiển thị cho bạn và bạn biến 2/1/30 đầu tiên thành 2/1/50. Công cụ có thể gửi câu lệnh cập nhật nào tới dbms?
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1;
Điều này sẽ cập nhật ba bản ghi thay vì một bản ghi.
update salesGroupLinked set performacesScore = 50
where uId = 2 and groupId = 1 and performacesScore = 30;
Thao tác này sẽ vẫn cập nhật hai bản ghi thay vì một bản ghi.
Vì vậy, để cập nhật và xóa đúng cách, bạn phải cho dbms biết điều gì làm cho các bản ghi là duy nhất. Có bốn khả năng:
- Nếu bạn không bao giờ muốn cập nhật hoặc xóa các bản ghi đơn lẻ, hãy để nguyên bản ghi đó.
- Nếu bạn muốn có thể cập nhật và chỉ có thể có một mục nhập cho tổ hợp uId-groupId, thì hãy thông báo cho dbms như vậy và đặt uId plus groupId làm khóa chính của bảng của bạn.
- Nếu bạn muốn cập nhật và có thể có các bản sao cho kết hợp uId-groupId, nhưng kết hợp uId-groupId-performanceacesScore sẽ luôn là duy nhất, thì hãy đặt ba thứ này làm khóa chính của bảng.
- Nếu bạn muốn cập nhật và có thể có các bản sao cho bất kỳ kết hợp nào, hãy cung cấp cho bảng một cột khác cho id kỹ thuật và đặt đây là khóa chính.