Trong giáo dục của tôi, tôi đã nói rằng việc để lộ các khóa chính thực tế (không chỉ các khóa DB, mà tất cả các trình truy cập chính) cho người dùng là một ý tưởng thiếu sót.
Tôi luôn nghĩ đó là một vấn đề bảo mật (vì kẻ tấn công có thể cố đọc những thứ không phải của họ).
Bây giờ tôi phải kiểm tra xem người dùng có được phép truy cập không, vậy có lý do nào khác đằng sau nó không?
Ngoài ra, vì người dùng của tôi phải truy cập dữ liệu dù sao tôi cũng cần có khóa công khai cho thế giới bên ngoài ở đâu đó ở giữa. Bây giờ khóa công khai có cùng vấn đề với khóa chính, phải không?
Đã có yêu cầu của một ví dụ về lý do tại sao làm điều đó, vì vậy đây là một. Hãy nhớ rằng câu hỏi có nghĩa là về chính nguyên tắc không chỉ nếu nó được áp dụng trong ví dụ này. Câu trả lời giải quyết các tình huống khác được chào đón rõ ràng.
Ứng dụng (Web, Di động) xử lý hoạt động, có nhiều UI và ít nhất một API tự động để liên lạc với hệ thống giao tiếp (eG bộ phận kế toán muốn biết khách hàng phải trả bao nhiêu tiền dựa trên những gì đã làm). Ứng dụng có nhiều khách hàng nên việc tách dữ liệu của họ (về mặt logic, dữ liệu được lưu trữ trong cùng một DB) là điều bắt buộc của hệ thống. Mỗi yêu cầu sẽ được kiểm tra tính hợp lệ bất kể điều gì.
Hoạt động có dạng hạt rất mịn nên nó nằm cùng nhau trong một số đối tượng chứa, hãy gọi nó là "Nhiệm vụ".
Ba usecase:
- Người dùng A muốn gửi Người dùng B đến một số Tác vụ để anh ta gửi cho anh ta một liên kết (HTTP) để thực hiện một số Hoạt động ở đó.
- Người dùng B phải ra ngoài tòa nhà để anh ta mở Nhiệm vụ trên thiết bị di động của mình.
- Kế toán muốn tính phí khách hàng cho Nhiệm vụ, nhưng sử dụng hệ thống kế toán của bên thứ ba tự động tải Nhiệm vụ / Hoạt động theo một số mã đề cập đến REST - API của Ứng dụng
Mỗi usecase yêu cầu (hoặc trở nên dễ dàng hơn nếu) tác nhân phải có một số định danh địa chỉ cho Nhiệm vụ và Hoạt động.
ON UPDATE CASCADE
được tạo ra cho điều đó (cụ thể là mysql?), mặc dù nếu vấn đề là bảo mật thì việc kiểm tra truy cập phải ở phần phụ trợ và dù sao cũng không tin tưởng người dùng