@Dano ยกประเด็นบางประเด็นที่แก้ไขได้ดีที่สุดในการตอบกลับแบบเต็ม
ปัญหาหนึ่งที่ @Celenius จดไว้แล้วคือการรวมกันระหว่าง B และ A (ในทิศทางใดทิศทางหนึ่ง) จะทำซ้ำฟิลด์ทั้งหมด มันอาจเป็นเรื่องยากที่จะแก้ไขสิ่งนี้ ฉันได้แนะนำในความคิดเห็นว่าวิธีง่าย ๆ ที่ชัดเจน (ส่งออกไปยังสเปรดชีต) ทำให้เกิดคำถามเกี่ยวกับความถูกต้องของข้อมูล ปัญหาอีกประการหนึ่งที่ได้รับการเสนอโดย Celenius แล้วข้อกังวลเกี่ยวกับการแก้ปัญหานี้เมื่อไม่มีการรวมกันของคุณลักษณะที่สามารถทำหน้าที่เป็นกุญแจสำคัญสำหรับทั้ง A และ B เพราะที่จรรยาบรรณเข้าร่วมฐานข้อมูล การรวมเชิงพื้นที่จะช่วยแก้ปัญหานั้นได้
อะไรคือทางออกที่ดี? วิธีการหนึ่งใช้ A เพื่อระบุระเบียนที่เกี่ยวข้องของ B ที่มีข้อมูลที่ต้องการ ขึ้นอยู่กับสมมติฐานเกี่ยวกับการกำหนดค่าของรูปหลายเหลี่ยม - ไม่ว่าจะทับซ้อนกันหรือไม่บางคนสามารถมีคนอื่น ๆ ฯลฯ - สิ่งนี้สามารถดำเนินการได้หลายวิธี: การใช้ชั้นหนึ่งเพื่อเลือกวัตถุในอื่น ๆ หรือผ่านการรวม จุดนี่คือสิ่งที่เราต้องการทำในขั้นตอนนี้คือเลือกเซตย่อยของ B ที่สอดคล้องกับ A
หลังจากประสบความสำเร็จเลือกที่ส่งออกเลือกและปล่อยให้มันเข้ามาแทนที่เอ เสร็จสิ้น
วิธีแก้ปัญหานี้อนุมานว่าเขตข้อมูลทั้งหมดใน B มีวัตถุประสงค์เพื่อแทนที่คู่ของพวกเขาใน A หากไม่จำเป็นต้องดำเนินการรวม 1-1 ของ B (แหล่งที่มา) เป็น A (ปลายทาง) เข้าร่วมขึ้นอยู่กับตัวบ่งชี้ที่ดีที่สุดคือ แต่ทำให้การเข้าร่วมในตัวตนของรูปหลายเหลี่ยม (Celenius) ทำงานได้ดีหากมี ID ที่ไม่พร้อมใช้งานและมีโอกาสรูปร่างรูปหลายเหลี่ยมใน A และ B ที่สอดคล้องกันอาจแตกต่างกันไม่มี แต่เล็กน้อย (นี่คือจุดที่บอบบางและสาเหตุที่เป็นไปได้ของข้อผิดพลาดร้ายกาจเนื่องจากการแก้ไขก่อนหน้านี้ใน B เป็นรูปหลายเหลี่ยมที่ไม่สอดคล้องกับ A ยังคงสามารถแก้ไขรูปหลายเหลี่ยมอื่น ๆ ใน B ถ้า GIS คือ "snapping" หรือ "การบำรุงรักษาโครงสร้าง" หรือทำการเปลี่ยนแปลงทั่วโลกโดยอัตโนมัติระหว่างการแก้ไขในเครื่อง)
ในช่วงหัวเลี้ยวหัวต่อนี้มีสำเนาของทุกฟิลด์สองชุด: ถ้า [Foo] เป็นเขตข้อมูลร่วมไปยัง A และ B ดังนั้นการรวมจะมี A. [Foo] และ B [Foo] ใช้การคำนวณภาคสนามคัดลอก B. [Foo] ลงใน A. [Foo] ทำซ้ำสำหรับฟิลด์ที่จำเป็นทั้งหมด หลังจากเสร็จสิ้นให้ลบการเข้าร่วม
แม้ว่าขั้นตอนนี้จะค่อนข้างยุ่งยากเมื่อมีหลายเขตข้อมูลที่เกี่ยวข้องข้อดีของมันรวมถึง
- มันตรงไปตรงมาและรวดเร็วในการเขียนสคริปต์
- การเขียนสคริปต์จะทำให้หลักฐานการตรวจสอบบันทึกการดำเนินการกับข้อมูล นี่เป็นสิ่งสำคัญสำหรับการปกป้องความถูกต้องของข้อมูล
- มันจะป้องกันข้อผิดพลาดขายส่งบางชนิดเช่นการเก็บฟิลด์ที่ไม่ถูกต้องหลังจากการเข้าร่วม (ดังนั้นการเก็บข้อมูลเก่าแทนที่จะเป็นข้อมูลใหม่สำหรับฟิลด์นั้น) หรือการลบฟิลด์ที่สำคัญ
- มันใช้ประโยชน์จากการป้องกันในตัวที่นำเสนอโดยระบบการจัดการฐานข้อมูลเช่นการบังคับใช้ประเภทข้อมูลและการบังคับใช้กฎเกณฑ์ทางธุรกิจที่ดำเนินการเพื่อป้องกันและระบุข้อผิดพลาดและเพื่อรักษาความมั่นคงในตารางและเลเยอร์ทั้งหมดในฐานข้อมูล
หลักการชี้นำบางประการที่เกี่ยวข้องในข้อเสนอแนะนี้คือ
- ใช้ระบบการจัดการฐานข้อมูลของคุณเพื่อประมวลผลข้อมูลแทนที่จะใช้ซอฟต์แวร์ที่ไม่ได้ออกแบบหรือไม่เหมาะกับงานนี้
- หลีกเลี่ยงการเปลี่ยนโครงสร้างฐานข้อมูล (เช่นการลบหรือเพิ่มเขตข้อมูล) เมื่อการดำเนินการไม่ต้องการอย่างแน่นอน
- ใช้ความสามารถของซอฟต์แวร์สำหรับระบบอัตโนมัติเพื่อทำให้งานเอกสารและทำให้การทำงานง่ายขึ้น
หนึ่งอาจคัดค้านว่าในหลายกรณีมีวิธีที่เร็วและง่ายกว่าในการเข้าถึงผลลัพธ์เดียวกัน ใช่สามารถมีได้และพวกเขาจะมีประสิทธิภาพและมักจะทำงานเมื่อดำเนินการด้วยความระมัดระวัง แต่โซลูชันที่เสี่ยงต่อข้อมูลนั้นยากที่จะแนะนำและป้องกันตามคำตอบที่มีวัตถุประสงค์ทั่วไป พวกเขาจะถูกจ้างอย่างดีที่สุดในสถานการณ์แบบครั้งเดียวที่มีชุดข้อมูลขนาดเล็กซึ่งการทุจริตในข้อมูลควรชัดเจนอย่างรวดเร็วและผลที่ตามมาจากข้อผิดพลาดใด ๆ