it-swarm.dev

Najlepsze praktyki w dziedzinie zwykłych osób (imię i nazwisko, adres e-mail, adres, płeć itp.)

Jakie są najczęstsze najlepsze praktyki dotyczące długości i typu danych we wspólnych polach, takich jak:

  • Imię
  • Nazwisko
  • Adres
  • E-mail
  • Seks
  • Stan
  • Miasto
  • Kraj
  • Numer telefonu

itp....

44
Snow_Mac

Byłbym bardzo podejrzliwy wobec jakiegokolwiek zestawu uniwersalnych najlepszych praktyk, ponieważ w większości tych dziedzin diabeł tkwi w szczegółach. To, że informacje są stosunkowo powszechne, nie oznacza, że ​​aplikacja korzysta z danych dokładnie w taki sam sposób, jak inne aplikacje. Oznacza to, że Twój model danych może być nieco inny.

  • Imię i nazwisko: Dlaczego przechwytujesz imię? Jeśli masz obowiązek przechwycenia pełnego imienia i nazwiska osoby (tj. Przygotowujesz dokumenty prawne lub akty urodzenia), prawdopodobnie chcesz dać ludziom więcej miejsca na pisanie niż gdybyś tylko prosił o imię i nazwisko osoby, więc wezwać ich w nowej aplikacji internetowej.
  • Adres: co zamierzasz zrobić z adresem? Jakie adresy przechowujesz? Jeśli przechowujesz adres nieruchomości w Stanach Zjednoczonych, na której tworzysz hipotekę, prawdopodobnie bardzo zależy ci na uzyskaniu w pełni znormalizowanego adresu, w którym to przypadku model danych prawdopodobnie będzie chciał bardzo blisko pod dowolnym adresem narzędzie normalizacyjne zwraca. Jeśli chcesz tylko, aby ludzie mogli wpisać adres w celu dostarczenia produktu, prawdopodobnie wystarczy kilka wierszy tekstu swobodnego. Długość linii może zależeć od wymagań dalszych procesów, które wykonują takie czynności jak drukowanie etykiet adresowych.
  • Stan: Zakładając, że możesz zidentyfikować prawidłowe wartości stanu, prawdopodobnie sensowne jest utworzenie tabeli STATE i utworzenie relacji klucza obcego między tabelami STATE i ADDRESS. Ale możliwość zidentyfikowania prawidłowych wartości oznacza, że ​​ograniczasz zestaw prawidłowych adresów przynajmniej do określonego zestawu krajów. To jest w porządku dla wielu stron, ale musisz trochę popracować, aby wesprzeć nowy kraj.
  • Miasto: jeśli masz do czynienia z danymi, w których istnieją potencjalnie regulacje na poziomie miasta (tj. W których istnieją różne rodzaje stawek podatkowych, które są stosowane w zależności od miasta), możesz chcieć traktować je podobnie jak państwo i mieć CITY tabela z prawidłowymi miastami i relacja klucza obcego między tabelami CITY i ADDRESS. Z drugiej strony, jeśli próbujesz tylko dostarczyć produkt i nie przejmujesz się tym, że masz w tabeli różne wersje tego samego miasta, wystarczy, że użytkownik wprowadzi dowolny tekst. Oczywiście, jeśli przechowujesz klucze obce, będziesz mieć sporo pracy, aby upewnić się, że masz wszystkie prawidłowe wartości. Ale są produkty, w których chodzi o to, że firma już wykonała tę pracę (tj. Bazy danych podatków od sprzedaży).
  • Telefon: co robisz z numerami telefonów i dlaczego? Niektóre aplikacje będą chciały pobierać numery telefonów w dowolnym formacie, w którym użytkownik zdecyduje się je wprowadzić i zachować to formatowanie dla wszystkich kolejnych zapytań. Byłoby to powszechne, jeśli projektujesz osobistą książkę adresową, w której użytkownicy mają własne preferencje dotyczące sposobu przechowywania i wyświetlania numerów telefonów. Inne aplikacje chciałyby zignorować wprowadzone formatowanie, wyodrębnić tylko znaki numeryczne, a następnie sformatować dane przy pobieraniu, aby wszystkie numery telefonów miały podobne formatowanie. Jeśli prowadzisz działalność dla firm, możesz chcieć wprowadzić oddzielne pole dla użytkowników, aby wprowadzić rozszerzenie. Jeśli próbujesz wesprzeć proces połączeń wychodzących, możesz chcieć przechowywać numer kierunkowy i kod kraju w osobnych kolumnach, ponieważ chcesz mieć pewność, że masz okna specyficzne dla strefy czasowej do nawiązywania połączeń z osobami o różnych numerach kierunkowych (tworzenie połączenie z kimś ze wschodniej strefy czasowej o 10 rano będzie znacznie lepsze niż wykonanie tego samego połączenia z kimś w strefie czasowej Pacyfiku, gdzie jest 7 rano).
  • Płeć: w przypadku wielu aplikacji jest całkowicie rozsądne przechowywanie kodu płci („M” lub „F”) w tabeli. Z drugiej strony zdarzają się sytuacje, w których możesz chcieć dodatkowych opcji (Inne, Interseksualne, Transseksualne) lub gdy musisz przechowywać coś takiego jak płeć przy urodzeniu i aktualna płeć.
