Numérotation automatique des clés composées PostgreSQL : une approche simplifiée
Le suivi des changements d'adresse individuels au fil du temps nécessite un identifiant unique pour chaque changement dans l'historique d'une personne. Bien qu'il existe des schémas de numérotation automatique complexes, PostgreSQL offre une solution plus propre et plus efficace utilisant des colonnes série ou IDENTITY.
Éviter la complexité
Les méthodes traditionnelles conduisent souvent à des systèmes de numérotation complexes et sujets aux erreurs. Les fonctionnalités intégrées de PostgreSQL offrent une alternative simplifiée.
La solution recommandée : colonnes série/IDENTITÉ
Tirer parti de la colonne serial
ou IDENTITY
de PostgreSQL simplifie considérablement le processus. Cela élimine le besoin de gérer des séquences complexes.
Exemple de mise en œuvre
Voici comment implémenter cela dans un address_history
tableau :
<code class="language-sql">CREATE TABLE address_history ( address_history_id serial PRIMARY KEY, person_id int NOT NULL REFERENCES people(id), created_at timestamptz NOT NULL DEFAULT current_timestamp, previous_address text );</code>
Récupération de numéros séquentiels
Pour obtenir le numéro séquentiel de chaque changement d'adresse par personne, utilisez la fonction row_number()
fenêtre :
<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>
Cette vue remplace directement la table address_history
dans les requêtes, fournissant le numéro séquentiel (adr_nr
) pour chaque changement d'adresse.
Améliorations clés
timestamptz
(horodatage avec fuseau horaire) pour une précision et une cohérence améliorées.address
et original_address
redondantes, simplifiant ainsi la structure du tableau. Seul previous_address
est nécessaire.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!