ปัญหาใดที่แก้ไขได้โดยแยกที่อยู่เป็นคอลัมน์แต่ละคอลัมน์


24

เรามีทีมงานที่ออกแบบตารางและความสัมพันธ์สำหรับนักพัฒนาซอฟต์แวร์ ในองค์กรของเราพวกเขาค่อนข้างเข้มงวดเกี่ยวกับการบังคับใช้มาตรฐาน 3NF ซึ่งโดยความจริงแล้วฉันเห็นด้วยกับขนาดองค์กรของเราและความต้องการหรือลูกค้าของเราเปลี่ยนแปลงไปตามกาลเวลาอย่างไร มีเพียงส่วนเดียวที่ฉันไม่ชัดเจนเกี่ยวกับเหตุผลที่อยู่เบื้องหลังการตัดสินใจออกแบบ: ที่อยู่

แม้ว่าสิ่งนี้จะเน้นที่ที่อยู่ในสหรัฐอเมริกาเป็นส่วนใหญ่ แต่ฉันคิดว่าสิ่งนี้สามารถใช้ได้กับทุกประเทศที่ทำสิ่งนี้ ที่อยู่แต่ละส่วนจะได้รับคอลัมน์ของตนเองในตารางที่อยู่ ตัวอย่างเช่นใช้ที่อยู่ gnarly US นี้:

Attn: Jane Doe
485 1/2 N Smith St SW, APT 300B
Chicago, IL 11111-2222

มันจะถูกแยกย่อยในฐานข้อมูลดังนี้:

  • ถนนหมายเลข: 485
  • เศษถนน: 1/2
  • ทิศทางก่อนถนน: N (เหนือ)
  • ชื่อถนน: Smith
  • ประเภทถนน: ST (ถนน)
  • ทิศทางหลังถนน: SW (ตะวันตกเฉียงใต้)
  • เมือง: ชิคาโก
  • รัฐ: IL (อิลลินอยส์)
  • รหัสไปรษณีย์: 11111
  • รหัสไปรษณีย์ 42222
  • ประเทศ (สันนิษฐานว่าเป็นสหรัฐอเมริกา)
  • เรียน Jane Doe
  • ตู้ป ณ .: NULL
  • ประเภทที่อยู่อาศัย: APT (อพาร์ตเมนต์)
  • จำนวนที่อยู่อาศัย: 300B

และจะมีคอลัมน์อื่นอีกสองสามคอลัมน์ที่เกี่ยวข้องกับเส้นทางชนบทและเส้นทางสัญญา นอกจากนี้แอปพลิเคชันเฉพาะของเราอาจมีที่อยู่ต่างประเทศไม่กี่แห่ง ผู้สร้างโมเดลข้อมูลกล่าวว่าพวกเขาจะเพิ่มคอลัมน์เฉพาะสำหรับที่อยู่ต่างประเทศซึ่งจะเป็นบรรทัดปกติ 1, ฟิลด์ 2 ของบรรทัด

ตอนแรกฉันคิดว่านี่เป็นวิธีลงน้ำ การค้นคว้าออนไลน์ซ้ำ ๆ หมายถึงการใช้ที่อยู่บรรทัดที่ 1, 2, 3 และอาจเป็น 4 จากนั้นแยกเมืองภูมิภาคและรหัสไปรษณีย์ เรามีกรณีการใช้งานหนึ่งกรณีสำหรับแอปพลิเคชันใหม่ของเราซึ่งมีความละเอียดเป็นประโยชน์ เราต้องตรวจสอบว่าผู้ใช้ไม่ได้สร้างธุรกิจซ้ำและการตรวจสอบที่อยู่นั้นเป็นหนึ่งในการตรวจสอบความถูกต้อง เราสามารถทำให้มันทำงานกับที่อยู่บรรทัดที่ 1 และ 2 แต่มันจะยากขึ้น

