it-swarm.asia

Praktik terbaik di bidang orang umum (Nama, email, alamat, jenis kelamin dll ...)

Apa praktik terbaik yang paling umum pada panjang dan tipe data pada bidang umum seperti:

  • Nama depan
  • Nama keluarga
  • Alamat
  • Surel
  • Seks
  • Negara
  • Kota
  • Negara
  • Nomor telepon

dll ....

44
Snow_Mac

Saya cenderung sangat curiga terhadap serangkaian praktik terbaik universal karena, untuk sebagian besar bidang ini, iblis ada dalam rinciannya. Hanya karena informasinya relatif umum tidak berarti bahwa aplikasi Anda menggunakan data dengan cara yang persis sama dengan aplikasi lain yang menggunakannya. Itu berarti model data Anda mungkin harus sedikit berbeda.

  • Nama depan & belakang: Mengapa Anda menangkap nama itu? Jika Anda memiliki persyaratan untuk mendapatkan nama lengkap seseorang (mis. Anda sedang menyiapkan dokumen hukum atau akta kelahiran), Anda mungkin ingin memberi lebih banyak ruang bagi orang untuk mengetik daripada jika Anda hanya meminta nama seseorang sehingga Anda punya sesuatu untuk memanggil mereka di aplikasi web baru Anda.
  • Alamat: Apa yang akan Anda lakukan dengan alamat itu? Alamat apa yang Anda simpan? Jika Anda menyimpan alamat properti di Amerika Serikat tempat Anda membuat hipotek, Anda mungkin sangat peduli untuk mendapatkan alamat yang terstandarisasi penuh dalam hal ini model data yang mungkin ingin dipetakan sangat dekat dengan alamat Anda apa pun pengembalian alat standardisasi. Jika Anda hanya ingin orang dapat mengetikkan alamat untuk mengirimkan produk, beberapa baris untuk teks bentuk bebas mungkin cukup. Panjang garis di sana mungkin tergantung pada persyaratan proses hilir yang melakukan hal-hal seperti label alamat cetak.
  • Status: Dengan anggapan Anda dapat mengidentifikasi nilai status yang valid, mungkin masuk akal untuk membuat tabel STATE dan membuat hubungan kunci asing antara tabel STATE dan ADDRESS. Tetapi kemampuan untuk mengidentifikasi nilai-nilai yang valid menyiratkan bahwa Anda membatasi sekumpulan alamat yang valid setidaknya untuk satu set negara tertentu. Itu bagus untuk banyak situs, tetapi kemudian Anda harus melakukan sedikit pekerjaan untuk mendukung negara baru.
  • Kota: Jika Anda berurusan dengan data di mana ada peraturan tingkat kota yang potensial ada (yaitu di mana ada berbagai jenis tarif pajak yang diterapkan berdasarkan kota), Anda mungkin ingin memperlakukannya seperti negara dan memiliki CITY tabel dengan kota-kota yang valid dan hubungan kunci asing antara tabel CITY dan ADDRESS. Di sisi lain, jika Anda hanya mencoba untuk mendapatkan produk yang dikirim dan Anda tidak terlalu peduli jika Anda memiliki berbagai versi dari kota yang sama di meja Anda, membiarkan pengguna memasukkan bentuk bebas teks sudah cukup. Tentu saja, jika Anda menyimpan kunci asing, Anda akan memiliki cukup banyak pekerjaan untuk memastikan bahwa Anda memiliki semua nilai yang valid. Tetapi ada produk di mana intinya adalah bahwa perusahaan telah melakukan pekerjaan itu (mis. Basis data pajak penjualan).
  • Telepon: Apa yang Anda lakukan dengan nomor telepon dan mengapa? Beberapa aplikasi akan ingin memasukkan nomor telepon dalam format apa pun yang diputuskan pengguna untuk memasukkannya dan mempertahankan format itu untuk semua permintaan selanjutnya. Ini akan menjadi umum jika Anda merancang buku alamat pribadi di mana pengguna memiliki preferensi mereka sendiri untuk bagaimana nomor telepon disimpan dan ditampilkan. Aplikasi lain ingin mengabaikan pemformatan yang dimasukkan, mengekstrak hanya karakter numerik, dan kemudian memformat data pada pengambilan sehingga semua nomor telepon memiliki pemformatan yang sama. Jika Anda melayani bisnis, Anda mungkin ingin bidang terpisah bagi pengguna untuk memasukkan ekstensi. Jika Anda mencoba untuk mendukung proses panggilan keluar, Anda mungkin ingin menyimpan kode area dan kode negara dalam kolom terpisah karena Anda ingin memastikan bahwa Anda memiliki jendela khusus zona waktu untuk memanggil orang-orang dalam kode area yang berbeda (membuat panggilan ke seseorang di zona waktu Timur pada jam 10 pagi akan jauh lebih baik daripada melakukan panggilan yang sama kepada seseorang di zona waktu Pasifik di mana jam 7 pagi).
  • Gender: Untuk banyak aplikasi hebat, sangat masuk akal untuk menyimpan kode gender ('M' atau 'F') dalam sebuah tabel. Di sisi lain, ada beberapa kasus di mana Anda mungkin menginginkan opsi tambahan (Lainnya, Interseks, Transgender) atau di mana Anda perlu menyimpan sesuatu seperti jenis kelamin saat lahir dan jenis kelamin saat ini.
