Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menjana Nombor Siri Unik dengan Cekap untuk Perubahan Alamat dalam Kumpulan Orang dalam Pangkalan Data?

Bagaimanakah Saya Boleh Menjana Nombor Siri Unik dengan Cekap untuk Perubahan Alamat dalam Kumpulan Orang dalam Pangkalan Data?

Patricia Arquette
Lepaskan: 2025-01-07 19:36:42
asal
938 orang telah melayarinya

How Can I Efficiently Generate Unique Serial Numbers for Address Changes within Person Groups in a Database?

Memperkemas Penjejakan Perubahan Alamat dengan Nombor Siri Pangkalan Data

Menguruskan perubahan alamat dalam pangkalan data selalunya memerlukan jadual sejarah untuk merekodkan setiap pengubahsuaian. Jadual ini biasanya termasuk ID orang, nombor urutan untuk setiap perubahan alamat, cap masa dan alamat sebelumnya. Walau bagaimanapun, penambahan nombor urutan setiap orang secara automatik boleh menjadi sangat rumit.

Memudahkan Pendekatan: Elakkan Kekangan Peningkatan Auto

Daripada menggunakan urutan atau kekangan penambahan automatik—yang selalunya membawa kepada penyelesaian yang berbelit-belit—kaedah yang lebih mudah melibatkan siri standard (autokenaikan) atau lajur IDENTITI:

<code class="language-sql">CREATE TABLE address_history (
  address_history_id serial PRIMARY KEY,
  person_id INT NOT NULL REFERENCES people(id),
  created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  previous_address TEXT
);</code>
Salin selepas log masuk

Menjana Nombor Siri dengan Fungsi Tetingkap

Dengan struktur jadual ini, fungsi tetingkap menawarkan penyelesaian yang elegan untuk menjana nombor berjujukan untuk setiap orang tanpa jurang:

<code class="language-sql">CREATE VIEW address_history_nr AS
SELECT *, ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY address_history_id) AS adr_nr
FROM address_history;</code>
Salin selepas log masuk

Paparan ini bertindak sebagai pengganti langsung untuk jadual asal, memberikan nombor siri yang dikehendaki (adr_nr) dalam pertanyaan anda.

Pengoptimuman Model Data untuk Kecekapan

Untuk prestasi optimum, pertimbangkan penambahbaikan model data ini:

  • Gunakan TIMESTAMP WITHOUT TIME ZONE (atau TIMESTAMP WITH TIME ZONE) untuk penjejakan masa yang tepat dan bukannya DATETIME.
  • Meminimumkan storan data; medan previous_address sudah memadai, menghapuskan keperluan untuk lajur address dan original_address yang berasingan. Ini mengurangkan ruang storan dan meningkatkan kelajuan pertanyaan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nombor Siri Unik dengan Cekap untuk Perubahan Alamat dalam Kumpulan Orang dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan