Saya telah membaca bahwa menggunakan OID sebagai kunci utama dalam postgreSQL / PostGIS db adalah praktik yang buruk karena ada contoh di mana ini dapat diatur ulang. Kedengarannya masuk akal, tapi lalu apa alternatif yang cocok? Saya percaya ada opsi untuk menggunakan UUID "Universal Unique Identifer", tetapi teks besar dan nilai angka yang dikeluarkan mengerikan.
Hanya sedikit lebih banyak latar belakang untuk situasi saya. Saya memiliki semua tabel spasial saya dibuat dengan bidang yang disebut "gid" yang merupakan kunci utama untuk tabel itu dan unik hanya untuk tabel itu. Saya memiliki masalah sekarang karena saya ingin menghubungkan tabel spasial saya (semua dengan bidang "gid" mulai dari 1 dan bertambah) ke satu tabel besar dengan informasi terkait. Tentunya agar hubungan saya berfungsi, semua fitur spasial saya memerlukan pengidentifikasi unik yang membedakan mereka satu sama lain.
Diedit Menambahkan gambar ini sesuai komentar Peters. Peter ini adalah ide yang ada di kepalaku, mungkin itu bukan cara terbaik untuk melakukannya atau bahkan mungkin bukan desain db yang baik. Saya tertarik dengan apa yang Anda pikirkan.
Ada tips?
I believe there is an option to use a "Universal Unique Identifer" UUID, but the large text and number value that spits out is horrible.
Mengapa bedanya seperti apa ID unik itu?Jawaban:
Aku akan membuat tabel perantara terpisah
buildings_attach
,parcels_attach
, dll Maka Anda tidak perlu pengenal global.sumber
Dua solusi:
1) Buat urutan tunggal dan buat semua tabel menggunakan urutan itu, dapat dilakukan dari awal atau Anda dapat membuat kolom ID dan memperbarui tabel Anda sekarang.
Untuk membuat urutan:
Lalu sebuah meja:
Untuk memperbarui bidang id tabel yang ada dengan ID baru (lakukan untuk semua tabel yang ingin Anda ikuti urutan yang sama):
2) Solusi lain: Buat urutan sementara dan mereka menjalankan kueri membuat kolom ID baru.
Lebih lanjut di sini: http://www.postgresql.org/docs/8.4/static/sql-createsequence.html
sumber
Opsi terbaik adalah UUID atau GUID. Mereka dibangun untuk alasan ini, unik secara global, apa pun tabelnya. Jelek? Ya tetapi mereka adalah yang terbaik untuk situasi ini.
Lihat /programming/294933/generate-unique-id-to-share-with-multiple-tables-sql-2008
Saya telah melihat metode di mana orang menggunakan data dari tabel untuk membuat ID misalnya col1 + somestring + col2, saya benar-benar akan sangat mendukung ini (lihat di sini ). ID cerdas adalah ide yang sangat buruk.
sumber
Halo
Mengapa Anda tidak mengambil id dari tabel besar dan meletakkannya di tabel spasial?
Jika satu baris dalam salah satu tabel spasial berhubungan dengan beberapa baris dalam tabel besar saya melihat masalahnya, jika tidak, id tabel besar harus cukup, atau saya kehilangan sesuatu.
/ Nicklas
sumber