Я думаю, що це суб’єктивно і залежить від вашого дизайну.
Переважно, хоча це, здається, є дизайном, який походить з активного запису . В активному записі ваша організація має методи виконання операцій з базою даних, а тому повинна знати, що це ідентифікатор бази даних.
При використанні інших шаблонів, таких як сховище з картографією даних, що зберігає ці дані в об'єкті, стає непотрібним і, можливо, недоречним.
Візьмемо для прикладу Person
предмет. Мені дають ім’я, яке може бути або не бути унікальним у сім'ї. Оскільки кількість населення зростає, імена більше не є унікальними, і тому ми придумали сурогатні ідентифікатори для все більш масштабної системи. Приклади цього включають: моє водійське посвідчення та номер соціального страхування. Мені не народжується присвоєний ідентифікатор, всі ці ідентифікатори повинні бути подані на заявку.
Більшість із них не мають гарних первинних ключів / ідентифікаторів для програмного забезпечення, оскільки вони не є універсальними. Принаймні, не за межами їх конкретної системи, очевидно, що SSN є унікальним та послідовним для Адміністрації соціального захисту. Оскільки ми, як правило, не є постачальниками цієї інформації, ви б не називали їх, id
а скоріше даними, які вони представляють, наприклад SSN
. Іноді навіть містяться повністю складені об'єкти, такі як, DriversLicense
який може містити всю інформацію, яку має водійське посвідчення.
Таким чином, всі загальні ідентифікатори є сурогатними ключами в системі, і їх можна замінити на посилання на пам'ять, лише містять ідентифікатори для полегшення пошуку та збереження записів.
Оскільки а id
не є частиною концептуальних даних, я сумніваюся, що він (як правило) належить до об'єкта, оскільки він не походить з домену. Швидше за все, слід дотримуватися своєї мети - виявити об'єкт, який не має іншого способу представити унікальну ідентичність. Це можна зробити легко у сховищі / колекції.
У програмному забезпеченні, якщо вам потрібно представити об'єкт як список або зберегти його, ви можете просто зробити це з об'єкту сховища / колекції або іншого об'єкта, пов'язаного з цим. Переходячи до Data Mapper (якщо він окремий), ви можете просто пройти .update( id, obj )
.
Відмова від відповідальності : Я ще не намагався створити систему, яка не містить ідентифікатора в межах сутності, і, таким чином, я можу виявити себе неправильним.