Automatische Generierung fortlaufender Nummern in Adressverlaufstabellen
Die Verwaltung des Adressverlaufs in Datenbanken erfordert ein robustes System zur Verfolgung von Änderungen im Laufe der Zeit. Die Aufrechterhaltung einer genauen fortlaufenden Nummerierung für den Adressverlauf jeder Person ist von entscheidender Bedeutung.
Die Herausforderung:
Stellen Sie sich eine address_history
Tabelle vor:
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 |
Wie können wir jedem sequence
automatisch fortlaufende person_id
Nummern zuweisen, beginnend bei 1, ohne auf potenziell unzuverlässige Mechanismen zur automatischen Inkrementierung angewiesen zu sein?
Lösung:
Anstatt sich auf automatisch inkrementierende Spalten zu verlassen, die zu Lücken oder Inkonsistenzen führen können, schlagen wir vor, eine Serien- oder IDENTITY-Spalte als Primärschlüssel zu verwenden und die Sequenznummer dynamisch zu generieren.
<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>
Für Abfragen, die die fortlaufende Nummer erfordern, kann eine Ansicht erstellt werden:
<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>
Dieser Ansatz gewährleistet eine lückenlose Reihenfolge, geordnet nach dem Primärschlüssel (address_history_id
) und bietet bei Bedarf Flexibilität bei der Reihenfolge.
Best Practices:
TIMESTAMP WITH TIME ZONE
für eine genaue Zeiterfassung.previous_address
kann die Dateneffizienz verbessern. Die ursprüngliche Adresse kann häufig aus der Spalte address
der vorherigen Zeile abgeleitet werden.Diese Methode bietet eine zuverlässigere und effizientere Lösung für die Verwaltung der fortlaufenden Nummerierung in Adressverlaufstabellen.
Das obige ist der detaillierte Inhalt vonWie können wir automatisch fortlaufende Nummern für gruppierte Zeilen in einer Adressverlaufstabelle generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!