Daftar panjang standar untuk bidang basis data

395

Saya merancang tabel database dan sekali lagi bertanya pada diri sendiri pertanyaan bodoh yang sama: Berapa lama bidang nama depan?

Apakah ada yang punya daftar panjang wajar untuk bidang yang paling umum , seperti nama depan, nama belakang, dan alamat email?

Patrick McElhaney
sumber
1
Pastikan Anda mengizinkan karakter non-alfa dalam nama! poin di tanda hubung di nama belakangnya
Chris Marasti-Georg
3
Lihat "Panjang maksimum id email yang valid" untuk panjang alamat email maksimum.
outis
2
Satu catatan: tidak memerlukan "nama depan" dan "nama belakang". Beberapa orang, seperti saya, hanya memiliki satu nama. (Bukti: web.archive.org/web/20130115074449/http://saizai.com/… )
Sai
Bagaimana dengan URL, seperti blog atau tautan ke profil?
AlikElzin-kilaka
Kacau jika namanya selama ini gintama.wikia.com/wiki/Jugem_Jugem
瀬 絵 里

Jawaban:

35

Rekomendasi W3C:

Jika mendesain formulir atau database yang akan menerima nama dari orang-orang dengan berbagai latar belakang, Anda harus bertanya pada diri sendiri apakah Anda benar-benar perlu memiliki bidang terpisah untuk nama dan nama keluarga yang diberikan.

... Ingatlah bahwa nama-nama dalam beberapa budaya bisa jauh lebih lama daripada nama Anda. ... Hindari membatasi ukuran bidang untuk nama dalam database Anda . Secara khusus, jangan berasumsi bahwa nama Jepang empat karakter di UTF-8 akan muat dalam empat byte - Anda cenderung benar-benar membutuhkan 12.

https://www.w3.org/International/questions/qa-personal-names

Untuk bidang basis data, VARCHAR(255)adalah pilihan default yang aman, kecuali Anda benar-benar dapat menemukan alasan yang bagus untuk menggunakan sesuatu yang lain. Untuk aplikasi web biasa, kinerja tidak akan menjadi masalah. Jangan mengoptimalkan secara prematur.

jrc
sumber
26
Sudah 10 tahun sejak saya mengajukan pertanyaan itu. Dengan 10 tahun pengalaman di bawah ikat pinggang saya, saya cenderung setuju dengan Anda.
Patrick McElhaney
2
Bagaimana tepatnya Anda mencetak nama yang panjangnya 255 karakter pada sebuah amplop?
Michael Potter
316

Saya baru saja menanyakan database saya dengan jutaan pelanggan di AS.

  • Maksimum nama pertama panjang adalah 46. Saya pergi dengan 50. (Tentu saja, hanya 500 dari mereka adalah lebih dari 25, dan mereka semua kasus di mana impor data yang mengakibatkan sampah ekstra berliku di bidang itu.)

  • Nama belakang mirip dengan nama depan.

  • Maksimal alamat email maksimal 62 karakter. Sebagian besar yang lebih panjang sebenarnya adalah daftar alamat email yang dipisahkan oleh tanda titik koma.

  • Maksimal alamat jalan di 95 karakter. Yang panjang semuanya valid.

  • Panjang kota maks adalah 35.

Ini harus menjadi penyebaran statistik yang layak untuk orang-orang di AS. Jika Anda memiliki lokalisasi untuk dipertimbangkan, jumlahnya bisa sangat bervariasi.

Eric Z Beard
sumber
4
Dibandingkan dengan milik Anda, basis data yang saya akses kecil, tetapi bahkan di sana saya menemukan alamat email yang terdiri dari 138 karakter. Komponen part lokal jelas semacam LDAP (atau AD?) Nama dibedakan.
Bernd Jendrissek
2
Bagaimana dengan nomor telepon?
ceving
@EricZBeard Apakah "alamat jalan" termasuk nomor rumah?
noɥʇʎԀʎzɐɹƆ
3
Panjang rata-rata alamat email dalam database Anda bukan ukuran yang baik untuk direkomendasikan. Panjang maksimum yang valid dari alamat email adalah 254 karakter dan harus menjadi panjang yang ditentukan dalam database. Selain itu memiliki daftar alamat email dalam satu kolom menandakan kepada saya bahwa data Anda tidak dinormalisasi dan dengan demikian membatalkan jawaban Anda lebih lanjut.
Mario
1
@ MOGOwen Pertama, Anda tidak tahu tujuan database, dalam pengaturan tertentu seseorang ditolak aksesnya karena masalah sembrono seperti email mereka yang "terlalu panjang" bisa menjadi masalah besar. Kedua, tautan yang Anda poskan mengatakan "Yang paling lama valid adalah 89", sedangkan yang ini mengatakan 62. Yang mana yang benar? Jika Anda hanya ingin memilih nomor yang sewenang-wenang atau Anda memiliki alasan yang valid seperti nama harus dimasukkan sebagai bagian dari alamat, denda. Namun masih masuk akal, bahwa ketika ragu, Anda merujuk pada spesifikasi. Saya masih berpendapat bahwa satu orang mengatakan "maxes database saya di x" adalah anekdotal.
Mario
171

Katalog Standar Data Pemerintah Inggris merinci standar UK untuk hal semacam ini. Ini menyarankan 35 karakter untuk masing-masing Nama yang Diberikan dan Nama Keluarga, atau 70 karakter untuk satu bidang untuk menampung Nama Lengkap, dan 255 karakter untuk alamat email. Di antara hal-hal lain ..

Ian Nelson
sumber
3
Tautan tersebut perlu diperbarui pada 22 Oktober 2010. Saya mencari di Google untuk: situs: *. Gov.uk Beri nama "35 karakter" dan temukan dokumen ini justice.gov.uk/guidance/docs/electoral-reg-standards.pdf
Tony R
20
Hanya pemikiran ... bukankah 71 karakter untuk nama depan dan belakang dalam satu bidang, mengingat harus ada spasi?
Joseph Redfern
8
Yah, jelas mereka mengantisipasi nama depan panjang sesekali (hingga 35 karakter) dan nama panjang panjang sesekali (hingga 35 karakter), tetapi tidak harus mengharapkan seseorang dengan kombinasi baik nama depan panjang dan nama keluarga. Itu hanya akan serakah ;-)
Ian Nelson
6
Jika Tuan El Tahir El Fadil El Siddig Abderrahman Mohammed Ahmed Abdel Karim El Mahdi benar-benar menggunakan semua namanya ketika mengisi formulir online saya akan terkesan. Saya memiliki dua nama tengah tetapi saya hanya pernah menggunakan salah satunya selain pada formulir resmi (yaitu pemerintah).
Leon
2
@ ian-nelson Panjang email menurut RFC 3696: Batas itu maksimum 64 karakter (oktet) di "bagian lokal" (sebelum "@") dan maksimum 255 karakter (oktet) di bagian domain (setelah "@") dengan total panjang 320 karakter. Sistem yang menangani email harus siap untuk memproses alamat yang panjang, meskipun jarang dijumpai.
Piotr Nawrot
54

