แนวปฏิบัติที่ดีที่สุดในช่องของบุคคลทั่วไป (ชื่อ, อีเมล, ที่อยู่, เพศ ฯลฯ ... ) [ปิด]


44

อะไรคือแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับความยาวและประเภทข้อมูลในฟิลด์ทั่วไปเช่น:

  • ชื่อจริง
  • นามสกุล
  • ที่อยู่
  • อีเมล์
  • เพศ
  • สถานะ
  • เมือง
  • ประเทศ
  • หมายเลขโทรศัพท์

ฯลฯ ....


คำถามนี้เป็นแบบกว้างถึง มันควรจะล้างและลบ
Evan Carroll

คำตอบ:


50

ฉันมีแนวโน้มที่จะสงสัยในแนวปฏิบัติสากลที่ดีที่สุดเพราะส่วนใหญ่ของสาขาเหล่านี้ปีศาจอยู่ในรายละเอียด เพียงเพราะข้อมูลค่อนข้างทั่วไปไม่ได้หมายความว่าแอปพลิเคชันของคุณใช้ข้อมูลในลักษณะเดียวกับที่แอปพลิเคชันอื่นใช้ นั่นหมายความว่าโมเดลข้อมูลของคุณอาจต้องแตกต่างกันเล็กน้อย

  • ชื่อ & นามสกุล: ทำไมคุณถึงจับชื่อ? หากคุณมีความต้องการที่จะจับชื่อเต็มตามกฎหมายของบุคคล (เช่นคุณกำลังเตรียมเอกสารทางกฎหมายหรือสูติบัตร) คุณอาจต้องการให้พื้นที่เพิ่มเติมสำหรับคนที่จะพิมพ์มากกว่าที่คุณจะถ้าคุณเพียงแค่ขอชื่อของบุคคลเพื่อให้คุณ มีบางอย่างที่จะเรียกพวกเขาในแอปเว็บใหม่ของคุณ
  • ที่อยู่: คุณจะทำอย่างไรกับที่อยู่นี้ คุณจัดเก็บที่อยู่ประเภทใด หากคุณกำลังจัดเก็บที่อยู่ของสถานที่ให้บริการในสหรัฐอเมริกาที่คุณกำลังสร้างการจำนองคุณน่าสนใจอย่างมากเกี่ยวกับการได้รับที่อยู่ที่ได้มาตรฐานอย่างสมบูรณ์ซึ่งในกรณีนี้รูปแบบข้อมูลอาจจะต้องการที่จะตัดกับที่อยู่ของคุณ เครื่องมือมาตรฐานกลับมา หากคุณต้องการให้ผู้คนสามารถพิมพ์ที่อยู่เพื่อส่งมอบผลิตภัณฑ์ข้อความสองบรรทัดสำหรับข้อความอิสระอาจจะเพียงพอ ความยาวของบรรทัดอาจขึ้นอยู่กับข้อกำหนดของกระบวนการดาวน์สตรีมที่ทำสิ่งต่าง ๆ เช่นป้ายชื่อที่อยู่พิมพ์
  • สถานะ: สมมติว่าคุณสามารถระบุค่าสถานะที่ถูกต้องมันอาจสมเหตุสมผลในการสร้างSTATEตารางและสร้างความสัมพันธ์กับคีย์ต่างประเทศระหว่างSTATEและADDRESSตาราง แต่ความสามารถในการระบุค่าที่ถูกต้องหมายความว่าคุณกำลัง จำกัด ชุดของที่อยู่ที่ถูกต้องอย่างน้อยให้กับชุดของประเทศที่เฉพาะเจาะจง ไม่เป็นไรสำหรับหลาย ๆ ไซต์ แต่คุณต้องทำงานหนักเพื่อสนับสนุนประเทศใหม่
  • เมือง: หากคุณกำลังจัดการกับข้อมูลที่อาจมีกฎระเบียบระดับเมืองอยู่ (เช่นที่มีอัตราภาษีหลายประเภทที่ใช้กับเมือง) คุณอาจต้องการปฏิบัติกับรัฐและมีCITYตารางที่มีเมืองที่ถูกต้องและความสัมพันธ์กับคีย์ต่างประเทศระหว่างCITYและกับADDRESSตาราง ในทางกลับกันหากคุณเพียงแค่พยายามส่งมอบผลิตภัณฑ์และคุณไม่สนใจมากหากคุณมีเมืองเดียวกันหลายรุ่นในตารางของคุณให้ผู้ใช้ป้อนข้อความแบบฟรีฟอร์มก็เพียงพอแล้ว แน่นอนถ้าคุณเก็บกุญแจต่างประเทศคุณจะมีจำนวนงานที่พอใช้เพื่อให้แน่ใจว่าคุณมีค่าที่ถูกต้องทั้งหมด แต่มีผลิตภัณฑ์ที่จุดทั้งหมดเป็นที่ บริษัท ได้ทำไปแล้ว (เช่นฐานข้อมูลภาษีการขาย)
  • โทรศัพท์: คุณทำอะไรกับหมายเลขโทรศัพท์และเพราะอะไร แอปพลิเคชั่นบางตัวจะต้องการใช้หมายเลขโทรศัพท์ในรูปแบบใดก็ตามที่ผู้ใช้ตัดสินใจป้อนและเก็บรูปแบบนั้นไว้สำหรับการสืบค้นที่ตามมาทั้งหมด นี่จะเป็นเรื่องปกติถ้าคุณกำลังออกแบบสมุดที่อยู่ส่วนบุคคลซึ่งผู้ใช้มีการตั้งค่าของตนเองสำหรับวิธีจัดเก็บและแสดงหมายเลขโทรศัพท์ แอปพลิเคชันอื่น ๆ ต้องการละเว้นการจัดรูปแบบที่ป้อนแยกเฉพาะอักขระตัวเลขแล้วจัดรูปแบบข้อมูลในการดึงข้อมูลเพื่อให้หมายเลขโทรศัพท์ทั้งหมดมีการจัดรูปแบบที่คล้ายกัน หากคุณต้องการธุรกิจคุณอาจต้องการเขตข้อมูลแยกต่างหากสำหรับผู้ใช้เพื่อป้อนส่วนขยาย หากคุณพยายามสนับสนุนกระบวนการโทรออกคุณอาจต้องการจัดเก็บรหัสพื้นที่และรหัสประเทศในคอลัมน์แยกเนื่องจากคุณ
  • เพศ: สำหรับแอปพลิเคชั่นมากมายมันสมเหตุสมผลอย่างยิ่งที่จะจัดเก็บรหัสเพศ ('M' หรือ 'F') ไว้ในตาราง ในทางกลับกันมีบางกรณีที่คุณอาจต้องการตัวเลือกเพิ่มเติม (อื่น ๆ , Intersex, Transgendered) หรือที่ที่คุณต้องการเก็บอะไรบางอย่างเช่นเพศที่เกิดและเพศปัจจุบัน

