Jakie są najczęstsze najlepsze praktyki dotyczące długości i typu danych we wspólnych polach, takich jak:
- Imię
- Nazwisko
- Adres
- Seks
- Stan
- Miasto
- Kraj
- Numer telefonu
itp....
Jakie są najczęstsze najlepsze praktyki dotyczące długości i typu danych we wspólnych polach, takich jak:
itp....
Odpowiedzi:
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ą dość 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.
STATE
tabeli i utworzenie relacji klucza obcego między tabelami STATE
a 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.CITY
tabela z prawidłowymi miastami i relacja klucza obcego między tabelami CITY
a ADDRESS
. Z drugiej strony, jeśli próbujesz tylko dostarczyć produkt i nie obchodzi Cię, czy 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ę (np. Bazy danych podatków od sprzedaży).Równie dobrze możesz zgadywać na podstawie przykładowych danych i oczekiwanych odbiorców. To zależy od twojej lokalizacji.
Niektóre uwagi:
Adresy:
Nazwy:
Numer telefonu: międzynarodowy kod, długość, komórka a dom, zezwól na telefon jako jedyny numer
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 ostrzeżenia z 255 znakami. 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 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ć. Istnieje 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.
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ę.
min: 6 (a@g.cn). Lub 3, jeśli chcesz śledzić adresy e-mail domeny 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ć może się zmieniać z czasem, więc możesz to śledzić, jeśli jest to dla Ciebie ważne. Śledź http://en.wikipedia.org/wiki/ISO/IEC_5218
NOT_KNOWN(0),
MALE(1),
FEMALE(2),
NOT_APPLICABLE(9);
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 na przestrzeni czasu, więc potrzebujesz do tego wielu tabel.
Adres imprezy
party_id: int references Party
address_id: int references Address
purpose: {home, work, ...}
Dodaj from_date
i zeruj, to_date
jeśli śledzenie w czasie.
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 faksowania, połączeń telefonicznych, modemów itp. I może mieć rozszerzenia. Wszystko to może się z czasem zmienić.
Numer telefonu
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ć standardu http://en.wikipedia.org/wiki/E.164
PartyPhoneNumber
party_id: int references Party
phone_number_id references PhoneNumber
extension: nullable varchar(11) - ITU max
purpose: {home, work, fax, modem, ...}
Nazwy są trudne. Dlatego:
Niektóre osoby mają legalną nazwę z tylko jednym słowem http://en.wikipedia.org/wiki/List_of_legally_mononymous_people
Niektóre osoby mają nazwy z wieloma słowami http://en.wikipedia.org/wiki/Wolfe%2B585,_Senior
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)
Czasami trzeba śledzić nazwiska osób, takie jak nazwiska panieńskie i nazwiska małżeńskie.
Chcesz wyodrębnić osoby i organizacje z wielu ważnych powodów
utworzyć przyjęcie przy stole (identyfikator klucza głównego o dużym numerze);
utwórz tabelę nazwa_partycji (identyfikator klucza głównego, id_partycji, identyfikator_partycji bigint nie jest zerową referencją partia (id), wpisz smallint nie zerowe referencje typ_partycji (id) - pomoc, ex „dziewica”, „legal”);
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);
Z nieco innej perspektywy niż poprzednie odpowiedzi, a ponieważ wydaje się w porządku mówić o LDAP , RFC 4519 - „Lightweight Directory Access Protocol (LDAP): Schemat dla aplikacji użytkownika” może być interesujący.
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.
Jeśli chodzi o imiona, rozważ użycie 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.).