ㅁ 전체 관계 흐름 요약
  도메인그룹 → 표준도메인 → 표준용어 → 표준용어구성 (↔ 표준단어)
  통합코드도메인 ←→ 통합코드도메인유효값
  표준단어 ↔ 일반단어, 분류단어
속성은 개별 엔터티 속성 정의하면서 표준용어 참조

1)도메인그룹
  최상위 그룹 역할로 도메인들을 분류해.
  예를 들면, ‘금융’, ‘고객관리’, ‘상품관리’ 같은 큰 덩어리를 담당하지.
2)표준도메인
  도메인그룹에 딸린 세부 도메인들이 여기 있어.
  ‘대출구분’, ‘계약번호’, ‘금리’ 같은 구체 데이터 타입과 의미를 정의함.
  도메인그룹명 외래키로 도메인그룹과 연동되므로, 도메인그룹 없어지면 표준도메인도 영향 받음.
3)통합코드도메인 & 통합코드도메인유효값
  일종의 코드값 저장소야.
  ‘대출구분’ 같은 코드 도메인 이름이 통합코드도메인에 있고, 실제 코드 값들은 통합코드도메인유효값에 들어가.
  통합코드도메인유효값은 통합코드도메인 참조해 코드 무결성 유지함.
4)표준단어, 일반단어, 분류단어
  표준단어: 금융 대출 도메인을 구성하는 최소 단어 단위들
  일반단어: 표준단어 중 범용성 높은 단어 분류
  분류단어: 표준단어와 도메인그룹 연계 정보, 단어가 어떤 도메인 그룹에 속하는지 표시
5)표준용어
  여러 표준단어를 조합해 구체적인 금융용어를 만듦.
  ‘신용대출’, ‘담보대출’ 같은 용어가 여기에 해당.
  표준도메인을 참조하며, 도메인별 용어 관리에 활용됨.
6)표준용어구성
  표준용어가 어떻게 표준단어로 구성되는지 조합 정보 저장.
  1순위부터 차례대로 단어를 조합해서 완성형 용어 생성하는 구조.
7)속성
  실제 엔터티(예: 대출계약, 고객)에 딸린 속성 정보를 저장.
  엔터티명과 속성명으로 구성하며, 해당 속성이 어떤 표준용어와 연결되는지 관리.
  표준용어가 FK로 연결되어 있어 데이터 통일성 유지에 기여.

 

도메인 구성

 

-- 1. 기존 domain 데이터베이스 삭제 후 재생성
DROP DATABASE IF EXISTS domain;
CREATE DATABASE domain CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE domain;

-- 2. FK 제약조건 고려한 테이블 DROP (역순)
DROP TABLE IF EXISTS 속성;
DROP TABLE IF EXISTS 표준용어구성;
DROP TABLE IF EXISTS 표준용어;
DROP TABLE IF EXISTS 분류단어;
DROP TABLE IF EXISTS 일반단어;
DROP TABLE IF EXISTS 표준단어;
DROP TABLE IF EXISTS 통합코드도메인유효값;
DROP TABLE IF EXISTS 통합코드도메인;
DROP TABLE IF EXISTS 표준도메인;
DROP TABLE IF EXISTS 도메인그룹;

-- 3. 도메인그룹 테이블 생성
CREATE TABLE 도메인그룹 (
  도메인그룹명 VARCHAR(100) NOT NULL COMMENT '도메인 그룹명, 고유 식별자 역할',
  설명 TEXT COMMENT '도메인 그룹에 대한 설명',
  PRIMARY KEY (도메인그룹명)
) COMMENT='도메인그룹 - 도메인 최상위 그룹';

-- 4. 표준도메인 테이블 생성
CREATE TABLE 표준도메인 (
  표준도메인명 VARCHAR(100) NOT NULL COMMENT '표준도메인명',
  도메인그룹명 VARCHAR(100) NOT NULL COMMENT '도메인그룹명(FK)',
  데이터타입 VARCHAR(50) COMMENT '데이터타입',
  데이터길이 INT COMMENT '데이터길이',
  SCALE INT COMMENT '소수점 자릿수',
  도메인유형 VARCHAR(50) COMMENT '도메인유형',
  유효값범위_형식 TEXT COMMENT '유효값 범위 또는 형식',
  도메인설명 TEXT COMMENT '도메인 설명',
  PRIMARY KEY (표준도메인명),
  FOREIGN KEY (도메인그룹명) REFERENCES 도메인그룹(도메인그룹명)
) COMMENT='표준도메인 테이블';

-- 5. 통합코드도메인 테이블 생성
CREATE TABLE 통합코드도메인 (
  통합코드도메인명 VARCHAR(100) NOT NULL PRIMARY KEY COMMENT '통합코드도메인명(고유)'
) COMMENT='통합코드도메인 테이블';