50
Justin Cave

Możesz również zgadywać na podstawie przykładowych danych i oczekiwanych odbiorców. To zależy od twojej lokalizacji.

Niektóre uwagi:

Adresy:

Nazwy:

Numer telefonu: kod międzynarodowy, długość, numer telefonu komórkowego a numer domu, zezwól na numer telefonu komórkowego

24
gbn

Oprócz świetnych odpowiedzi powyżej nie zapomnij zaakceptować znaków Unicode. To, że jesteś w USA, nie oznacza, że ​​nie chcesz akceptować obcych znaków w swoich kolumnach.

To powiedziawszy, zwykle polecam 50 znaków dla nazwisk. 320 powinno wystarczyć dla adresu e-mail (możesz sprawdzić standard ANSI, aby się upewnić). Błąd adresu po stronie ostrożnie składającej się z 255 znaków. Chociaż prawdopodobnie nigdy nie będziesz potrzebować tak dużego adresu, możesz to zrobić, jeśli podasz linie C/O i takie tam. Miasto powinno być dość duże, istnieje kilka całkiem długich nazw miast. Do państwa należy przejść ze stolikiem dziecięcym, podobnie jak w przypadku kraju. W przypadku kodu pocztowego nie zapomnij o międzynarodowych kodach pocztowych, które są dłuższe niż amerykańskie kody pocztowe. Tylko dlatego, że nie wspierasz międzynarodowych, nadal możesz być. Jest wielu obywateli USA, którzy mieszkają w różnych krajach, w tym wojskowych.

Nie zapominaj, że stan powinien być opcjonalny, ponieważ wiele krajów nie ma takich stanów.

10
mrdenny

Mój tyłek robi się obolały od siedzenia na płocie, więc zamierzam po prostu rzucić kilka odpowiedzi i mam nadzieję, że nie zostanę odrzucony w zapomnienie. Proszę o konstruktywną krytykę.

Adres e-mail:

min: 6 ([email protected]). Lub 3, jeśli chcesz śledzić adresy e-mail w domenie lokalnej
maks .: 320 254 (RFC)

Ilość kodu do sprawdzenia poprawności wiadomości e-mail jest w rzeczywistości szalona, ​​więc załóżmy, że jest poprawna, jeśli ma znak „@”

Możesz wyodrębnić adres e-mail jako „metodę komunikacji”, aby łatwo wymienić wszystkie metody komunikacji z użytkownikiem.

Płeć

Płeć może się zmieniać w czasie, więc możesz to śledzić, jeśli jest to dla Ciebie ważne. Postępuj http://en.wikipedia.org/wiki/ISO/IEC_5218

NOT_KNOWN(0),
MALE(1),
FEMALE(2),
NOT_APPLICABLE(9);

Adresy: NORAM

Wybieram tanie wyjście i trzymam się adresów w Ameryce Północnej.

Jest dogodny do abstrakcyjnych krajów, oddziałów, miast i powiatów głównie ze względu na podatki. Podatki mogą obowiązywać na wielu poziomach, więc jeśli możesz wskazać stawkę podatku na abstrakcyjny obszar geograficzny, jesteś złoty.

GeographicArea :

id: int  
type: {country, division, county, city, indian reservation}  
name: varchar(45)  [1]
abbreviation: nullable varchar(4)  
parent_id: nullable int  

Adres :

