호실 소유주 변경 처리 방안
호실 소유권 이력 관리 방안
Section titled “호실 소유권 이력 관리 방안”1. 문서 개요
Section titled “1. 문서 개요”본 문서는 건물 관리 시스템에서 매매, 증여 등으로 인해 특정 호실의 소유주(임대인)가 변경되었을 때, 데이터의 정합성을 유지하며 소유권 이전 내역을 정확하게 관리하는 시스템 설계 및 업무 처리 방안을 정의합니다.
2. 핵심 원칙: “이력 추적 및 유효일자 기반 관리”
Section titled “2. 핵심 원칙: “이력 추적 및 유효일자 기반 관리””소유주 변경을 처리하는 데 있어 가장 중요한 원칙은 다음과 같습니다.
- 비파괴적 이력 관리 (Non-Destructive History): 과거의 소유주 기록을 덮어쓰거나 삭제하지 않습니다. 모든 소유권 변경은 새로운 이력으로 누적되어, 언제든 과거의 소유주를 추적할 수 있어야 합니다.
- 유효일자(Effective Date) 기준: 소유권 변경은 즉시 모든 과거에 영향을 미치는 것이 아니라, 계약서상의 명의 이전일 등 **특정 ‘유효일자’**를 기준으로 적용되어야 합니다.
3. 데이터베이스 설계 변경 제안
Section titled “3. 데이터베이스 설계 변경 제안”이러한 이력 관리를 위해, bms.units 테이블에서 소유주 정보를 직접 관리하는 대신, 소유권 이력을 전담하는 새로운 테이블을 도입합니다.
bms.lessors (임대인 정보)
Section titled “bms.lessors (임대인 정보)”(기존 unit_owners 테이블의 이름 변경)
| 컬럼명 | 데이터 타입 | 키 | 설명 |
|---|---|---|---|
lessor_id | uuid | PK | 임대인의 고유 식별자 |
building_id | uuid | FK | 이 임대인 정보가 속한 건물의 ID |
lessor_name | varchar | 임대인 성명 또는 법인명 | |
| … | (기타 연락처, 이메일 등) |
bms.unit_ownership_history (호실 소유권 이력)
Section titled “bms.unit_ownership_history (호실 소유권 이력)”| 컬럼명 | 데이터 타입 | 키 | 설명 |
|---|---|---|---|
history_id | uuid | PK | 소유권 이력의 고유 식별자 |
unit_id | uuid | FK | 대상 호실의 ID (bms.units 참조) |
lessor_id | uuid | FK | 해당 기간의 임대인 ID (bms.lessors 참조) |
effective_start_date | date | 이 소유권이 효력을 시작하는 날짜 | |
effective_end_date | date | 이 소유권이 효력을 종료하는 날짜 (현재 소유주는 이 값이 NULL) | |
change_reason | text | NULL | 변경 사유 (예: 매매, 증여) |
created_at | timestamptz | 이 이력 레코드가 생성된 시각 |
기존 bms.units 테이블 변경
Section titled “기존 bms.units 테이블 변경”lessor_id컬럼 제거:units테이블의lessor_id는 더 이상 ‘현재 소유주’를 정확하게 나타내지 못하므로, 이 컬럼을 제거합니다. 특정 시점의 소유주 정보는 항상unit_ownership_history테이블을 통해 조회해야 합니다.
4. 업무 흐름 및 화면 설계
Section titled “4. 업무 흐름 및 화면 설계”방법 1: 단일 호실 소유주 변경 (기본)
Section titled “방법 1: 단일 호실 소유주 변경 (기본)”- 관련 화면:
[건물 정보] > [호실 관리]에서 특정 호실(예: 101호)을 클릭하여 진입하는 ‘호실 상세 관리’ 화면 - 핵심 UI: 화면에
[소유주 변경]버튼을 제공합니다. - 처리 절차:
- 관리자가
[소유주 변경]버튼을 클릭합니다. - 새로운 임대인과 변경일자를 입력받는 팝업이 나타납니다.
- 저장 시, 해당 호실(
unit_id)에 대해서만 소유권 이력(과거 이력 마감, 신규 이력 생성)이 처리됩니다.
- 관리자가
방법 2: 다수 호실 일괄 소유주 변경
Section titled “방법 2: 다수 호실 일괄 소유주 변경”이럴 때 사용합니다: 한 임대인이 소유한 모든 호실 또는 일부 호실의 소유권을 다른 한 명에게 이전할 때 사용합니다.
- 관련 화면:
[임대 관리] > [임대인 관리]에서 특정 임대인(예: ‘홍길동’)을 클릭하여 진입하는 ‘임대인 상세 관리’ 화면 - 핵심 UI: 화면의 소유 호실 목록 영역에
[소유 호실 일괄 이전]버튼을 추가로 제공합니다. - 처리 절차:
- 관리자가
[소유 호실 일괄 이전]버튼을 클릭합니다. - ‘일괄 이전’ 전용 팝업 창에서 새로운 임대인, 변경일, 이전 대상 호실들을 선택합니다.
- 저장 시, 선택된 모든 호실에 대해 소유권 이력 처리가 하나의 트랜잭션으로 수행됩니다.
- 관리자가
5. 시스템에 미치는 영향 및 데이터 조회 방법
Section titled “5. 시스템에 미치는 영향 및 데이터 조회 방법”가. 현재 소유주 조회 방법
Section titled “가. 현재 소유주 조회 방법”“특정 호실의 현재 소유주가 누구인지”를 조회하려면,
unit_ownership_history테이블에서effective_end_date가NULL인 레코드를 찾으면 됩니다.
-- 101호의 현재 소유주(임대인) 정보를 조회하는 SQL 예시SELECT l.*FROM bms.unit_ownership_history hJOIN bms.lessors l ON h.lessor_id = l.lessor_idWHERE h.unit_id = '101호의_UUID' AND h.effective_end_date IS NULL;나. 과거 특정 시점의 소유주 조회 방법
Section titled “나. 과거 특정 시점의 소유주 조회 방법”“과거 특정 날짜(예: 2024-05-15)에 101호의 소유주가 누구였는지”를 조회하려면, 해당 날짜가
effective_start_date와effective_end_date사이에 포함되는 레코드를 찾으면 됩니다.
-- 2024-05-15 시점의 101호 소유주(임대인) 정보를 조회하는 SQL 예시SELECT l.*FROM bms.unit_ownership_history hJOIN bms.lessors l ON h.lessor_id = l.lessor_idWHERE 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);다. 관리비 부과에 미치는 영향
Section titled “다. 관리비 부과에 미치는 영향”- 특정 월(예: 7월)의 관리비를 계산할 때, 시스템은 더 이상
units테이블을 보지 않습니다. 대신,unit_ownership_history테이블에서 “해당 부과월(7월)이effective_start_date와effective_end_date사이에 포함되는” 소유주를 찾아, 그에게 공실 관리비 등을 부과해야 합니다.