Membuat "Banyak untuk satu" spasial bergabung

10

Saya mencoba membuat apa yang saya sebut "banyak ke satu" bergabung. Saya tidak tahu apakah itu istilah yang tepat atau tidak. Saya memiliki tabel yang memiliki nomor akun unik untuk rumah mobil (mis. - M1007970) per nomor akun parsel (R0003285). (Banyak rumah mobil per paket - banyak menjadi satu.) Saya perlu menggabungkan tabel ini ke geometri paket kami - dan masih hanya memiliki satu poligon per paket.

Jadi, misalnya, tabel mungkin memiliki tiga baris yang memiliki nomor akun seluler rumah M1007370 pada satu baris, M1007371 pada yang lain, dan satu lagi dengan M1059370, tetapi semua memiliki nomor parsel yang sama R0032585. Geometri parsel kami hanya akan memiliki bidang R0032585 yang sama.

Saat bergabung, saya memiliki 12.088 catatan rumah mobil dan 44.103 paket. Jika saya "menyimpan semua catatan" Saya memiliki 44.103 catatan dengan hanya 7.947 nomor akun rumah mobil (dari yang asli 12.088). Jika saya bergabung berdasarkan "simpan hanya catatan yang cocok" saya berakhir dengan total 7.947 catatan.

Saya telah berhasil melakukannya di masa lalu dan membuat model. Dalam model ini saya menggunakan tabel untuk rumah mobil untuk bergabung ke lapisan parsel (.lyr - satu-satunya cara Anda dapat / bisa bergabung dalam model) berdasarkan nomor akun parsel. Saya menyalin fitur yang hanya menyimpan catatan yang cocok ke file geodatabase. Dari file geodatabase saya kemudian menambahkannya ke sistem SDE kami. Saat ini berhenti bekerja karena alasan yang tidak dapat saya pahami, karena tidak ada yang berubah.

Mungkin seseorang dapat menyampaikan lebih baik daripada yang saya bisa lakukan, dan jika itu disebut sesuatu selain hubungan banyak ke satu (saya tidak percaya itu satu ke banyak ...).

Evan
sumber

Jawaban:

9

Terkadang membingungkan, tetapi ini benar-benar masalah perspektif. Lihat diagram ini (dari topik ini ) untuk referensi:

Diagram hubungan

Ini adalah contoh dari lima hubungan (dan tiga kardinalitas berbeda ).

  1. Satu-ke-banyak: Paket terkait dengan tabel ParcelToOwner dalam hubungan satu-ke-banyak; satu paket mungkin memiliki banyak pemilik (kepemilikan parsial).
  2. Banyak-ke-satu: Tabel ParcelToOwner terkait dengan Paket dalam hubungan banyak-ke-satu; banyak pemilik memiliki (setidaknya beberapa persen) paket.
  3. Banyak-ke-satu: Tabel ParcelToOwner terkait dengan Pemilik dalam hubungan banyak-ke-satu; banyak paket dapat dimiliki (setidaknya sebagian) oleh satu pemilik.
  4. Satu-ke-banyak: Pemilik terkait dengan tabel ParcelToOwner dalam hubungan satu-ke-banyak; satu pemilik dapat memiliki banyak paket (sekali lagi, setidaknya sebagian)
  5. Banyak ke banyak: Paket terkait dengan Pemilik dalam hubungan banyak ke banyak; banyak paket mungkin (setidaknya sebagian) dimiliki oleh banyak pemilik, dan banyak pemilik mungkin memiliki (setidaknya sebagian) banyak paket. Ini diungkapkan melalui tabel ParcelToOwner dan hubungan yang disebutkan di atas. Sebagian besar DBMS tidak dapat mengekspresikan hubungan banyak ke banyak tanpa tabel perantara ( sumber ), oleh karena itu desain ini.

Seperti yang Anda lihat, apakah suatu hubungan itu satu-ke-banyak atau banyak-ke-satu tergantung pada bagaimana Anda melihatnya.

Semua yang dikatakan, cara termudah untuk mencapai apa yang Anda cari adalah membuat tabel permintaan yang membuat banyak bidang yang identik, satu untuk setiap rumah mobil. Lihat posting blog ini untuk detail lebih lanjut: Kiat kilat untuk melakukan bergabung 1: M

Jika semua data Anda ada dalam geodatabase perusahaan, Anda juga bisa menggunakan Query Layer untuk melakukan hal yang sama, sambil jalan (tanpa kelas fitur menengah).

blah238
sumber