Apa struktur data yang baik untuk menyimpan nomor telepon di bidang database? Saya mencari sesuatu yang cukup fleksibel untuk menangani nomor internasional, dan juga sesuatu yang memungkinkan berbagai bagian nomor dipertanyakan secara efisien.
Sunting: Hanya untuk memperjelas kasus penggunaan di sini: Saat ini saya menyimpan nomor dalam satu bidang varchar, dan saya meninggalkannya tepat saat pelanggan memasukkannya. Kemudian, ketika nomor tersebut dibutuhkan oleh kode, saya menormalkannya. Masalahnya adalah jika saya ingin menanyakan beberapa juta baris untuk menemukan nomor telepon yang cocok, ini melibatkan fungsi, seperti
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
yang sangat tidak efisien. Juga kueri yang mencari hal-hal seperti kode area menjadi sangat rumit bila hanya berupa satu bidang varchar.
[Sunting]
Orang-orang telah memberikan banyak saran bagus di sini, terima kasih! Sebagai pembaruan, inilah yang saya lakukan sekarang: Saya masih menyimpan angka persis seperti yang dimasukkan, di bidang varchar, tetapi alih-alih menormalkan hal-hal pada waktu kueri, saya memiliki pemicu yang melakukan semua itu saat catatan dimasukkan atau diperbarui. Jadi saya memiliki ints atau bigints untuk setiap bagian yang perlu saya kueri, dan bidang tersebut diindeks untuk membuat kueri berjalan lebih cepat.