50
Justin Cave

Anda juga dapat menebak berdasarkan data sampel dan pemirsa yang diharapkan. Itu tergantung pada lokasi Anda.

Beberapa catatan:

Alamat:

Nama:

Nomor telepon: Kode internasional, panjang, seluler vs rumah, bolehkan hanya seluler sebagai nomor

24
gbn

Selain jawaban hebat di atas, jangan lupa untuk menerima karakter unicode. Hanya karena Anda berada di AS tidak berarti Anda tidak ingin menerima karakter asing ke dalam kolom Anda.

Yang mengatakan, saya biasanya merekomendasikan 50 karakter untuk nama. 320 harus lebih dari cukup untuk alamat email (Anda dapat memeriksa standar ANSI untuk memastikan). Untuk kesalahan alamat di sisi hati-hati dengan 255 karakter. Meskipun Anda mungkin tidak akan pernah membutuhkan alamat sebesar itu, Anda mungkin bisa jika Anda menyertakan garis C/O dan hal-hal seperti itu. Kota harus cukup besar, ada beberapa nama kota yang cukup panjang di luar sana. Untuk negara pergi dengan tabel anak, sama dengan negara. Untuk kode pos jangan lupa tentang kode pos internasional yang lebih panjang dari kode pos AS. Hanya karena Anda tidak mendukung internasional, Anda masih mungkin. Ada banyak warga AS yang tinggal di berbagai negara termasuk orang-orang militer.

Jangan lupa bahwa negara harus opsional karena banyak negara tidak memiliki negara.

10
mrdenny

Pantat saya semakin sakit karena duduk di pagar, jadi saya akan hanya membuang beberapa jawaban dan berharap untuk tidak turun ke pemungutan suara terlupakan. Tolong tawarkan kritik yang membangun.

Alamat email:

min: 6 ([email protected]). Atau 3 jika Anda ingin melacak alamat email domain lokal
maks: 320 254 (RFC)

Jumlah kode untuk memvalidasi email sebenarnya gila, jadi anggap saja valid jika memiliki "@"

Anda mungkin ingin mengabstraksi alamat email sebagai "metode komunikasi", sehingga Anda dapat dengan mudah mendaftar semua metode yang digunakan untuk berkomunikasi dengan pengguna.

Jenis kelamin

Jenis kelamin dapat berubah seiring waktu, sehingga Anda dapat melacaknya jika itu penting bagi Anda. Ikuti http://en.wikipedia.org/wiki/ISO/IEC_5218

NOT_KNOWN(0),
MALE(1),
FEMALE(2),
NOT_APPLICABLE(9);

Alamat: NORAM

Saya akan mengambil jalan keluar murah dan tetap berpegang pada alamat Amerika Utara.

Lebih mudah bagi negara-negara abstrak, divisi, kota, dan kabupaten sebagian besar karena perpajakan. Pajak dapat diterapkan di banyak tingkatan, jadi jika Anda dapat mengarahkan tarif pajak pada wilayah geografis yang abstrak, Anda adalah emas.

GeographicArea :

id: int  
type: {country, division, county, city, indian reservation}  
name: varchar(45)  [1]
abbreviation: nullable varchar(4)  
parent_id: nullable int  

Alamat :

id: int  
postal_area_id: int, references GeographicArea  
county_or_city_id: int, references GeographicArea  
street_address: varchar(255)  
suite: nullable varchar(255)  

