Tipe Data Untuk Nomor Telepon

Datatype untuk nomor telepon: VARCHAR, INT atau BIGINT?


Makara ini akan menjadi pertanyaan dungu tahun ini tetapi saya wajib menanya karena ini bukan permulaan kalinya saya melewati ini. Lihatlah definisi diagram berikut:

masukkan deskripsi gambar di sini

Lihatlah rubrik
from_numbernan adalah
VARCHAR(45)properti sekarang tetapi ia akan menggudangkan nomor telepon. Karena saya tidak tahu berapa banyak nomor telepon di seluruh dunia maka saya menyedang bikin meliputi hampir semua berasal mereka. Saya ingin menjaga integritas basis data sebanyak barangkali makara saya pikir
VARCHARini bukan tipe nan tepat untuk menyimpan informasi seperti ini – mungkin saya salah, Anda memberi tahu saya – bintang sartan saya berpikir bakal mengganti
INTatau terlebih
BIGINT.

Ketika saya mendefinisikan kolom di Workbench saya harus menentukan nomor antara nama kurung
()enggak dalam semua kasus tetapi pada yang saya sebutkan sebelumnya saya harus. Kaprikornus jika saya melakukan ini:
BIGINT()Saya mendapat kesalahan ini:

masukkan deskripsi gambar di sini

Yang memandu saya untuk membaca cacat tentang tipe MySQL ini di sini . Info dasarnya yaitu ini:

Bilangan bundar osean. … Rentang yang tidak ditandatangani adalah 0 sebatas 18446744073709551615.

Nan mewujudkan saya menyoal: nilai apa yang harus saya tetapkan untuk parentesis ketika saya mendefinisikan suatu
BIGINT()varietas. (Saya menggunakan BIGINT karena saya tak tahu apakah INT dapat menyimpan nomor sebanyak yang dimiliki ponsel – siapa saya salah sekali lagi). Mana cara yang tepat kerjakan membuat | mendesain kolom di database MariaDB / MySQL?

Pokoknya saya ingin tahu pendapat Beliau, pengalaman dan karuan semata-mata saya ingin berbintang terang jawaban

Gubahan:
Saya menggunakan edisi terbaru MySQL Workbench bikin membuat diagram ER. Saya memperalat juga MariaDB 10.0.x


Jawaban:


Bagaimana Kamu menangani nomor telepon dengan ekstensi, seperti “+ 1-000-000-0000 ext 1234”?

Gubahan, “+” menunjukkan resan panggilan jagat rat harus diterapkan; jadi berusul Amerika Lor, sistem secara otomatis mengetahui “011” di depan panggilan sejagat, dll.

Juga, bagaimana dengan nomor telepon seperti “1-800-DBA-HELP”?

Saya biasanya menggudangkan nomor telepon sebagai teks. Karena itu, itu bersusila-benar tersidai seberapa bermakna ruangan nomor telepon Anda. Jika Anda menjalankan dialer faali bermula ruangan itu, maka Beliau bermoral-benar kepingin memastikan bahwa hanya nomor yang disertakan, dan data tersebut mewakili nomor telepon yang terbentuk dengan baik.

Anda boleh memiliki kolom terpisah untuk perluasan, dan nomor telepon yang n kepunyaan teks, seperti cermin “1-800-DBA-HELP” yang saya berikan.







Sebelumnya ditulis:

“Dengan MariaDB Beliau bisa menunggangi
computedrataan bagi mengekstrak sahaja digit untuk dialer kodrati. Pun berfungsi lakukan MySQL 5.7.”

Menanggapi cak bertanya OP tentang ini (“bisakah sira menjelaskan sedikit apa yang kamu katakan padaku?”), Di sini terserah penjelasan.

Banyak sistem basis data sekarang telah memperkenalkan fitur ini. Ini adalah bidang yang dikenal dengan berbagai ”
computed“, ”
virtual” atau ”
generated” yang diturunkan dari nilai di satah tidak. Kekuatan fitur ini akan plural tersidai puas RDBMS Ia. Saya tahu bahwa Oracle, Firebird, MariaDB dan masa ini MySQL 5.7 memilikinya. Makhluk tidak kali lagi melakukannya.

Contoh mudahnya adalah memiliki kolom nama dan kolom terkomputasi yang “menyimpan” (bangun, mereka boleh virtual – yaitu dihitung dengan cepat, maupun mereka dapat disimpan secara fisik di disk) nama keluarga sebagai semua ibu kota, dengan demikian membentuk mencari lebih mudah. Dengan begitu Anda hanya perlu mengejar di
Stempels (menggunakan, katakanlah,
LIKE), mengetahui bahwa data medium dicari di [
computed|
virtual|
generated] bidang dalam wacana kapital.

Konsep untuk MySQL 5.7 dijelaskan di sini dan di sini . Mutakadim di MariaDB untuk sedikit lebih lama dan konsepnya juga dijelaskan di sini . Beberapa kemungkinan pemakaian disarankan di sini , doang Kamu benar-benar tetapi dibatasi maka dari itu imajinasi Dia. Mereka dapat dilihat sebagai pemindah yang nyaman (dan lebih rentan kesalahan) untuk pemicu.

Untuk kasus pendayagunaan khusus Anda, Anda boleh memperoleh nomor yang dapat diputar mulai sejak rataan wacana “+” -> “00” (atau apa kembali kode panggilan internasional Anda). Hanya pemikiran cuma.



Hmm. Nomor telepon terbuat dari poin. Menggunakan varchar memungkinkan pengguna untuk menyimpan segala jenis pemformatan, dengan (atau tidak, dengan – atau. Dan dengan cepat menciptakan menjadikan kekacauan dengan data Anda. Format # telepon bergantung pada negara, masker harus dikaitkan dengan negara. Ekstensi adalah ekstensi dan mana suka, bintang sartan harus disimpan dalam “bidang ekstensi”. (int juga). Untuk 1-800-DBA-Pertolongan, saya akan mengonversinya dengan cepat dan menyimpan nomor maujud. Jika Anda serius membutuhkannya ponsel yang dapat dibaca makhluk #, simpan di satah varchar yang terpisah.


Saya umumnya menyimpan Nomor Telepon di

teks primitif

. Memformat dan menampilkan biarkan kode klien.

Di sini, makin terbit, bagaimana Anda menggudangkan?
barang apa yang akan Anda lakukan dengan nomor telepon
itu lalu terdepan.

Jika kulak Sira ingin mengamalkan
panggilan keluar
berpangkal sistem Engkau, aplikasi hanya akan mengekstraksi skor. Jika menggandar Sira ingin melakukan
panggilan alam semesta
, simpan kode negara dan kode daerah di rubrik terpisah.

Sekiranya jual beli Anda ingin
melaporkan
, aplikasi akan memformat dan mengutarakan dengan perluasan dan angka secara terpisah.

Dari pengertian saya, mendesain

model data global

untuk nomor telepon bukanlah ide yang baik. Setiap negara memiliki poin, perluasan, dan kode distrik berbeda selain berusul kode negara. Juga, saya jadi adv pernah,
beberapa negara bukan memiliki kode area.

Ini barangkali tidak menjawab cak bertanya Dia, saja akan membantu memperluas pemahaman kami. Terima kasih.

Source: https://qastack.id/dba/124546/datatype-for-phone-number-varchar-int-or-bigint