Oczekuję, że kolumna będzie VARCHAR2 w mojej bazie danych Oracle.
Amerykańskie suwaki to 9.
Kanadyjczyk ma 7 lat.
Myślę, że 32 znaki to rozsądny górny limit
czego mi brakuje?
[EDYTUJ] TIL: 12 to rozsądna odpowiedź na pytanie Dziękujemy wszystkim, którzy wnieśli swój wkład.
database
oracle
globalization
postal-code
EvilTeach
źródło
źródło
Odpowiedzi:
Przeglądając stronę z kodami pocztowymi Wikipedii , 32 znaki powinny wystarczyć. Powiedziałbym, że nawet 16 znaków jest dobre.
źródło
Jak już poruszył @ neil-mcguigan, wikipedia ma przyzwoitą stronę na ten temat. Na tej podstawie 12 znaków powinno to zrobić: http://en.wikipedia.org/wiki/List_of_postal_codes
Artykuł wikipedii wymienia ~ 254 krajów, co jest całkiem dobre, jeśli chodzi o UPU (Universal Postal Union), który ma 192 kraje członkowskie.
źródło
Dlaczego miałbyś zadeklarować rozmiar pola większy niż rzeczywiste dane, które zamierzasz w nim przechowywać?
Jeśli początkowa wersja Twojej aplikacji ma obsługiwać adresy w Stanach Zjednoczonych i Kanadzie (co wynika z faktu, że w pytaniu podajesz te rozmiary), zadeklarowałbym to pole jako VARCHAR2 (9) (lub VARCHAR2 ( 10) jeśli zamierzasz przechowywać łącznik w polach ZIP + 4). Nawet patrząc na posty, które inni napisali dla kodów pocztowych w różnych krajach, VARCHAR2 (9) lub VARCHAR2 (10) wystarczyłoby dla większości, jeśli nie wszystkich innych krajów.
W dół linii możesz zawsze ZMIENIĆ kolumnę, aby zwiększyć długość, jeśli zajdzie taka potrzeba. Ale generalnie trudno jest powstrzymać kogoś, gdzieś przed podjęciem decyzji o „kreatywności” i umieszczeniu 50 znaków w polu VARCHAR2 (50) z tego czy innego powodu (tj. Dlatego, że chce innego wiersza na etykiecie wysyłkowej). Musisz także zająć się testowaniem przypadków granicznych (czy każda aplikacja wyświetlająca ZIP obsłuży 50 znaków?). A ponieważ klienci pobierają dane z bazy danych, zwykle przydzielają pamięć na podstawie maksymalnego rozmiaru pobieranych danych, a nie rzeczywistej długości danego wiersza. Prawdopodobnie nie jest to wielka sprawa w tym konkretnym przypadku, ale 40 bajtów na wiersz może być przyzwoitą ilością pamięci RAM w niektórych sytuacjach.
Nawiasem mówiąc, możesz również rozważyć oddzielne przechowywanie (przynajmniej w przypadku adresów w USA) kodu pocztowego i rozszerzenia +4. Generalnie przydatna jest możliwość generowania raportów według regionu geograficznego i często możesz chcieć umieścić wszystko w kodzie pocztowym razem, zamiast rozbijać go za pomocą rozszerzenia +4. W tym momencie nie trzeba próbować wypisywać pierwszych 5 znaków kodu pocztowego.
źródło
To, czego Ci brakuje, to powód, dla którego potrzebujesz specjalnego kodu pocztowego.
Jeśli naprawdę nie potrzebujesz PRACOWAĆ z kodem pocztowym, radzę się tym nie martwić. Przez pracę rozumiem specjalne przetwarzanie, a nie tylko drukowanie etykiet adresowych i tak dalej.
Po prostu utwórz trzy lub cztery pola adresowe VARCHAR2 (50) [na przykład] i pozwól użytkownikowi wprowadzić cokolwiek zechce.
Czy naprawdę potrzebujesz grupować zamówienia lub transakcje według kodu pocztowego? Myślę, że nie, ponieważ różne kraje mają bardzo różne schematy w tej dziedzinie.
źródło
Normalizacja? Kody pocztowe mogą być używane więcej niż raz i mogą być powiązane z nazwami ulic lub miast. Oddzielne tabele.
źródło
Kanadyjskie kody pocztowe składają się tylko z 6 znaków, w postaci liter i cyfr (LNLNLN)
źródło
Wielka Brytania opublikowała standardy: Katalog standardów danych rządu Wielkiej Brytanii
Międzynarodowy adres pocztowy:
Długość brytyjskiego kodu pocztowego to:
źródło
Jeśli chcesz zintegrować kody pocztowe w bazie danych, najlepiej skorzystać z bazy danych geonames. Chociaż jest to trudne w użyciu i zrozumieniu, jest to największa geograficzna baza danych dostępna bezpłatnie dla użytkowników takich jak my.
Wszystkie inne takie bazy danych mają mniej więcej takie same dane i strukturę. Po prostu usuwają dodatkowe / zbędne informacje z bazy danych. Jeśli robisz to tylko dla systemów o niskim obciążeniu, korzystaj z ich bezpłatnych usług, limity są atrakcyjne i zapewniają łatwiejszy interfejs przy użyciu json i ajax. Możesz zobaczyć ograniczenia tutaj
Dla twojej informacji varchar (20) jest wystarczający do przechowywania kodów pocztowych
źródło