> 데이터 베이스 > MySQL 튜토리얼 > 주소 기록 테이블의 그룹화된 행에 대한 일련 번호를 자동으로 생성하려면 어떻게 해야 합니까?

주소 기록 테이블의 그룹화된 행에 대한 일련 번호를 자동으로 생성하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-07 19:42:43
원래의
831명이 탐색했습니다.

How Can We Automatically Generate Sequential Numbers for Grouped Rows in an Address History Table?

주소 기록 테이블에서 일련번호 자동 생성

데이터베이스에서 주소 기록을 관리하려면 시간 경과에 따른 변경 사항을 추적할 수 있는 강력한 시스템이 필요합니다. 각 개인의 주소 기록에 대해 정확한 일련번호를 유지하는 것이 중요합니다.

도전:

address_history 테이블을 고려해 보세요.

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

잠재적으로 신뢰할 수 없는 자동 증가 메커니즘에 의존하지 않고 어떻게 각 sequence에 대해 1부터 시작하는 연속 person_id 번호를 자동으로 할당할 수 있습니까?

해결책:

간격이나 불일치가 발생할 수 있는 자동 증가 열에 의존하는 대신 직렬 또는 IDENTITY 열을 기본 키로 사용하고 시퀀스 번호를 동적으로 생성하는 것이 좋습니다.

<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>
로그인 후 복사

순차 번호가 필요한 쿼리의 경우 뷰를 생성할 수 있습니다.

<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>
로그인 후 복사

이 접근 방식은 기본 키(address_history_id)에 따라 정렬되는 간격 없는 순서를 보장하고 필요한 경우 순서에 유연성을 제공합니다.

모범 사례:

  • 정확한 시간 추적을 위해 TIMESTAMP WITH TIME ZONE을 사용하세요.
  • 저장만previous_address하면 데이터 효율성을 높일 수 있습니다. 원래 주소는 이전 행의 address
  • 에서 파생되는 경우가 많습니다.

이 방법은 주소 기록 테이블의 일련 번호 관리를 위한 보다 안정적이고 효율적인 솔루션을 제공합니다.

위 내용은 주소 기록 테이블의 그룹화된 행에 대한 일련 번호를 자동으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