Tambahkan line2, dan line3 jika perlu.

Lihat http://en.wikipedia.org/wiki/Address_ (geografi)

Sekarang, alamat adalah alamat. Banyak orang dapat hidup di suatu alamat, dan seseorang dapat memiliki banyak alamat pada saat yang sama, dan seiring waktu, sehingga Anda memerlukan banyak-banyak tabel untuk itu.

PartyAddress

party_id: int references Party  
address_id: int references Address  
purpose: {home, work, ...}  

Tambah sebuah from_date dan nullable to_date jika melacak dari waktu ke waktu.

Nomor telepon

Suatu pihak dapat memiliki beberapa nomor telepon, dan nomor telepon dapat digunakan oleh banyak orang. Nomor telepon dapat digunakan untuk faks, panggilan telepon, modem, dll. Dan dapat memiliki ekstensi. Ini semua dapat berubah seiring waktu juga.

Nomor Telepon

id: int  
value: varchar(15) - the max allowed by the ITU  

Min mungkin 3 (untuk "911"), atau mungkin 7 ("310-4NET", yang merupakan jenis khusus nomor lokal yang tidak memungkinkan Anda untuk memutar kode area)

Anda dapat membaginya menjadi kode negara, dll jika perlu.

Anda harus menggunakan http://en.wikipedia.org/wiki/E.164 standar

PartyPhoneNumber

party_id: int references Party  
phone_number_id references PhoneNumber  
extension: nullable varchar(11) - ITU max  
purpose: {home, work, fax, modem, ...}  

Nama

Nama itu sulit. Inilah alasannya:

  1. Beberapa orang memiliki nama resmi dengan hanya satu kata di dalamnya http://en.wikipedia.org/wiki/List_of_legally_mononymous_people

  2. Beberapa orang memiliki nama dengan banyak kata http://en.wikipedia.org/wiki/Wolfe%2B585,_Senior

  3. Beberapa orang memiliki banyak nama secara bersamaan (misalnya, di universitas saya ada banyak siswa Asia, tetapi mereka suka menggunakan "lebih disukai" nama yang lebih kebarat-baratan)

  4. Terkadang, Anda perlu melacak nama orang dari waktu ke waktu, seperti nama gadis dan nama pernikahan.

  5. Anda ingin mengabstraksikan individu dan organisasi untuk berbagai alasan yang bagus

    membuat tabel pesta (id kunci utama server);

    membuat tabel party_name (id kunci primer bigserial, party_id bigint bukan null referensi pihak (id), ketik smallint bukan nol referensi party_name_type (id) --elided, ex "maiden", "legal");

    buat tabel name_component (id kunci primer bigserial, party_name_id bigint bukan nol referensi party_name (id), ketik smallint bukan null reference name_component_type (id), --elided ex "diberi" nama teks bukan null);

9
Neil McGuigan

Dari sudut pandang yang sedikit berbeda dari jawaban sebelumnya, dan karena sepertinya OK untuk berbicara tentang LDAP , RFC 4519 - "Protokol Akses Direktori Ringan (LDAP): Skema untuk Aplikasi Pengguna" mungkin menarik.

Mungkin bermanfaat jika aplikasi Anda perlu dipetakan ke direktori seperti itu. Kalau tidak, itu mungkin tidak disesuaikan dengan kebutuhan Anda.

Definisi-definisi ini lebih dari sekedar tentang data, mereka juga tentang beberapa operator yang dapat digunakan di lapangan. postalAddress , misalnya adalah caseIgnoreListSubstringsMatch . Saya tidak menyarankan Anda untuk mematuhi skema ini secara ketat, tetapi melihat prinsip-prinsipnya bisa menarik, khususnya bagaimana Anda harus membandingkan nama dan alamat dalam aplikasi Anda mungkin relevan dengan desain database Anda.

3
Bruno

Mengenai nama, pertimbangkan untuk menggunakan tanda kutip ganda sehingga Anda tidak perlu melarikan diri dari tanda kutip dalam nama Irlandia atau Italia (mis., O'Hara atau D'Amato).

Saya juga merekomendasikan untuk menggunakan serangkaian Ekspresi Reguler yang baik untuk digunakan, sehingga Anda dapat menampilkan bagian bidang nama Anda (mis., Inisial pertama, nama panggilan, Jr/Sr, dll.).

3
KiloVoltaire