คำตอบที่น่าสนใจเกี่ยวกับสิ่งต่าง ๆ ที่คิด - แต่ขาดความคิดที่มีประโยชน์เพื่อช่วยให้ผู้คนได้รับเพิ่มเติม ... ตัวอย่างเช่นสิ่งที่โทรศัพท์มีสิ่งที่ค่อนข้างง่ายที่จะครอบคลุม> = 80% ของกรณี: จำนวนที่คุณสามารถพิมพ์ บางแห่งในการติดต่อใครสักคนทางโทรศัพท์อาจจะมีการเพิ่มที่ครอบคลุมประเทศอื่นด้วย ดังนั้นใช่, มีความแตกต่างของตัวละครไม่กี่ถ้าคุณพิจารณาจำนวนอาจจะมี / ไม่มีคำนำหน้าประเทศ แต่มี defintely เป็นสิ่งเช่นหมายเลขโทรศัพท์ที่ยาวที่สุดในโลกและใช้นี้บวกอีกไม่กี่มีความปลอดภัยสวยที่สุด ผู้ป่วย
Henning

24

คุณอาจคาดเดาจากข้อมูลตัวอย่างและผู้ชมที่คาดหวัง ขึ้นอยู่กับตำแหน่งของคุณ

หมายเหตุบางส่วน:

ที่อยู่:

ชื่อ:

หมายเลขโทรศัพท์: รหัสระหว่างประเทศ, ความยาว, มือถือกับเฮ้าส์, อนุญาตให้ใช้มือถือเป็นหมายเลขเท่านั้น


3
ลิงก์สองอันสุดท้าย ("นามสกุล" และ "ยาวที่สุดคืออะไร ... ") จะใช้งานไม่ได้
Marc L.

1
@MarcL ฉันแก้ไขลิงก์ "นามสกุลชื่อจริง" (หากการแก้ไขของฉันได้รับการยอมรับ) "สิ่งที่ยาวที่สุด ... " ดังนั้นคำถามจึงถูกปิดเป็น "ไม่สร้างสรรค์" และถูกลบ (คุณยังสามารถดูได้หากคุณมี> 10k ตัวแทน)
ขวาน

2
เครื่อง Wayback มีบทความ "นามสกุลชื่อแรก": web.archive.org/web/20160823135055/http://www.solidether.net/…
Av Pinzur

10

นอกเหนือจากคำตอบที่ดีข้างต้นอย่าลืมรับอักขระ Unicode เพียงเพราะคุณอยู่ในสหรัฐอเมริกาไม่ได้หมายความว่าคุณไม่ต้องการรับตัวอักษรต่างประเทศในคอลัมน์ของคุณ