-- 6. 통합코드도메인유효값 테이블 생성
CREATE TABLE 통합코드도메인유효값 (
  통합코드도메인명 VARCHAR(100) NOT NULL COMMENT '통합코드도메인명(FK)',
  코드값 VARCHAR(100) NOT NULL COMMENT '코드값',
  코드값명 VARCHAR(100) COMMENT '코드값명',
  PRIMARY KEY (통합코드도메인명, 코드값),
  FOREIGN KEY (통합코드도메인명) REFERENCES 통합코드도메인(통합코드도메인명)
) COMMENT='통합코드도메인유효값';

-- 7. 표준단어 테이블 생성
CREATE TABLE 표준단어 (
  표준단어명 VARCHAR(100) NOT NULL COMMENT '표준단어명',
  단어영문약어명 VARCHAR(100) COMMENT '영문 약어명',
  단어영문정식명 VARCHAR(100) COMMENT '영문 정식명',
  분류단어여부 BOOLEAN COMMENT '분류단어 여부',
  단어설명 TEXT COMMENT '단어 설명',
  PRIMARY KEY (표준단어명)
) COMMENT='표준단어 테이블';

-- 8. 일반단어 테이블 생성
CREATE TABLE 일반단어 (
  표준단어명 VARCHAR(100) NOT NULL COMMENT '표준단어명(FK)',
  PRIMARY KEY (표준단어명),
  FOREIGN KEY (표준단어명) REFERENCES 표준단어(표준단어명)
) COMMENT='일반단어 테이블';

-- 9. 분류단어 테이블 생성
CREATE TABLE 분류단어 (
  표준단어명 VARCHAR(100) NOT NULL COMMENT '표준단어명(FK)',
  도메인그룹명 VARCHAR(100) NOT NULL COMMENT '도메인그룹명(FK)',
  PRIMARY KEY (표준단어명, 도메인그룹명),
  FOREIGN KEY (표준단어명) REFERENCES 표준단어(표준단어명),
  FOREIGN KEY (도메인그룹명) REFERENCES 도메인그룹(도메인그룹명)
) COMMENT='분류단어 테이블';

-- 10. 표준용어 테이블 생성
CREATE TABLE 표준용어 (
  표준용어명 VARCHAR(100) NOT NULL COMMENT '표준용어명',
  표준도메인명 VARCHAR(100) NOT NULL COMMENT '표준도메인명(FK)',
  용어영문명 VARCHAR(100) COMMENT '용어 영문명',
  용어영문정식명 VARCHAR(100) COMMENT '용어 영문 정식명',
  용어설명 TEXT COMMENT '용어 설명',
  PRIMARY KEY (표준용어명),
  FOREIGN KEY (표준도메인명) REFERENCES 표준도메인(표준도메인명)
) COMMENT='표준용어 테이블';

-- 11. 표준용어구성 테이블 생성
CREATE TABLE 표준용어구성 (
  표준용어명 VARCHAR(100) NOT NULL COMMENT '표준용어명(FK)',
  표준단어명 VARCHAR(100) NOT NULL COMMENT '표준단어명(FK)',
  구성순서 INT COMMENT '구성 순서',
  PRIMARY KEY (표준용어명, 표준단어명),
  FOREIGN KEY (표준용어명) REFERENCES 표준용어(표준용어명),
  FOREIGN KEY (표준단어명) REFERENCES 표준단어(표준단어명)
) COMMENT='표준용어구성 테이블';

-- 12. 속성 테이블 생성
CREATE TABLE 속성 (
  엔터티명 VARCHAR(100) NOT NULL COMMENT '엔터티명',
  속성명 VARCHAR(100) NOT NULL COMMENT '속성명',
  표준용어명 VARCHAR(100) COMMENT '표준용어명(FK)',
  PRIMARY KEY (엔터티명, 속성명),
  FOREIGN KEY (표준용어명) REFERENCES 표준용어(표준용어명)
) COMMENT='속성 테이블';

-- 13. 기본 데이터 삽입 (FK 순서 엄수)

-- 도메인그룹 데이터
INSERT INTO 도메인그룹 (도메인그룹명, 설명) VALUES
('금융', '금융 관련 도메인: 대출, 예금, 투자 등'),
('고객관리', '고객 정보 및 상담 도메인'),
('상품관리', '제품 및 서비스 관리 도메인');

-- 표준도메인 데이터
INSERT INTO 표준도메인
(표준도메인명, 도메인그룹명, 데이터타입, 데이터길이, SCALE, 도메인유형, 유효값범위_형식, 도메인설명)
VALUES
('대출구분', '금융', 'VARCHAR', 20, NULL, '코드', '신용대출, 담보대출, 전세자금대출', '대출 구분 코드'),
('계약번호', '금융', 'VARCHAR', 30, NULL, '식별자', NULL, '대출 계약 번호'),
('금리', '금융', 'DECIMAL', 5, 2, '수치', '0.00 ~ 100.00', '대출 이자율(%)'),
('상환방법', '금융', 'VARCHAR', 30, NULL, '코드', '원리금균등, 원금균등, 만기일시', '상환 방법 코드'),
('연체여부', '금융', 'BOOLEAN', NULL, NULL, '논리', 'Y/N', '연체 여부');

-- 통합코드도메인 데이터
INSERT INTO 통합코드도메인 (통합코드도메인명) VALUES
('대출구분');

-- 통합코드도메인유효값 데이터
INSERT INTO 통합코드도메인유효값 VALUES
('대출구분', 'CREDIT', '신용대출'),
('대출구분', 'COLLATERAL', '담보대출'),
('대출구분', 'LEASE', '전세자금대출');

-- 표준단어 데이터
INSERT INTO 표준단어
(표준단어명, 단어영문약어명, 단어영문정식명, 분류단어여부, 단어설명)
VALUES
('대출', 'Loan', 'Loan', 0, '대출'),
('계약', 'Contract', 'Contract', 0, '대출 계약'),
('금리', 'Rate', 'Interest Rate', 0, '대출 이자율'),
('상환', 'Repayment', 'Repayment', 0, '대출 상환'),
('연체', 'Delinquency', 'Delinquency', 0, '연체'),
('고객', 'Customer', 'Customer', 1, '고객 정보'),
('상품', 'Product', 'Product', 1, '상품 정보'),
('원리금', 'PrincipalAndInterest', 'Principal and Interest', 0, '대출 원금과 이자 합산 금액'),
('균등상환', 'EqualRepayment', 'Equal Repayment', 0, '같은 금액을 정기적으로 상환하는 방법'),
('신용', 'Credit', 'Credit', 0, '신용'),
('담보', 'Collateral', 'Collateral', 0, '담보'),
('전세', 'Jeonse', 'Jeonse', 0, '전세'),
('자금', 'Fund', 'Fund', 0, '자금'),
('여부', 'YesNo', 'Yes or No', 0, '여부');

-- 일반단어 데이터
INSERT INTO 일반단어 (표준단어명) VALUES
('대출'),
('계약'),
('금리'),
('상환'),
('연체');

-- 분류단어 데이터
INSERT INTO 분류단어 (표준단어명, 도메인그룹명) VALUES
('대출', '금융'),
('계약', '금융'),
('금리', '금융'),
('상환', '금융'),
('연체', '금융'),
('고객', '고객관리'),
('상품', '상품관리');

-- 표준용어 데이터
INSERT INTO 표준용어
(표준용어명, 표준도메인명, 용어영문명, 용어영문정식명, 용어설명)
VALUES
('신용대출', '대출구분', 'Credit Loan', 'Unsecured Loan', '신용 기반 대출'),
('담보대출', '대출구분', 'Collateral Loan', 'Secured Loan', '담보 기반 대출'),
('전세자금대출', '대출구분', 'Lease Loan', 'Jeonse Loan', '전세 자금 대출'),
('원리금균등상환', '상환방법', 'Equal Principal & Interest', 'Amortized Repayment', '원리금 균등 상환 방법'),
('연체여부_예', '연체여부', 'Delinquent', 'Loan Delinquency: Yes', '대출금 연체 상태');

-- 표준용어구성 데이터
INSERT INTO 표준용어구성 (표준용어명, 표준단어명, 구성순서) VALUES
('신용대출', '신용', 1),
('신용대출', '대출', 2),
('담보대출', '담보', 1),
('담보대출', '대출', 2),
('전세자금대출', '전세', 1),
('전세자금대출', '자금', 2),
('전세자금대출', '대출', 3),
('원리금균등상환', '원리금', 1),
('원리금균등상환', '균등상환', 2),
('연체여부_예', '연체', 1),
('연체여부_예', '여부', 2);

-- 속성 데이터
INSERT INTO 속성 (엔터티명, 속성명, 표준용어명) VALUES
('대출계약', '계약번호', '신용대출'),
('대출계약', '대출금액', NULL),
('대출계약', '금리', '금리'),
('대출계약', '상환방법', '원리금균등상환'),
('대출계약', '연체여부', '연체여부_예'),
('고객', '고객ID', NULL),
('고객', '이름', NULL),
('고객', '전화번호', NULL);

+ Recent posts