Saya berharap kolom tersebut menjadi VARCHAR2, di Oracle Database saya.
Zip AS adalah 9.
Kanada berusia 7 tahun.
Saya pikir 32 karakter akan menjadi batas atas yang masuk akal
Apa yang saya lewatkan?
[EDIT] TIL: 12 adalah jawaban yang masuk akal untuk pertanyaan Terima kasih kepada semua orang yang berkontribusi.
database
oracle
globalization
postal-code
EvilTeach
sumber
sumber
Jawaban:
Melihat-lihat halaman Kode Pos Wikipedia , 32 karakter sudah lebih dari cukup. Saya akan mengatakan bahkan 16 karakter itu baik.
sumber
Seperti yang telah dikemukakan oleh @ neil-mcguigan, wikipedia memiliki halaman yang layak tentang topik tersebut. Berdasarkan 12 karakter itu harus melakukannya: http://en.wikipedia.org/wiki/List_of_postal_codes
Artikel wikipedia mencantumkan ~ 254 negara, yang cukup bagus mengenai UPU (Universal Postal Union) memiliki 192 negara anggota.
sumber
Mengapa Anda menyatakan ukuran bidang lebih besar dari data sebenarnya yang ingin Anda simpan di dalamnya?
Jika versi awal aplikasi Anda akan mendukung alamat AS dan Kanada (yang saya simpulkan dari fakta bahwa Anda menyebutkan ukuran tersebut dalam pertanyaan Anda), saya akan mendeklarasikan bidang tersebut sebagai VARCHAR2 (9) (atau VARCHAR2 ( 10) jika Anda ingin menyimpan tanda hubung di kolom ZIP + 4). Bahkan melihat kiriman yang dibuat orang lain pada kode pos di berbagai negara, VARCHAR2 (9) atau VARCHAR2 (10) akan cukup untuk sebagian besar, jika tidak semua negara lain.
Selanjutnya, Anda selalu dapat MENGUBAH kolom untuk menambah panjang jika diperlukan. Tetapi secara umum sulit untuk mencegah seseorang, entah di mana, memutuskan untuk menjadi "kreatif" dan memasukkan 50 karakter ke dalam bidang VARCHAR2 (50) karena satu dan lain alasan (yaitu karena mereka menginginkan baris lain pada label pengiriman). Anda juga harus berurusan dengan pengujian kasus batas (akankah setiap aplikasi yang menampilkan ZIP menangani 50 karakter?). Dan dengan fakta bahwa saat klien mengambil data dari database, mereka umumnya mengalokasikan memori berdasarkan ukuran maksimum data yang akan diambil, bukan panjang sebenarnya dari baris tertentu. Mungkin bukan masalah besar dalam kasus khusus ini, tetapi 40 byte per baris bisa menjadi potongan RAM yang layak untuk beberapa situasi.
Selain itu, Anda juga dapat mempertimbangkan untuk menyimpan (setidaknya untuk alamat AS) kode pos dan ekstensi +4 secara terpisah. Secara umum berguna untuk dapat menghasilkan laporan menurut wilayah geografis, dan Anda mungkin sering ingin memasukkan semuanya ke dalam kode ZIP daripada memecahnya dengan ekstensi +4. Pada tahap ini, sebaiknya Anda tidak mencoba SUBSTR 5 karakter pertama untuk kode pos.
sumber
Apa yang Anda lewatkan adalah alasan mengapa Anda membutuhkan kode pos untuk ditangani secara khusus.
Jika Anda tidak benar-benar perlu BEKERJA dengan kode pos, saya sarankan untuk tidak mencemaskannya. Dengan bekerja, maksud saya melakukan pemrosesan khusus daripada hanya digunakan untuk mencetak label alamat dan sebagainya.
Cukup buat tiga atau empat bidang alamat VARCHAR2 (50) [misalnya] dan biarkan pengguna memasukkan apa pun yang mereka inginkan.
Apakah Anda benar - benar perlu mengelompokkan pesanan atau transaksi Anda dengan kode pos? Saya kira tidak, karena negara yang berbeda memiliki skema yang sangat berbeda untuk bidang ini.
sumber
Normalisasi? Kode pos mungkin digunakan lebih dari sekali, dan mungkin terkait dengan nama jalan atau nama kota. Tabel terpisah.
sumber
Kode Pos Kanada hanya terdiri dari 6 karakter, berupa huruf dan angka (LNLNLN)
sumber
Inggris telah menerbitkan standar: Katalog Standar Data Pemerintah Inggris
Alamat Pos Internasional:
Panjang kode pos Inggris adalah:
sumber
Jika Anda ingin mengintegrasikan kode pos dalam database maka database geonames paling baik digunakan. Meskipun sulit untuk digunakan dan dipahami tetapi ini adalah basis data geografis terbesar yang tersedia secara gratis untuk pengguna seperti kami.
Semua basis data lainnya kemungkinan besar memiliki data dan struktur yang sama. Mereka hanya menghapus beberapa informasi ekstra / berlebihan dari database. Jika Anda hanya melakukannya untuk sistem beban rendah, gunakan layanan gratis mereka, batasannya menarik dan menyediakan antarmuka yang lebih mudah menggunakan json dan ajax. Anda dapat melihat batasannya di sini
Untuk informasi Anda, varchar (20) cukup untuk menyimpan kode pos
sumber