ที่กล่าวว่าฉันมักจะแนะนำ 50 ตัวอักษรสำหรับชื่อ 320 ควรมากกว่าที่อยู่อีเมลที่เพียงพอ (คุณสามารถตรวจสอบมาตรฐาน ANSI เพื่อให้แน่ใจ) สำหรับข้อผิดพลาดที่อยู่ด้านข้างของความระมัดระวังด้วย 255 ตัวอักษร แม้ว่าคุณจะไม่จำเป็นต้องมีที่อยู่ที่ใหญ่ แต่คุณอาจมี C / O และสิ่งต่างๆเช่นนั้น เมืองควรใหญ่มากมีชื่อเมืองยาว ๆ สำหรับรัฐไปกับตารางเด็กเช่นเดียวกับประเทศ สำหรับรหัสไปรษณีย์อย่าลืมรหัสไปรษณีย์ต่างประเทศซึ่งยาวกว่ารหัสไปรษณีย์สหรัฐฯ เพียงเพราะคุณไม่สนับสนุนระหว่างประเทศคุณยังอาจเป็น มีพลเมืองสหรัฐจำนวนมากที่อาศัยอยู่ในมณฑลต่าง ๆ รวมถึงทหาร

อย่าลืมว่ารัฐควรเป็นทางเลือกเนื่องจากหลาย ๆ ประเทศไม่มีรัฐ


ในโครงการสุดท้ายของฉันฉันพบเอกสารเกี่ยวกับมาตรฐานไปรษณีย์ระหว่างประเทศที่ระบุว่า 39 เป็นความยาวบรรทัดสูงสุด ฝรั่งเศสมีรหัสแยกต่างหากสำหรับผู้รับจำนวนมากที่อยู่หลังเมือง ฉันจะอนุญาตให้ใช้ฟิลด์รูปแบบฟรี 3 หรือ 4 ขนาดนี้บวกประเทศ
BillThor

9

ก้นของฉันกำลังเจ็บจากการนั่งบนรั้วดังนั้นฉันจะทิ้งคำตอบบางอย่างและหวังว่าจะไม่ลงคะแนนให้เป็นการให้อภัย โปรดเสนอคำวิจารณ์ที่สร้างสรรค์

ที่อยู่อีเมล:

ขั้นต่ำ: 6 (a@g.cn) หรือ 3 ถ้าคุณต้องการติดตามที่อยู่อีเมลโดเมนโลคัล
สูงสุด: 320 254 (RFC)

จำนวนรหัสที่ใช้ในการตรวจสอบความถูกต้องของอีเมลนั้นเป็นบ้าจริงดังนั้นให้สมมติว่ามันถูกต้องหากมันมี "@"

คุณอาจต้องการสรุปที่อยู่อีเมลเป็น "วิธีการสื่อสาร" เพื่อให้คุณสามารถแสดงรายการวิธีการทั้งหมดที่ใช้สื่อสารกับผู้ใช้ได้อย่างง่ายดาย

เพศ

เพศสามารถเปลี่ยนแปลงได้ตลอดเวลาดังนั้นคุณสามารถติดตามได้ว่ามันสำคัญสำหรับคุณหรือไม่ ติดตามhttp://en.wikipedia.org/wiki/ISO/IEC_5218

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

ที่อยู่: NORAM

ฉันจะเอาวิธีที่ถูกออกไปและยึดติดกับที่อยู่ในอเมริกาเหนือ

สะดวกสำหรับประเทศที่เป็นนามธรรมเขตการปกครองเมืองและมณฑลส่วนใหญ่เนื่องจากการเก็บภาษี ภาษีสามารถนำไปใช้ได้หลายระดับดังนั้นหากคุณสามารถกำหนดอัตราภาษีในพื้นที่ทางภูมิศาสตร์ที่เป็นนามธรรมคุณก็จะได้ทอง

GeographicArea :

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

ที่อยู่ :

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

เพิ่ม line2 และ line3 หากคุณต้องการ

ดูhttp://en.wikipedia.org/wiki/Address_(geography)

ตอนนี้ที่อยู่คือที่อยู่ หลายคนสามารถอาศัยอยู่ตามที่อยู่และบุคคลสามารถมีหลายที่อยู่ในเวลาเดียวกันและเมื่อเวลาผ่านไปดังนั้นคุณต้องมีหลายตารางสำหรับสิ่งนั้น

PartyAddress

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

เพิ่มfrom_dateและเป็นโมฆะto_dateถ้าติดตามในช่วงเวลา

เบอร์โทรศัพท์

บุคคลที่สามารถมีหมายเลขโทรศัพท์ได้หลายหมายเลขและสามารถใช้หมายเลขโทรศัพท์หลายคนได้ หมายเลขโทรศัพท์สามารถใช้กับแฟกซ์สายโทรศัพท์โมเด็ม ฯลฯ และสามารถมีนามสกุลได้ สิ่งเหล่านี้สามารถเปลี่ยนแปลงได้ตลอดเวลาเช่นกัน