id: int  
postal_area_id: int, references GeographicArea  
county_or_city_id: int, references GeographicArea  
street_address: varchar(255)  
suite: nullable varchar(255)  

Dodaj linię 2 i linię 3, jeśli potrzebujesz.

Zobacz http://en.wikipedia.org/wiki/Address_ (geografia)

Teraz adres jest adresem. Wiele osób może mieszkać pod jednym adresem, a dana osoba może mieć wiele adresów jednocześnie i z czasem, więc potrzebujesz do tego wielu tabel.

Adres strony

party_id: int references Party  
address_id: int references Address  
purpose: {home, work, ...}  

Dodać from_date i nullable to_date jeśli śledzenie w czasie.

Numery telefoniczne

Strona może mieć wiele numerów telefonów, a numer telefonu może być używany przez wiele osób. Numer telefonu może być używany do faksów, połączeń telefonicznych, modemów itp. I może mieć rozszerzenia. Wszystko to może się z czasem zmienić.

PhoneNumber

id: int  
value: varchar(15) - the max allowed by the ITU  

Min może wynosić 3 (dla „911”), a może 7 („310-4NET”, który jest specjalnym rodzajem numeru lokalnego, który nie pozwala na wybranie numeru kierunkowego)

W razie potrzeby możesz podzielić ten kod na kod kraju itp.

Powinieneś użyć http://en.wikipedia.org/wiki/E.164 standard

PartyPhoneNumber

party_id: int references Party  
phone_number_id references PhoneNumber  
extension: nullable varchar(11) - ITU max  
purpose: {home, work, fax, modem, ...}  

Nazwy

Nazwy są trudne. Dlatego:

  1. Niektóre osoby mają legalną nazwę z jednym słowem http://en.wikipedia.org/wiki/List_of_legally_mononymous_people

  2. Niektóre osoby mają nazwiska zawierające wiele słów http://en.wikipedia.org/wiki/Wolfe%2B585,_Senior

  3. Niektóre osoby mają wiele nazwisk jednocześnie (na przykład na moim uniwersytecie jest wielu studentów azjatyckich, ale lubią używać „preferowanych” bardziej zachodnich nazw)

  4. Czasami musisz śledzić nazwiska ludzi w czasie, takie jak nazwiska panieńskie i nazwiska małżeńskie.

  5. Chcesz wyodrębnić osoby i organizacje z wielu ważnych powodów

    utworzyć przyjęcie przy stole (identyfikator klucza głównego bigserial);

    stwórz tabelę nazwa_partycji (identyfikator klucza głównego, identyfikator strony, identyfikator_zadania nie jest zerowym odwołaniem strona (identyfikator), wpisz smallint, nie jest zerowym odniesieniem typ_partycji (identyfikator) - pomoc, ex „dziewica”, „legalny”);

    utwórz tabelę nazwa_składnika (identyfikator duży klucz podstawowy, nazwa_partycji_id nie jest odwołaniem zerowym nazwa_partycji (id), wpisz smallint nie zerowe odwołanie typ_komponentu (id), --elided ex "podany" tekst nazwa nie jest pusty);

9
Neil McGuigan

Z nieco innej perspektywy niż poprzednie odpowiedzi, a ponieważ wydaje się, że można mówić o LDAP , RFC 4519 - „Lightweight Directory Access Protocol (LDAP): Schemat aplikacji użytkownika” może być interesujące.

Może to być przydatne, jeśli twoja aplikacja musi być zmapowana do takiego katalogu. W przeciwnym razie prawdopodobnie nie będzie dostosowany do twoich wymagań.

Te definicje dotyczą nie tylko danych, ale także niektórych operatorów, których można używać na polach. postalAddress , na przykład jest caseIgnoreListSubstringsMatch . Nie sugeruję, abyś ściśle przestrzegał tego schematu, ale przyjrzenie się zasadom może być interesujące, w szczególności sposób porównania nazwy i adresów w aplikacji może być istotny dla projektu bazy danych.

3
Bruno

Jeśli chodzi o imiona, rozważ użycie podwójnych cudzysłowów, aby nie musieć uciekać od apostrofów w nazwach irlandzkich lub włoskich (np. O'Hara lub D'Amato).

Polecam również uzyskanie dobrego zestawu wyrażeń regularnych do użycia, abyś mógł wypisywać części swoich pól nazw (np. Pierwsza inicjał, pseudonim, Jr/Sr itp.).

3
KiloVoltaire