สำหรับแอปพลิเคชันเฉพาะของเราเราจำเป็นต้องจัดเก็บที่อยู่หลายประเภทสำหรับธุรกิจและผู้คน (ทางกายภาพการส่งจดหมายการจัดส่งและอื่น ๆ ) เราอาจต้องสร้างจดหมายฟอร์มที่พิมพ์ได้ แต่ความต้องการนั้นยังไม่ได้รับการกล่าวถึง

แอปพลิเคชั่นอื่น ๆ บางอย่างในองค์กรของเราต้องการการสนับสนุน:

  • การตรวจสอบ (พร้อมตารางประวัติเต็มรูปแบบ)
  • การพิมพ์ป้ายผนึกจดหมาย
  • การสร้างแบบฟอร์มที่พิมพ์
  • การรายงาน (สำหรับรัฐบาลระดับชาติและระดับภูมิภาค)

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

คำถาม StackOverflow กึ่งที่เกี่ยวข้อง: ตัวแยกวิเคราะห์ที่อยู่ที่ดีซึ่งถูกปิดอยู่ที่ไหนแต่แสดงให้เห็นว่าที่อยู่การแยกวิเคราะห์ทำได้ยากเพียงใด

เพื่อให้ฉันเข้าใจการตัดสินใจในการออกแบบของพวกเขาดีขึ้นและเพื่อขายลูกค้าของเราบนแนวคิด ...

ปัญหาใดที่แก้ไขได้โดยแยกที่อยู่ออกเป็นคอลัมน์แต่ละคอลัมน์

คะแนนโบนัสสำหรับทุกคนที่ใช้ระบบเช่นนี้เพราะพบปัญหา


1
และโปรดทราบว่าที่อยู่บางรายการยังไม่พอดีกับแม่แบบของคุณ - ฉันเคยเห็นที่อยู่จริงตามแนว "ลงถนนจากโรงงานปูนซิเมนต์" จากประเทศกำลังพัฒนา
duskwuff

1
@duskwuff: ฉันนำมาให้พวกเขาและนั่นเป็นเหตุผลที่พวกเขาเพิ่ม "ที่อยู่ระหว่างประเทศ" - line_1, line_2, line_3 พวกเขาต้องการแยกที่อยู่ในสหรัฐอเมริกาออกจริงๆ และเพื่อความยุติธรรม> 90% ของที่อยู่ในแอปพลิเคชันเหล่านี้คือที่อยู่ในสหรัฐอเมริกา แต่ฉันเข้าใจว่าคุณมาจากไหน
Greg Burghardt

คำตอบ:


10

ปัญหาที่สามารถแก้ไขได้โดยแยกรวมถึง

การตรวจสอบความถูกต้องส่วนใดส่วนหนึ่งของชื่อสามารถเปรียบเทียบกับรายการหลัก ผู้ที่ไม่ตรงกันสามารถถูกปฏิเสธได้ รหัสไปรษณีย์ / zipcode เป็นตัวอย่างที่ชัดเจน สิ่งเหล่านี้ออกและดูแลโดยหน่วยงานอิสระ สิ่งที่ถูกต้องเพียงอย่างเดียวคือสิ่งที่ออกโดยหน่วยงานผู้มีอำนาจนั้น

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

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

การทำสำเนารหัสโดยการมีแอพพลิเคชั่นทั้งหมดในองค์กรใช้โมเดลข้อมูลเดียวกัน (ของผู้บริโภคที่มีความซับซ้อนมากที่สุด) ทำให้สามารถใช้รหัสฐานเดียวได้ทั่วทั้งองค์กรและดูแลรักษาอย่างสม่ำเสมอ สามารถหลีกเลี่ยงการแยกผมซ้ำที่ไม่มีที่สิ้นสุดหรืออย่างน้อยได้รับการแต่งตั้งให้กับใบพัด ที่อยู่ที่จัดขึ้นโดยส่วนต่าง ๆ ขององค์กรสามารถอัปเดตอย่างสม่ำเสมอ การบริการลูกค้าและความพึงพอใจสามารถเพิ่มขึ้นได้ ความพยายามในการพัฒนาสามารถมุ่งเน้นไปที่ชิ้นส่วนที่มีมูลค่าสูงและเป็นเอกลักษณ์ของระบบ