Beberapa panjang kolom mungkin benar

                            Min Max

Hostname                    1   255
Domain Name                 4   253
Email Address               7   254
Email Address [1]           3   254
Telephone Number            10  15      
Telephone Number [2]        3   26  
HTTP(S) URL w domain name   11  2083        
URL [3]                     6   2083    
Postal Code [4]             2   11
IP Address (incl ipv6)      7   45
Longitude                   numeric 9,6
Latitude                    numeric 8,6
Money[5]                    numeric 19,4

[1] Allow local domains or TLD-only domains
[2] Allow short numbers like 911 and extensions like 16045551212x12345
[3] Allow local domains, tv:// scheme
[4] http://en.wikipedia.org/wiki/List_of_postal_codes. Use max 12 if storing dash or space
[5] http://stackoverflow.com/questions/224462/storing-money-in-a-decimal-column-what-precision-and-scale

Kata-kata kasar yang panjang tentang nama pribadi

Nama pribadi dapat berupa Polynym (nama dengan beberapa komponen yang dapat diurutkan ), Mononim (nama dengan hanya satu komponen), atau Pictonym (nama yang diwakili oleh gambar - ini ada karena orang-orang seperti Pangeran).

Seseorang dapat memiliki banyak nama, memainkan peran, seperti LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM, dll. Anda mungkin memiliki aturan bisnis, seperti "seseorang hanya dapat memiliki satu nama resmi pada suatu waktu, tetapi beberapa nama samaran pada suatu waktu".

