Tôi nghĩ rằng điều này là chủ quan và phụ thuộc vào thiết kế của bạn.
Hầu hết mặc dù điều này dường như là một thiết kế đến từ một hồ sơ hoạt động . Trong một bản ghi hoạt động, thực thể của bạn có các phương thức để thực hiện các hoạt động cơ sở dữ liệu và do đó cũng phải biết định danh cơ sở dữ liệu của nó.
Khi sử dụng các mẫu khác như kho lưu trữ với trình ánh xạ dữ liệu lưu trữ dữ liệu này trong đối tượng trở nên không cần thiết và có lẽ không phù hợp.
Lấy ví dụ một Person
đối tượng. Tôi được đặt một cái tên có thể hoặc không phải là duy nhất trong một gia đình. Khi dân số ngày càng tăng, những cái tên lớn hơn không còn là duy nhất và vì vậy chúng tôi đã đưa ra các định danh thay thế cho hệ thống ngày càng lớn. Ví dụ về những điều này bao gồm: giấy phép lái xe của tôi và số an sinh xã hội. Tôi không được sinh ra được chỉ định một id, tất cả các id này phải được áp dụng cho.
Hầu hết trong số này không tạo ra các khóa / id chính tốt cho phần mềm, vì chúng không phổ biến. Ít nhất không nằm ngoài hệ thống cụ thể của họ, rõ ràng SSN là duy nhất và nhất quán đối với Cơ quan An sinh Xã hội. Vì chúng tôi thường không phải là nhà cung cấp thông tin này, bạn sẽ không gọi cho họ id
mà là dữ liệu họ đại diện, vd SSN
. Đôi khi, thậm chí chứa toàn bộ đối tượng được cấu thành, chẳng hạn như DriversLicense
có thể chứa tất cả thông tin mà bằng lái xe thực hiện.
Do đó, tất cả các id chung đều thay thế các khóa trong hệ thống và có thể được thay thế bằng các tham chiếu bộ nhớ, chỉ chứa id để giúp tìm kiếm và lưu giữ các bản ghi dễ dàng hơn.
Vì an id
không phải là một phần của dữ liệu khái niệm, tôi nghi ngờ rằng nó (nói chung) thuộc về đối tượng, vì nó không đến từ miền. Thay vào đó, nó nên được giữ lại cho mục đích của nó là xác định một đối tượng không có cách nào khác để thể hiện một danh tính duy nhất. Điều này có thể được thực hiện trong một kho lưu trữ / bộ sưu tập dễ dàng.
Trong phần mềm nếu bạn cần biểu diễn đối tượng dưới dạng danh sách hoặc duy trì nó, bạn có thể chỉ cần làm như vậy từ đối tượng kho lưu trữ / bộ sưu tập hoặc một số đối tượng khác được liên kết với điều đó. Khi chuyển sang Trình ánh xạ dữ liệu (nếu tách riêng), bạn có thể chỉ cần vượt qua .update( id, obj )
.
Tuyên bố miễn trừ trách nhiệm : Tôi chưa cố gắng xây dựng một hệ thống không chứa id trong thực thể và do đó có thể chứng minh rằng tôi đã sai.