Czy warstwa dostępu do danych powinna zwracać model biznesowy?

0

Co powinna zwrócić warstwa dostępu do bazy danych? Spotkałem się z przykłądem ze zwracała model biznesowy, tylko w takim przypadku co z id pobranego rekordu. Czy takie id powinno być polem modelu tak aby później można było zrobić np jakiegoś update do bazy odpowiedniego rekordu?

0

W chwili obecnej nie ma przepisów prawnych regulujących warstwę dostępu do danych. Możesz zwracać co Ci się podoba.

0

No dobra wiesz ze nie o to pytam :)
W takim razie jakie sa dobre praktyki w takich przypadkach?

0

Zwracanie IDków bazodanowych wyżej to pakowanie się w kłopoty. Z jednej strony kod biznesowy zacznie polegać na tych IDkach zamiast koncentrować się na znalezieniu minimalnego zbioru unikalnych cech obiektu (czyli np loginu wewnętrznego dla konta użytkownika, pary typu [login zewnętrzny, dostawca uwierzytelniania] dla konta użytkownika, numeru faktury, pary typu [zewnętrzna nazwa konta, źródło kontraktu] dla przychodzącego kontraktu itd). Z drugiej strony bazodanowe IDki nie siedzą tylko w jednej kolumnie jako klucz główny. Czasem w danej tabeli w bazie danych jest wiele kluczy obcych opartych o wewnętrzne IDki bazodanowe i wtedy pchając takie IDki do kodu biznesowego trzeba je synchronizować (czyli np czasami obliczać ponownie przy zapisie do bazy).

IDki bazodanowe powinny być raczej szczegółem implementacyjnym przy integracji z konkretną bazą danych. Ich cel to głównie optymalizacja wydajnościowa - ID bazodanowe oparte o niedużą liczbę całkowitą jest łatwiejsze do zindeksowania czy zeskanowania niż np klucz główny złożony z trzech kolumn o złożonych wartościach (typu napisy, daty czy duże liczby).

1 użytkowników online, w tym zalogowanych: 0, gości: 1