Beberapa contoh:

names: [
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"George",
    middle:"Herman",
    moniker:"Babe",
    surname:"Ruth",
    generation:"JUNIOR"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Bambino" /* mononyms can be more than one word, but only one component */
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"The Sultan of Swat"
  }
]

atau

names: [
  {
    type:"POLYNYM",
    role:"PREFERRED",
    given:"Malcolm",
    surname:"X"
  },
  {
    type:"POLYNYM",
    role:"BIRTH",
    given:"Malcolm",
    surname:"Little"
  },
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Malik",
    surname:"El-Shabazz"
  }
]

atau

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Prince",
    middle:"Rogers",
    surname:"Nelson"
  },
  {
    type:"MONONYM",
    role:"SOBRIQUET",
    mononym:"Prince"
  },
  {
    type:"PICTONYM",
    role:"LEGAL",
    url:"http://upload.wikimedia.org/wikipedia/en/thumb/a/af/Prince_logo.svg/130px-Prince_logo.svg.png"
  }
]

atau

names:[
  {
    type:"POLYNYM",
    role:"LEGAL",
    given:"Juan Pablo",
    surname:"Fernández de Calderón",
    secondarySurname:"García-Iglesias" /* hispanic people often have two surnames. it can be impolite to use the wrong one. Portuguese and Spaniards differ as to which surname is important */
  }
]

Nama yang diberikan, nama tengah, nama keluarga dapat berupa beberapa kata seperti "Billy Bob" Thornton, atau Ralph "Vaughn Williams".

Neil McGuigan
sumber
5
Ini sangat informatif tetapi bukan jawaban yang sangat berguna. Lain kali saya membutuhkan jawaban "mungkin benar" saya akan memberi tahu Anda.
n8bar
16

Saya akan mengatakan untuk berbuat salah di sisi atas. Karena Anda mungkin akan menggunakan varchar, ruang tambahan apa pun yang Anda izinkan tidak akan benar-benar menggunakan ruang tambahan apa pun kecuali seseorang membutuhkannya. Saya akan mengatakan untuk nama (pertama atau terakhir), pergi setidaknya 50 karakter, dan untuk alamat email, buat setidaknya 128. Ada beberapa alamat email yang sangat panjang di luar sana.

Hal lain yang ingin saya lakukan adalah pergi ke Lipsum.com dan memintanya untuk menghasilkan beberapa teks. Dengan begitu Anda bisa mendapatkan ide bagus tentang apa yang terlihat seperti 100 byte.

Kibbee
sumber
6
Ya ampun - orang pertama yang mencatat bahwa bidang yang lebih besar tidak selalu berarti lebih banyak ruang penyimpanan, karenanya "var" di varchar. NVarchar biasanya lebih masuk akal untuk nama.
Tao
Tergantung pada implementasinya. Anda tidak perlu NVARCHAR jika VARCHAR mendukung UTF-8.
dan04
2
[N]Varcharukuran yang bagaimanapun, mempengaruhi indeks Anda.
RBarryYoung
11

Saya cukup banyak selalu menggunakan kekuatan 2 kecuali ada alasan bagus untuk tidak, seperti antarmuka yang menghadap pelanggan di mana beberapa nomor lain memiliki arti khusus bagi pelanggan.

