Co powinno być kluczem - PESEL, czy ID

Odpowiedz Nowy wątek
2018-05-16 07:14
Zakręcony Karp
0

Na studiach wykładowca mówił, że gdy możemy stosowac naturalne klucze główne, to powinniśmy to robić. Z drugiej strony, z tego co wiem, to w Entity Framework muszę mieć sztuczny klucz oby ID, by móc utworzyć związek między relacjami. Jak to w końcu jest?

Nie używać EF. - kate87 2018-05-17 17:18

Pozostało 580 znaków

2018-05-16 07:23
KiK
0

Klucz główny = unikalna wartość

To od Ciebie jako od programisty zależy jakie rozwiązanie wybierzesz. Ja już widziałem naprawdę duże bazy danych gdzie pesel był osobną kolumną oprócz kolumny ID która była kluczem głównym. Twój wybór.

To też zależy jak dużą bazę danych masz, bo np. możesz podejść do tego problemu w ten sposób. Numer PESEL to 11 cyfrowa liczba. Zanim w numerach ID dojdziesz to 11 cyfrowej liczby trochę wody w Wiśle przepłynie :) więc może lepiej wybrać ID. Wybierz po prostu rozwiązanie które dla Ciebie będzie wygodniejsze.


PESEL to 11-cyfrowy ciąg znaków, nie liczba. Liczba nie może zaczynać się od 0. - Marcin.Miga 2018-05-16 11:36

Pozostało 580 znaków

2018-05-16 07:48
2

PESEL się nie nadaje, głównie z tego względu że nie musi być unikatowy. Tzn. w teorii jest, w praktyce zdarzyło się mi osobiście chyba raz że PESEL był zduplikowany dla dwóch osób (urodzone w 1968 roku) - wiadomo, że biurokracja działa różnie.

Pozostało 580 znaków

2018-05-16 08:38
7

Biorąc pod uwagę że niedługo będziemy żyć w czasach RODO, to ja bym kompletnie nie brał już pod uwagę naturalnych kluczy które jednoznacznie identyfikują daną osobę jako możliwa opcje.

edytowany 1x, ostatnio: neves, 2018-05-16 08:39
To w sumie bardzo ciekawe z punktu widzenia Identiy Management - shagrin 2018-05-16 09:59
To prawda w dodatku w każdej firmie obecnie trwa nagonka na maskowanie wszelkich danych jednoznacznie identyfikujących osobę. Ale i tak zawsze id i wartość. - kate87 2018-05-17 17:20

Pozostało 580 znaków

2018-05-16 09:24
1

PESEL to kiepski klucz główny, go jak masz osoby z zagranicy to one nie maja numeru PESEL, wiec musiałbyś tam wpisać jakieś sztuczne id, które nie byłyby zduplikowane. Imo dla encji typu nabywca/dostawca sztuczne klucze sa Ok.

Pokaż pozostałe 6 komentarzy
w Polsce - to zakłada, że program będzie używany tylko w Polsce. Kiepska metoda tworzenia oprogramowanie. Trochę na zasadzie tych amerykańskich stron, które zakładają, że np. kod pocztowy musi mieć ileś cyfr, tyle ile w USA. - LukeJL 2018-05-16 17:26
ale nawet w Polsce... załóżmy, że za 10 lat Unia Europejska (o ile się nie rozpadnie) to np. postanowi przypisać każdemu obywatelowi UE unikalny identyfikator. Wtedy Polska będzie musiała zlikwidować Pesele w ogóle. - LukeJL 2018-05-16 17:29
(bo taki hipotetyczny identyfikator mógłby zastąpić pesele). - LukeJL 2018-05-16 17:29
Nawet jeśli takie coś nastąpi, to proces wycofywania PESELa zajmie raczej 10-20 lat niż rok. - somekind 2018-05-16 18:51
No i założenie, że program jest kierowany na jakiś rynek, to jak najbardziej słuszne założenie. Zwłaszcza jeśli wymaga PESELi - bo skoro tak, to jest w jakimś stopniu związany z polskim prawem. - somekind 2018-05-16 18:55

Pozostało 580 znaków

2018-05-16 11:28
6
Zakręcony Karp napisał(a):

Na studiach wykładowca mówił, że gdy możemy stosowac naturalne klucze główne, to powinniśmy to robić. Z drugiej strony, z tego co wiem, to w Entity Framework muszę mieć sztuczny klucz oby ID, by móc utworzyć związek między relacjami. Jak to w końcu jest?

Twój wykładowca nie ma racji. Nigdy nie powinno się stosować naturalnych kluczy, a już na pewno nie PESELu.

Ponoć wspomniany przez @wartek01 problem nieunikalności został już naprawiony - ale pewności mieć nie można. Ale wciąż jest drugi, moim zdaniem nawet większy problem - PESEL się zmienia w przypadku zmiany daty urodzenia lub płci (z tą datą urodzenia chodzi oczywiście o korektę w papierach, nie podróż w czasie ;)). Dlatego w niektórych systemach dla firm ubezpieczeniowych czy banków, pesele ludzi są w ogóle trzymane w oddzielnych tabelach, aby móc przechowywać historię peseli klienta. (Jasne, to bardzo rzadki przypadek, ale trzeba być gotowym i na taką możliwość.)


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2018-05-16 13:49
2