ประเด็นทางกฎหมายกฎหมายและภาษีแตกต่างกันไปตามเขตอำนาจ โดยการจับภาพค่าที่อยู่โดยละเอียดแยกต่างหากจะทำให้ง่ายขึ้นในการอ้างอิงข้อมูลธุรกรรมข้ามตามข้อกำหนด

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

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

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

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


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

17

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

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

ในสเปนหมายเลขถนนมักจะตามหลังชื่อถนนและเครื่องหมายจุลภาคและที่อยู่หลายแห่งมีเลขลำดับพื้นเช่น 1 °หรือ3ªพร้อมด้วยตัวย่อสำหรับ "ซ้าย" ("Izda" หมายถึงประตูซ้ายมือหลัง คุณขึ้นบันได), "ถูกต้อง" ("Dcha") หรือความเป็นไปได้อื่น ๆ ตอนนี้คูณความโวหารที่ตามจำนวนประเทศและพื้นที่ต่าง ๆ ที่มีประเพณีทางประวัติศาสตร์ที่แตกต่างกันสำหรับที่อยู่ ... (ญี่ปุ่น? อังกฤษชนบทเกาหลีเกาหลีจีน)

ในพอร์ตแลนด์หรือมีแกน NS และ EW ที่แบ่งเมืองออกเป็น NW, NE, SW และ SE (รวมถึง N "Quadrant" แต่ฉันพูดนอกเรื่อง) ถนน NS จะมีหมายเลขเพิ่มขึ้นตะวันออกและตะวันตกจากแกนนี้และที่อยู่บนถนน EW ถูกกำหนดโดยหมายเลขถนน NS เป็น "ร้อยบล็อก" ของตัวเลข (เช่นบ้านบนถนน EW ระหว่างถนนที่ 11 ถึง 12 จะมีหมายเลข เช่น 1123) เนื้อหามาตรฐานสวยสำหรับที่อยู่ในสหรัฐอเมริกา

ดังนั้นทุกครั้งที่คุณใช้เป็นที่อยู่ในพอร์ตแลนด์เช่น0205 SW เนบราสก้าเซนต์ ศูนย์ชั้นนำ? WTF? มีintegerคอลัมน์ของฉันสำหรับบ้าน "หมายเลข"

เมื่อตั้งค่ากริดแกน NS ถูกกำหนดโดยแม่น้ำ Willamette ทุกสิ่งไปทางตะวันออกของแม่น้ำคือ NE หรือ SE และทางตะวันตกของแม่น้ำ NW หรือ SW ในขณะที่เมืองขยายตัวทางทิศใต้พวกเขาวิ่งเข้าไปในความจริงที่ไม่สะดวกที่แม่น้ำไหลไปทางทิศตะวันออกดังนั้นการฉายภาพแกนใต้คุณมีพื้นที่ที่มีปัญหานี้ซึ่งอยู่ทางด้าน "ตะวันตก" ของแม่น้ำ แต่ทางตะวันออกของแกน การแก้ปัญหาคือการเพิ่มศูนย์นำหน้าซึ่งมีผลเป็นสัญญาณลบโดยตัวเลขจะเพิ่มขึ้นทางทิศตะวันออกจากเส้นแกน

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

สำหรับที่อยู่ที่สหรัฐจะดูที่ว่า USPS ได้ทำมาแล้วในมาตรฐานที่อยู่และอย่าลืมที่จะทำให้คอลัมน์house_number varcharในขณะที่คุณกำลังที่จะคิดออกว่าคุณกำลังจะแยก1634 EN ฟอร์ตเลน Ave

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

ฉันจะบอกว่าเขตข้อมูลที่สำคัญที่สุดจะเป็นรหัสไปรษณีย์ แต่แม้จะไม่ได้รับในหลายสถานที่

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


