Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kami Boleh Menjana Nombor Berjujukan Secara Automatik untuk Baris Dikumpulkan dalam Jadual Sejarah Alamat?
AutoMenjana Nombor Jujukan dalam Jadual Sejarah Alamat
Mengurus sejarah alamat dalam pangkalan data memerlukan sistem yang teguh untuk menjejaki perubahan dari semasa ke semasa. Mengekalkan penomboran jujukan yang tepat untuk sejarah alamat setiap individu adalah penting.
Cabaran:
Pertimbangkan address_history
jadual:
person_id | sequence | timestamp | address | original_address | previous_address |
---|---|---|---|---|---|
1 | 1 | 2023-02-01 | Address A | NULL | NULL |
1 | 2 | 2023-03-01 | Address B | Address A | NULL |
2 | 1 | 2023-04-01 | Address C | NULL | NULL |
Bagaimanakah kita boleh menetapkan nombor sequence
berjujukan secara automatik untuk setiap person_id
, bermula pada 1, tanpa bergantung pada mekanisme peningkatan automatik yang mungkin tidak boleh dipercayai?
Penyelesaian:
Daripada bergantung pada lajur peningkatan automatik yang boleh membawa kepada jurang atau ketidakkonsistenan, kami mencadangkan menggunakan lajur bersiri atau IDENTITI sebagai kunci utama dan menjana nombor jujukan secara dinamik.
<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 WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, previous_address TEXT );</code>
Untuk pertanyaan yang memerlukan nombor jujukan, paparan boleh dibuat:
<code class="language-sql">CREATE VIEW address_history_with_sequence AS SELECT *, ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY address_history_id) AS sequence FROM address_history;</code>
Pendekatan ini memastikan urutan tanpa celah, disusun mengikut kekunci utama (address_history_id
), dan memberikan fleksibiliti dalam pesanan jika perlu.
Amalan Terbaik:
TIMESTAMP WITH TIME ZONE
untuk penjejakan masa yang tepat.previous_address
boleh meningkatkan kecekapan data. Alamat asal selalunya boleh diperoleh daripada lajur address
baris sebelumnya.Kaedah ini menyediakan penyelesaian yang lebih dipercayai dan cekap untuk mengurus penomboran berjujukan dalam jadual sejarah alamat.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Menjana Nombor Berjujukan Secara Automatik untuk Baris Dikumpulkan dalam Jadual Sejarah Alamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!