หมายเลขโทรศัพท์

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

นาทีอาจเป็น 3 (สำหรับ "911") หรืออาจ 7 ("310-4NET" ซึ่งเป็นหมายเลขท้องถิ่นชนิดพิเศษที่ไม่อนุญาตให้คุณกดรหัสพื้นที่)

คุณสามารถแบ่งมันเป็นรหัสประเทศ ฯลฯ ได้ถ้าจำเป็น

คุณควรใช้มาตรฐานhttp://en.wikipedia.org/wiki/E.164

PartyPhoneNumber

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

ชื่อ

ชื่อนั้นยาก นี่คือเหตุผล:

  1. บางคนมีชื่อตามกฎหมายที่มีเพียงหนึ่งคำในนั้นhttp://en.wikipedia.org/wiki/List_of_legally_mononymous_people

  2. บางคนมีชื่อที่มีคำมากมายhttp://en.wikipedia.org/wiki/Wolfe%2B585,_Senior

  3. บางคนมีหลายชื่อในเวลาเดียวกัน (ตัวอย่างเช่นที่มหาวิทยาลัยของฉันมีนักเรียนชาวเอเชียจำนวนมาก แต่พวกเขาชอบใช้ชื่อที่เป็นที่นิยมมากกว่าในตะวันตก)

  4. บางครั้งคุณต้องติดตามชื่อของผู้คนเมื่อเวลาผ่านไปเช่นชื่อเดิมและชื่อที่แต่งงานแล้ว

  5. คุณต้องการให้บุคคลและองค์กรที่เป็นนามธรรมด้วยเหตุผลที่หลากหลาย

    สร้างปาร์ตี้บนโต๊ะ (คีย์หลักตัวใหญ่ id)

    สร้างตาราง party_name (รหัสคีย์หลักที่ยิ่งใหญ่, party_id bigint ไม่ใช่ null การอ้างอิงปาร์ตี้ (id), พิมพ์ smallint ไม่ใช่ null อ้างอิง party_name_type (id) - ด้าน, อดีต "หญิงสาว", "ถูกกฎหมาย");

    สร้างชื่อตารางชื่อ _component (รหัสคีย์หลัก bigserial, party_name_id ใหญ่ไม่ใช่การอ้างอิงแบบไม่ระบุชื่อ party_name (id), พิมพ์ smallint ไม่ใช่ null การอ้างอิงชื่อ _component_type (id), ชื่ออดีต - ได้รับข้อความที่ไม่ใช่โมฆะ);


3

จากมุมมองที่ต่างออกไปเล็กน้อยจากคำตอบก่อนหน้านี้และดูเหมือนว่าตกลงที่จะพูดคุยเกี่ยวกับ LDAP , RFC 4519 - "Lightweight Directory Access Protocol (LDAP): Schema สำหรับแอปพลิเคชันผู้ใช้"อาจเป็นที่สนใจ

มันอาจมีประโยชน์หากแอปพลิเคชันของคุณจำเป็นต้องแมปไปยังไดเรกทอรีดังกล่าว มิฉะนั้นอาจไม่ปรับให้เข้ากับความต้องการของคุณ

คำจำกัดความเหล่านี้เป็นมากกว่าข้อมูลเกี่ยวกับพวกเขายังเกี่ยวกับตัวดำเนินการบางอย่างที่สามารถใช้ในฟิลด์ ยกตัวอย่างเช่นเป็นpostalAddress caseIgnoreListSubstringsMatchฉันไม่ได้แนะนำว่าคุณควรทำตามสคีมานี้อย่างเคร่งครัด แต่การมองไปที่หลักการอาจน่าสนใจโดยเฉพาะอย่างยิ่งวิธีที่คุณอาจต้องเปรียบเทียบชื่อและที่อยู่ในแอปพลิเคชันของคุณอาจเกี่ยวข้องกับการออกแบบฐานข้อมูลของคุณ


3

เกี่ยวกับชื่อให้ลองใช้เครื่องหมายคำพูดคู่เพื่อไม่ให้คุณหลีกเลี่ยงเครื่องหมายอะโพสโทรฟีในชื่อไอริชหรืออิตาลี (เช่น O'Hara หรือ D'Amato)

ฉันขอแนะนำให้ใช้ชุดนิพจน์ปกติที่ดีเพื่อให้คุณสามารถส่งออกส่วนต่างๆของฟิลด์ชื่อของคุณ (เช่นชื่อแรกชื่อเล่นจูเนียร์ / อาร์ ฯลฯ )


1
หรือชื่อชาวดัตช์เช่นนามสกุลของฉัน
Colin 't Hart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.