ติดตามที่น่าสนใจสำหรับการ zeroes ชั้นนำในจำนวนสถานที่: องค์ประกอบจำนวน HTML INPUT จะโพสต์ชั้นนำ zeroes <input type="number">กลับไปยังเซิร์ฟเวอร์: ฉันกลัวว่ามันจะไม่เกิดขึ้น (อย่างน้อยก็ทำใน Firefox แต่อย่างใด)
Greg Burghardt

เหตุใดจึงเป็นประโยชน์ในการแยกเลย สิ่งที่เกี่ยวกับเพียงแค่ให้ "สาย" 3 สายสำหรับที่อยู่?
usr

และยังมีแพทเทิร์น137 SE Chestnut Ave SW ที่เหมือนกันจาก IN ถึง WI
Ross Presser

@usr ไม่ใช่ทุกที่อยู่พอดีในสามบรรทัด - เพียงแค่ใช้varcharและฟิลด์ข้อความหลายบรรทัดที่มีรูปแบบอิสระแล้ว!
user253751

ฉัน จำกัด ตัวเองเป็นสองตัวอย่าง แต่ยังมีอีกมากมาย 22 Essex House, จัตุรัส Portman, ลอนดอน NW1 "22" เป็นหมายเลขอพาร์ตเมนต์
Jim Garrison

8

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

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

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

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

ปัญหาอื่น ๆ ที่อาจเกิดขึ้นคือบริการไปรษณีย์ที่แตกต่างกันต้องการข้อมูลเดียวกันเพื่อแสดงในรูปแบบ / คำสั่ง / ฯลฯ ดังนั้นการจำลองชิ้นส่วนจึงรองรับการนำเสนอข้อมูลเดียวกันในรูปแบบและเค้าโครงที่หลากหลาย

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

ฉันขอแนะนำงานเขียนและบล็อกโดย Graham Rhind เขาเป็นผู้เชี่ยวชาญในสาขาข้อมูลเกี่ยวกับที่อยู่ทุกชนิดและการแลกเปลี่ยนที่เกี่ยวข้องกับพวกเขา


* ทั้งหมดที่ฉันพูดที่นี่เป็นลักษณะทั่วไป มีคำถามมากมายที่ฉันต้องช่วยแก้ปัญหาด้านการออกแบบซึ่งอาจใช้เวลาในการแชทไม่กี่ชั่วโมง มีแนวโน้มที่จะมีรูปภาพและข้อมูลบางส่วนเช่นกัน และจากนั้นมีข้อมูลแปลก ๆ มากมายเกี่ยวกับที่อยู่


"คุณไม่จำเป็นต้องมีการดำเนินธุรกิจระหว่างประเทศเพื่อสนับสนุนข้อมูลระหว่างประเทศ" - จริงมาก และเหนือสิ่งอื่นใดเราตั้งอยู่ใกล้ชายแดนของประเทศอื่น ทีมการสร้างแบบจำลองไม่ได้ให้วิธีแก้ปัญหาสำหรับที่อยู่ต่างประเทศซึ่งจะให้เขตข้อมูลบรรทัดที่ 1, 2 และ 3 ในฐานข้อมูล
Greg Burghardt

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

5

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

ที่อยู่คืออะไร? คุณสามารถทำให้เป็นกรณีที่ดีว่ามันเป็นตัวระบุสถานที่ แต่คุณสามารถทำให้เป็นกรณีที่ดีพอ ๆ กันกับคำแนะนำในการส่ง - "เดินไปตามถนนจากโรงงานปูนซีเมนต์" ในออสเตรเลียผู้คนคิดว่ารหัสไปรษณีย์เป็นตัวระบุตำแหน่งที่ตั้ง แต่ไม่ใช่รหัสการกำหนดเส้นทาง - คำแนะนำในการส่ง 4702 คือ Rockhampton Mail Center ซึ่งเป็นโหนดการกระจายสินค้าที่สำคัญซึ่งให้บริการในภูมิภาคที่ทอดยาวจากทะเลไปยัง Emerald ซึ่งเป็นเมืองเหมืองแร่ที่อยู่ห่างออกไป 300 กิโลเมตร

