Rumah >pangkalan data >tutorial mysql >Bagaimanakah Fungsi Tetingkap Boleh Menyelesaikan Cabaran Penomboran Bersiri dalam Kekunci Kompaun?
Mengatasi Cabaran Penomboran Bersiri dalam Kekunci Kompaun
Pengurusan pangkalan data selalunya memerlukan pemberian nombor berjujukan dalam kumpulan baris, terutamanya apabila berurusan dengan kunci kompaun. Ini boleh menjadi rumit, terutamanya apabila memastikan penomboran berjujukan merentas berbilang transaksi atau selepas pemadaman data. Mari kita periksa senario biasa: jadual sejarah alamat yang menjejaki perpindahan kediaman seseorang. Setiap entri termasuk ID orang, nombor urutan, cap masa dan butiran alamat. Matlamatnya adalah untuk menjana nombor turutan secara automatik bermula pada 1 untuk setiap orang yang unik.
Kaedah Tradisional dan Hadnya
Pendekatan tradisional, seperti lajur yang dikira atau penjana jujukan, boleh gagal. Urus niaga serentak atau pemadaman baris boleh mewujudkan jurang dalam urutan penomboran dengan mudah.
Pendekatan Unggul: Fungsi Tetingkap
Penyelesaian yang lebih mantap memanfaatkan fungsi tetingkap. Fungsi row_number()
menjana nombor jujukan dengan cekap dalam partition yang ditentukan. Dengan membahagikan berdasarkan ID orang, kami menjamin nombor urutan unik untuk setiap individu.
Melaksanakan Nombor Siri dengan row_number()
Untuk melaksanakan ini, tambahkan lajur baharu, adr_nr
, pada jadual address_history
anda. Isinya menggunakan pertanyaan ini:
<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>
Ini menjana adr_nr
untuk setiap baris, dengan mengambil kira person_id
dan kedudukannya dalam partition person_id
itu. Ini memastikan nombor siri unik tanpa mengira perubahan susunan baris.
Amalan Terbaik untuk Integriti Data
Selain penomboran, ingat amalan terbaik ini:
timestamp
atau timestamptz
).original_address
jika ia boleh diterbitkan daripada medan sedia ada.Atas ialah kandungan terperinci Bagaimanakah Fungsi Tetingkap Boleh Menyelesaikan Cabaran Penomboran Bersiri dalam Kekunci Kompaun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!