Wpis z mikrobloga

#biedanonim
Jeśli posiadam jakiś obiekt, który ma zdefiniowany jakiś identyfikator - nie wiem, na przykład samochód którego identyfikatorem domenowi jest jego VIN to czy infrastrukturalnie muszę nadać mu jako identyfikator jakiegoś Guida, a w storage trzymać numer VIN w jakimś polu, czy może mogę po prostu użyć jego numeru VIN jako identyfikator infrastrukturalny?

Bo w robocie na code review się zesrali, że jak identyfikator infrastrukturalny to tylko jakiś Guid a VIN w osobnym polu jako props. Ale na moją małą głowę to jaki to ma sens? Przecież gdy pierwsza lepsza osoba wleci do projektu i będzie miała napisać w Repo metodę w stylu GetById(string id) to skąd ma wiedzieć że w storage ma szukać obiektu nie po id ale jednak po prosie vin.

#programowanie



· Akcje: Odpowiedz anonimowo · Więcej szczegółów
· Zaakceptował: digitallord
· Autor wpisu pozostał anonimowy dzięki Mirko Anonim
· Tag #biedanonim to wpisy z niską potrzebą anonimowości.

  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mirko_anonim tak jest bezpieczniej, kiedy serwer nadaje unikalne id a nie wejście od usera nim ma być. ja też tak robię. Masz dziwne nazewnictwo primary key Foreign key xd
  • Odpowiedz
@mirko_anonim: a co zrobisz jak zmienią wymagania i VIN nie będzie już mógł być unikalnym identyfikatorem bo np. dojdą nowe typy bez VIN?

Guid lub autokey gwarantują też poprawność insertu do bazy.
W przypadku jakichś kluczy opartych o własne patenty potencjalnie mogą pojawić się problemy.
Proszenie się o kłopoty w przyszłości. Nic więcej.
No i utrzymanie: każdy kto będzie musiał wspierać lub rozwijać system musi nabyć specyficzną wiedzę o dziwnym identyfikatorze
  • Odpowiedz
@mirko_anonim: Wszystko zależy od specyfiki identyfikatora i tego czy gwarantuje (lub czy powinien gwarantować) unikalność rekordów. Jeżeli masz pewność co do tego że pojawienie się 2 rekordów z dokładnie tym samym VIN-em byłoby czymś niepoprawnym biznesowo, to pewnie nie ma sensu iść w jakieś sztuczne identyfikatory. Jeżeli natomiast takiej pewności nie masz, to lepiej jest dorzucić tam dodatkową kolumnę która pozwoli Ci jednoznacznie odróżniać od siebie rekordy.
  • Odpowiedz
@mirko_anonim: zależy jakie dane tam jeszcze trzymasz, gdy np masz tam dane właściciela albo numer rejestracyjny to Vin nie nadaje się jako primary key bo ktoś może kupić ten samochód albo zmienić rejestrację i wtedy miałbyś dwa rekordy dla tego samego vinu z różnymi danymi
  • Odpowiedz