หากคุณต้องการระบุตำแหน่ง Bing และ Google สามารถเข้ารหัสภูมิศาสตร์จากสตริงที่ไม่ได้แยกวิเคราะห์ลงในพิกัด GPS ซึ่งสามารถเก็บไว้ในตารางขนาดเล็กที่เรียบง่ายพร้อมกับสตริงที่ไม่ได้แยกวิเคราะห์ พวกเขาใช้วิธีการทั่วไปเท่านั้นที่มีโอกาสได้ผลลัพธ์ที่ดีอย่างต่อเนื่อง: จัดอันดับการจับคู่บางส่วนที่ถ่วงน้ำหนักพร้อมฐานข้อมูลขนาดมหึมาของผลลัพธ์ที่ตรวจสอบแล้ว

หากคุณต้องการคำแนะนำการส่งมอบคุณยังคงได้รับคำแนะนำที่ดีเพื่อให้สตริง unparsed เพราะมันอาจมีอะไร

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

  • มันมีประโยชน์ในสิทธิของตนเอง
  • วันหนึ่งคุณจะรู้วิธีแยกวิเคราะห์
  • สองสามวันหลังจากนั้นคุณจะทราบวิธีแยกวิเคราะห์อย่างถูกต้อง
  • สิ่งนี้ไม่สิ้นสุด

เนื้อหาที่อยู่นั้นเป็นคำแนะนำในการจัดส่งเสมอโดยมีตัวระบุตำแหน่งอย่างน้อยหนึ่งตัว จดหมายจ่าหน้าถึง "123 Main st, Emerald 4702" เข้ารหัสสามตำแหน่ง: RMC ทางตอนเหนือของ Rockhampton, Emerald และที่อยู่ถนน ที่ทำการไปรษณีย์ของ Rockhampton จะส่งไปที่ RMC RMC จะส่งไปที่ที่ทำการไปรษณีย์ Emerald และที่ทำการไปรษณีย์ Emerald หวังว่าจะรู้ว่าจะหา 123 ถนนสายหลักได้ที่ไหน


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

3

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


3

การแยกรหัสไปรษณีย์ / รหัสไปรษณีย์ชื่ออาคารชื่อถนนออกมาสมเหตุสมผล แต่เมื่อคุณเริ่มเพิ่ม "เมือง", "พื้นที่" ฯลฯ มันน่าสงสัยเมื่อเทียบกับแค่บรรทัด 1, บรรทัด 2 ฯลฯ ปัญหาคือแม้ฉันและภรรยาของฉันไม่สามารถตกลงในชื่อของเมืองที่เราอาศัยอยู่! ชื่อ "หมู่บ้าน" ที่จะใส่ในเขตเมืองหรือไม่หรือมันจะอยู่ในบรรทัดด้านล่างชื่อถนนกับเมืองท้องถิ่นที่ถูกใส่ในเขตเมือง? (บางคนรู้สึกขุ่นเคืองถ้าคุณโทรหาที่พวกเขาอาศัยอยู่หมู่บ้านแทนเมืองคนอื่นที่อาศัยอยู่ในสถานที่เดียวกันจะโกรธเคืองถ้าคุณเรียกมันว่าเมืองแทนที่จะเป็นหมู่บ้าน!)

ดังนั้นการพยายามทำสิ่งที่แฟนซีไม่ได้ดีไปกว่าระบบการยืนยันที่อยู่ที่คุณใช้ แต่มันยิ่งแย่ลงไปอีก ในสหราชอาณาจักรที่อยู่ทั้งหมดควรมีรหัสโพสต์ แต่ยังไม่มีการจัดสรรรหัสไปรษณีย์จนกว่าจะมีการสร้างบ้านหลังหนึ่ง…ดังนั้นระบบจะต้องอนุญาตให้ทุกกฎเกี่ยวกับที่อยู่เสีย!