Jika Anda berpegang pada kekuatan 2 itu membuat Anda dalam satu set terbatas ukuran umum, yang itu sendiri adalah hal yang baik, dan membuatnya lebih mudah untuk menebak ukuran objek yang tidak diketahui yang mungkin Anda temui. Saya melihat cukup banyak orang lain melakukan ini, dan ada sesuatu yang menyenangkan secara estetika tentang hal itu. Secara umum memberi saya perasaan yang baik ketika saya melihat ini, itu berarti perancang itu berpikir seperti seorang insinyur atau ahli matematika. Meskipun aku mungkin khawatir jika hanya bilangan prima yang digunakan. :)

Mike
sumber
3
Dapat diperdebatkan bahwa 2ⁿ - 1, 2ⁿ - 2 atau bahkan 2ⁿ - 4, dua akan menjadi keputusan rekayasa yang lebih baik karena sering string direpresentasikan sebagai karakter zero-indexed array dan diakhiri dengan null char, byte atau dua byte (UTF-8 ). Juga dengan beberapa database di atas 255 pada varchar memerlukan byte tambahan untuk penyimpanan (lihat stackoverflow.com/questions/2340639/… ).
Pocketsand
2
+------------+---------------+---------------------------------+
|   Field    | Length (Char) |           Description           |
+------------+---------------+---------------------------------+
|firstname   | 35            |                                 |
|lastname    | 35            |                                 |
|email       | 255           |                                 |
|url         | 60+           | According to server and browser |
|city        | 45            |                                 |
|address     | 90            |                                 |
+------------+---------------+---------------------------------+

Sunting : Menambahkan beberapa spasi

Micheal Mouner Mikhail Youssif
sumber
1
Mengapa tidak menggunakan VARCHAR 255 untuk semua yang merupakan string? VARCHAR tidak menggunakan padding dan berakhir dengan satu atau dua byte tambahan.
radtek
varchar bisa agak lambat.
kta
1

Hanya melihat melalui arsip email saya, ada sejumlah nama "pertama" yang cukup panjang (tentu saja yang dimaksud dengan pertama adalah variabel berdasarkan budaya). Salah satu contohnya adalah Krishnamurthy - yang panjangnya 13 huruf. Tebakan yang bagus mungkin 20 hingga 25 huruf berdasarkan ini. Email harus lebih lama karena Anda mungkin memiliki [email protected]. Juga, gmail dan beberapa program email lainnya memungkinkan Anda untuk menggunakan [email protected] di mana "sometag" adalah apa pun yang ingin Anda taruh di sana sehingga Anda dapat menggunakannya untuk mengurutkan email yang masuk. Saya sering menemukan formulir web yang tidak memungkinkan saya memasukkan alamat email lengkap saya tanpa mempertimbangkan tag apa pun. Jadi, jika Anda memerlukan bidang email tetap, mungkin sekitar [email protected] karakter untuk total 90 karakter (jika saya melakukan matematika dengan benar!).

Loren Charnley
sumber
0

Saya biasanya pergi dengan:

Nama depan : 30 karakter
Nama belakang : 30 karakter
Email : 50 karakter
Alamat : 200 karakter

Jika saya khawatir tentang bidang panjang untuk nama-nama, saya kadang-kadang bisa pergi dengan 50 untuk bidang nama juga, karena ruang penyimpanan jarang menjadi masalah hari ini.

kaybenleroll
sumber
11
50 untuk email? 254 adalah maksimum sebenarnya
Marko
0

Jika Anda perlu mempertimbangkan lokalisasi (bagi kami di luar AS!) Dan mungkin di lingkungan Anda, saya sarankan:

Tentukan tipe data untuk setiap komponen nama - CATATAN: beberapa budaya memiliki lebih dari dua nama! Kemudian miliki tipe untuk nama lengkap,

Kemudian pelokalan menjadi sederhana (sejauh menyangkut nama).

Hal yang sama berlaku untuk alamat, BTW - format berbeda!

ColinYounger
sumber
-1

itu benar varchar? Jadi tidak masalah jika Anda menggunakan 50 atau 25, lebih baik aman dan menggunakan 50, yang mengatakan saya percaya yang paling lama saya lihat adalah sekitar 19 atau lebih. Nama belakang lebih panjang

SQLMenace
sumber