Dodatkowo, użycie PESELu ogranicza możliwość skorzystania z programu do ludzi posiadających PESEL. Nawet jeśli w trakcie projektowania systemu takie będzie założenie, to jednak życie pokazuje, że założenia projektu potrafią się zmieniać w trakcie albo w przyszłości. Wyobraź sobie, że po zakończonym projekcie, gdy system działa, żyje i ma setki/tysiące użytkowników, klient przychodzi do ciebie i prosi o umożliwienie rejestracji również nie-Polakom... Na ile to wycenisz, jeśli zrobiłeś z PESELu PK?

No i patrząc pod kątem RODO - użytkownik ma prawo do bycia zapomnianym. W każdej chwili ma prawo zażądać od ciebie usunięcia z wszelkich baz swoich danych osobowych. Co zrobisz w tej sytuacji, jeśli użyłeś PESELu jako PK?

Rebuild indeksów przy każdej takiej prośbie i życie administratora bazy nabiera rumieńców :D - MatD 2018-05-16 13:59
A co za róznica, czy użyje pesel czy id? Po prostu się usunie usera z bazy i po kłopocie. - bethccc 2018-05-16 16:16
Jak id bedzie PK to na życzenie klienta można po prostu wyczyścić dane dla danego rekordu a id zostanie. Nie bedzie trzeba przebudowywać indeksów, natomiast przy użyciu PESELA juz musisz usunąć cały rekord i robić rebuilda, a zgłoszenia o usunięcie danych mogą byc dość częste. - MatD 2018-05-16 16:19
A dlaczego trzeba dać rebuild? - bethccc 2018-05-16 16:21
Rebuild, w sensie fragmentację indeksów :) jeżeli silnik bazy sam modyfikuje indeksy przy insertach i deletach to po jakims czasie przy dużej ilosci takich operacji trzeba indeksy pofragmentowac, bo moze mieć to wpływ na wydajność zapytań. - MatD 2018-05-16 16:28
@bethccc Oprócz tego co napisał @MatD - ponieważ usunięcie danych użytkownika to nie to samo, co usunięcie użytkownika. Na przykładzie forum - rozumiem, że razem z peselem usunąłbyś wszystkie tematy, posty i komentarze użytkownika? I o ile na forum to jeszcze pal licho, po prostu zostanie sieczka z tematów, ale wyobraź sobie np. program firmy ubezpieczeniowej (typu Allianz), która wypłaca przychodniom pieniądze na podstawie ilości wizyt. Ty byś po prostu usunął info o tych wizytach i po sprawie? - aurel 2018-05-16 16:59

Pozostało 580 znaków

2018-05-16 17:26
0

ponadto, jeśli w pewnym momencie program będzie używany w innym kraju, to w ogóle nie będą mieć tam peseli.


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);

Pozostało 580 znaków

2018-05-17 17:25
1

Jeny tabela powinna się składać z ID + wartość. Ja nie wiem kto się dorwał u Was do nauczania baz, ale kogoś kto zaproponował numer PESEL jako PK powinni od razu ucieszyć karą za nieprzestrzeganie RODO.

Pokaż pozostałe 6 komentarzy
To jest kwestia wytycznych wewnętrznych i zaleceń. Z tego co wiem udostępnia się tylko tyle informacji ile jest niezbędne do pracy, marketing tworzący jakieś akcje i reklamy nie posiada nawet zgody samego klienta na przetwarzanie takich danych stąd obecnie temat maskowania danych. - kate87 2018-05-17 22:47
ale czy wykładowca mówiący o naturalnych kluczach podawał jako przykład akurat PESEL? może podał jako przykład symbol waluty - Miang 2018-05-18 00:46
Wlasnie chciałem o tym napisać :) naturalne klucze != PESEL. Jeżeli podał pesel jako przykład takiego klucza to trzeba było z nim dyskutować - MatD 2018-05-18 06:14
Wykładowca podał model idealny. Biorąc jednak pod uwagę to co wcześniej napisano na ten temat zwyczajnie nie opłaca się stosować PESELU jako klucza głównego. Na polibudzie uczyli mnie o normalizacji SQL, joinach itp. A jak jest w praktyce? Tak, że dane w niektórych tabelach w firmie mamy celowo w postaci zdenormalizowanej (zduplikowane), a to ze względów wydajnościowych joiny zwyczajnie obniżają wydajność systemu. Model idealny != praktyka. - siloam 2018-05-18 07:56
Jest napisane ze nie podal żadnego przykładu albo kolega nie chce sie podzielić z nami co bylo przykładem. Przykład PESELu to przykład który burzy to założenie. Stad wyniknela dyskusja, zwłaszcza w kontekście dzisiejszych zapisów o RODO PESEL nie powinien byc id. Podobnie tez inne informacje takie jak np imię i nazwisko polaczone razem bo tez tak ludzie kombinuja. Poza tym id numeryczne sekwencyjne ma jedna podstawowa zaletę możemy łatwiej anonimizowac dane bo do tabelek przekazujemy tylko numer bo pozostałych danych. - kate87 2018-05-18 08:10

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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