컨텐츠로 건너뛰기

호실 소유주 변경 처리 방안

본 문서는 건물 관리 시스템에서 매매, 증여 등으로 인해 특정 호실의 소유주(임대인)가 변경되었을 때, 데이터의 정합성을 유지하며 소유권 이전 내역을 정확하게 관리하는 시스템 설계 및 업무 처리 방안을 정의합니다.

2. 핵심 원칙: “이력 추적 및 유효일자 기반 관리”

Section titled “2. 핵심 원칙: “이력 추적 및 유효일자 기반 관리””

소유주 변경을 처리하는 데 있어 가장 중요한 원칙은 다음과 같습니다.

  1. 비파괴적 이력 관리 (Non-Destructive History): 과거의 소유주 기록을 덮어쓰거나 삭제하지 않습니다. 모든 소유권 변경은 새로운 이력으로 누적되어, 언제든 과거의 소유주를 추적할 수 있어야 합니다.
  2. 유효일자(Effective Date) 기준: 소유권 변경은 즉시 모든 과거에 영향을 미치는 것이 아니라, 계약서상의 명의 이전일 등 **특정 ‘유효일자’**를 기준으로 적용되어야 합니다.

3. 데이터베이스 설계 변경 제안

Section titled “3. 데이터베이스 설계 변경 제안”

이러한 이력 관리를 위해, bms.units 테이블에서 소유주 정보를 직접 관리하는 대신, 소유권 이력을 전담하는 새로운 테이블을 도입합니다.

(기존 unit_owners 테이블의 이름 변경)

컬럼명데이터 타입설명
lessor_iduuidPK임대인의 고유 식별자
building_iduuidFK이 임대인 정보가 속한 건물의 ID
lessor_namevarchar임대인 성명 또는 법인명
(기타 연락처, 이메일 등)

bms.unit_ownership_history (호실 소유권 이력)

Section titled “bms.unit_ownership_history (호실 소유권 이력)”
컬럼명데이터 타입설명
history_iduuidPK소유권 이력의 고유 식별자
unit_iduuidFK대상 호실의 ID (bms.units 참조)
lessor_iduuidFK해당 기간의 임대인 ID (bms.lessors 참조)
effective_start_datedate이 소유권이 효력을 시작하는 날짜
effective_end_datedate이 소유권이 효력을 종료하는 날짜 (현재 소유주는 이 값이 NULL)
change_reasontextNULL변경 사유 (예: 매매, 증여)
created_attimestamptz이 이력 레코드가 생성된 시각
  • lessor_id 컬럼 제거: units 테이블의 lessor_id는 더 이상 ‘현재 소유주’를 정확하게 나타내지 못하므로, 이 컬럼을 제거합니다. 특정 시점의 소유주 정보는 항상 unit_ownership_history 테이블을 통해 조회해야 합니다.

방법 1: 단일 호실 소유주 변경 (기본)

Section titled “방법 1: 단일 호실 소유주 변경 (기본)”
  • 관련 화면: [건물 정보] > [호실 관리]에서 특정 호실(예: 101호)을 클릭하여 진입하는 ‘호실 상세 관리’ 화면
  • 핵심 UI: 화면에 [소유주 변경] 버튼을 제공합니다.
  • 처리 절차:
    1. 관리자가 [소유주 변경] 버튼을 클릭합니다.
    2. 새로운 임대인과 변경일자를 입력받는 팝업이 나타납니다.
    3. 저장 시, 해당 호실(unit_id)에 대해서만 소유권 이력(과거 이력 마감, 신규 이력 생성)이 처리됩니다.

방법 2: 다수 호실 일괄 소유주 변경

Section titled “방법 2: 다수 호실 일괄 소유주 변경”

이럴 때 사용합니다: 한 임대인이 소유한 모든 호실 또는 일부 호실의 소유권을 다른 한 명에게 이전할 때 사용합니다.

  • 관련 화면: [임대 관리] > [임대인 관리]에서 특정 임대인(예: ‘홍길동’)을 클릭하여 진입하는 ‘임대인 상세 관리’ 화면
  • 핵심 UI: 화면의 소유 호실 목록 영역에 [소유 호실 일괄 이전] 버튼을 추가로 제공합니다.
  • 처리 절차:
    1. 관리자가 [소유 호실 일괄 이전] 버튼을 클릭합니다.
    2. ‘일괄 이전’ 전용 팝업 창에서 새로운 임대인, 변경일, 이전 대상 호실들을 선택합니다.
    3. 저장 시, 선택된 모든 호실에 대해 소유권 이력 처리가 하나의 트랜잭션으로 수행됩니다.

5. 시스템에 미치는 영향 및 데이터 조회 방법

Section titled “5. 시스템에 미치는 영향 및 데이터 조회 방법”

“특정 호실의 현재 소유주가 누구인지”를 조회하려면, unit_ownership_history 테이블에서 effective_end_dateNULL인 레코드를 찾으면 됩니다.

-- 101호의 현재 소유주(임대인) 정보를 조회하는 SQL 예시
SELECT
l.*
FROM
bms.unit_ownership_history h
JOIN
bms.lessors l ON h.lessor_id = l.lessor_id
WHERE
h.unit_id = '101호의_UUID'
AND h.effective_end_date IS NULL;

나. 과거 특정 시점의 소유주 조회 방법

Section titled “나. 과거 특정 시점의 소유주 조회 방법”

“과거 특정 날짜(예: 2024-05-15)에 101호의 소유주가 누구였는지”를 조회하려면, 해당 날짜가 effective_start_dateeffective_end_date 사이에 포함되는 레코드를 찾으면 됩니다.

-- 2024-05-15 시점의 101호 소유주(임대인) 정보를 조회하는 SQL 예시
SELECT
l.*
FROM
bms.unit_ownership_history h
JOIN
bms.lessors l ON h.lessor_id = l.lessor_id
WHERE
h.unit_id = '101호의_UUID'
AND '2024-05-15'::date >= h.effective_start_date
AND ('2024-05-15'::date <= h.effective_end_date OR h.effective_end_date IS NULL);
  • 특정 월(예: 7월)의 관리비를 계산할 때, 시스템은 더 이상 units 테이블을 보지 않습니다. 대신, unit_ownership_history 테이블에서 “해당 부과월(7월)이 effective_start_dateeffective_end_date 사이에 포함되는” 소유주를 찾아, 그에게 공실 관리비 등을 부과해야 합니다.