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>
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>
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:
TIMESTAMP WITHOUT TIME ZONE
(atau TIMESTAMP WITH TIME ZONE
) untuk penjejakan masa yang tepat dan bukannya DATETIME
.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!