2
Amazon.uk มีระบบที่ดีที่สุดที่ฉันเคยเห็นเมื่อฉันพิมพ์ที่อยู่พวกเขาให้ตัวเลือกการใช้ที่อยู่ "ที่ได้รับการอนุมัติ" กับการแข่งขันที่ดีที่สุด อย่างไรก็ตามบ่อยครั้งที่ที่อยู่ที่ได้รับการอนุมัตินั้นมีไว้สำหรับ บริษัท ต่าง ๆ ในอาคารหรือไม่รวม "พื้น" ฯลฯ เนื่องจากที่ทำการไปรษณีย์เท่านั้นที่ใส่ใจเกี่ยวกับกล่องจดหมายคือไม่ใช้สิ่งที่จะลงนาม
Ian Ringrose

2

นอกจากปัญหาที่กล่าวถึงแล้วในคำตอบอื่น ๆ ในบางภาษา - ภาษาเยอรมันโดยเฉพาะ - ชื่อถนนมีแนวโน้มที่จะรวม ตัวอย่างเช่นเป็นเรื่องธรรมดาในเมือง / เมืองใหญ่ของเยอรมันที่มี "Bahnhofstrasse" ถนนที่ไปยังสถานีรถไฟ ("Bahnhof" หมายถึงสถานีรถไฟ / รถไฟ "Strasse" หมายถึงถนน) แน่นอนว่าคุณสามารถแยกองค์ประกอบทั้งสองนี้ออกได้ แต่ตอนนี้ถ้าคุณต้องการที่จะนำมันกลับมารวมกัน (โดยทางโปรแกรม) คุณกำลังมีปัญหาเรื่องความเสื่อม

หรือในภาษา "romance" หรือ Latinate คุณมักจะมีชื่อถนนของรูปแบบ "Rue de la Pais" หรือ "Boulevard des Champs-Élysées" ตอนนี้คุณมีคำบุพบท ("de") และบทความที่ชัดเจน ("le" หรือ "la") ในการผสม - และอาจรวมเข้าด้วยกัน พวกเขาเป็นตัวแทนของประเภทถนนหรือชื่อถนนหรือไม่? (คุณอาจต้องเก็บมันไว้ที่ไหนสักแห่งไม่เช่นนั้นคุณจะตกต่ำอีกครั้ง)


ฉันเคยทำแบบจำลองบางอย่างเช่นนี้ แต่มันเป็นแอปพลิเคชั่นขนาดเล็กมากสำหรับสำนักงานบำรุงรักษาที่พักอาศัยของมหาวิทยาลัยขนาดกลาง (ในสหรัฐอเมริกา) ฉันได้ทำให้ที่อยู่มีความละเอียดมากด้วยเหตุผลดังต่อไปนี้:

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

... และเหตุผลอื่น ๆ ที่ฉันจำไม่ได้อีกต่อไป (นี่คือในช่วงปลายทศวรรษ 1980)

และอีกครั้งสิ่งนี้เหมาะสมเท่านั้นเนื่องจากมีที่อยู่จำนวนน้อยพอสมควร (และกฎการจัดรูปแบบที่อยู่) เพื่อจัดการกับ ฉันไม่เชื่อว่าวิธีการนี้จะเพิ่มขนาดแม้ว่าจะ จำกัด อยู่เฉพาะในสหรัฐอเมริกาด้วยเหตุผลที่ให้ไว้ในคำตอบอื่น ๆ


1
ตัวอย่างของคุณในปี 1980 เป็นตัวอย่างที่ยอดเยี่ยมของประเด็นของฉันเกี่ยวกับการแยกวิเคราะห์มิติที่คุณต้องการจัดการและ "... เก็บไว้หรือคุณกำลังตกต่ำ" เป็นตัวอย่างที่ดีว่าทำไมจึงจำเป็นต้องเก็บข้อความต้นฉบับไว้ มันมีสิ่งที่ไม่สามารถใช้งานได้ทุกประเภทอย่างหลีกเลี่ยงไม่ได้ซึ่งจะต้องได้รับการเก็บรักษาไว้ และการพูดถึงสิ่งที่ไม่เกี่ยวข้อง แต่น่าสนใจถนนหมายถึง "ทางเดินที่สร้างขึ้นบนกำแพงป้องกันที่พังยับเยิน"
Peter Wone
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.