Database Modelling (데이터베이스 모델링)
정보화 시스템을 구축하기 위해 어떤 데이터가 존재하는지 또는 업무에 필요한 정보는 무엇인지 분석하는 방법
관계형 데이터베이스는 표(table) 개념을 사용해서 데이터를 구성하는 방법을 사용
자바관점에서 table 하나는 Dto 하나
Database Modeling 순서
- 업무 프로세스 분석
- 개념적 모델링 - 개념적 구조 성립
- 논리적 모델링 - 데이터 모델 정립
- 물리적 모델링 - 물리적 데이터베이스 생성
- 일치성 검토
개념적 데이터베이스 모델링
업무분석 단계에서 얻어진 내용을 토대로 우선 Entity를 추출하고 Entity내에 속성(Attribute)을 구성하며 Entity간의 관계를 정의해서 ER-Diagram을 정의하는 단계
- 사용자 부문의 처리현상을 분석
- 중요 실체와 관계를 파악하여 ERD를 작성
- 실체에 대한 상세 정의
- 식별자 정의, 식별자 업무 규칙 확립
- 실체별 속성을 상세화
- 필요한 속성 및 영역을 상세 정의
- 속성에 대한 업무규칙 정의
- 각 단계를 마친 후 사용자와 함께 모델을 검토
개체 (Entity)
사용자와 관계가 있는 주요 객체로써 업무 수행을 위해 데이터로 관리되어져야 하는 사람, 사물, 장소, 사건 등을 개체(Entity)라고 한다.
Entity 찾는 법
영속적으로 존재하는 것
새로 식별이 가능한 데이터 요소를 가짐
Entity는 반디시 Attribute를 가져야 한다.
명사적 표현
속성 (Attribute)
저장할 필요가 있는 실체에 관한 정보
개체(Entity)의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부사항
개체에 포함되는 속성의 숫자는 10개 내외로 하는 것이 바람직하다.
최종 DB 모델링 단계를 통해 테이블의 컬럼으로 활용
속성의 유형
기초 속성
원래 갖고 있는 속성으로 현업에서 기본적으로 사용되는 속성
추출 속성
기초 속성으로부터 계산(가공)에 의해 얻어질 수 있는 속성
설계 속성
실제로 존재하지 않으나 시스템의 효율성을 도모하기 위해 설계자가 임의로 부여하는 속성
식별자
한 개체(Entity) 내에서 인스턴스를 유일하게 구분할 수 있는 단일 속성 또는 속성 그룹
후보 키(Candidate Key)
개체 내에서 각각의 인스턴스를 구분할 수 있는 속성으로 기본 키가 될 수 있는 후보 속성
기본 키(Primary Key)
개체(Entity)에서 각 인스턴스를 유일하게 식별하는데 가장 적합한 Key
기본 키 설정 시 고려할 사항으로 해당 실체를 대표할 수 있을 것, 업무적으로 활용도가 높을 것, 길이가 짧을 것 등이 있다.
대체 키(Alternate Key)
후보 키중에서 기본 키로 선정되지 않은 속성
복합 키(Composite Key)
하나의 속성으로 기본키가 될 수 없는 경우 둘 이상의 컬럼을 묶어서 식별자로 정의하는 겨웅
대리 키(Surrogate key)
식별자가 너무 길거나 여러 개의 속성으로 구성되어 있는 경우에 인위적으로 추가할 식별자
관계 (Relationship)
두 Entity간의 업무적인 연관성 또는 관련 사실
relationship 분석
각 Entity간에 특정한 존재여부 결정
현재의 관계 뿐만 아니라 장래에 사용될 경우도 고려
E-R Diagram으로 관계를 설정하는 순서
관계가 있는 두 실체를 실선으로 연결하고 관계를 부여(마름모)
관계 차수를 표현
차수성(cardinality) : 한 실체의 하나의 인스턴스가 다른 실체의 몇 개의 인스턴스와 관련될 수 있는 가를 정의
- 경우에 따라 발생 횟수 조사
- 양쪽 방향 모두 조사
선택성을 표시
선택성(optionality) : 선택적(optional)인지 반드시(mandatory)인지 표시
- 일반적이고 상식적인 선에서 먼저 판단
- 항상 그 관계를 만족해야만 하는지 파악
- 관계가 만족되지 않는 경우를 찾아보고 하나라도 만족되지 않는 경우가 있으면 optional로 표시
- 양쪽 방향 모두 조사
차수성의 종료
1 : 1 (일대일)
두 실체의 레코드가 서로 하나씩 대응
1 : N (일대다)
부모 실체의 하나의 레코드가 자식 실체의 여러 레코드에 대응
N : N (다대다)
양 쪽 실체 간에 여러 개의 레코드와 관계를 맺을 수 있는 경우
'Back-End > Database' 카테고리의 다른 글
Entity (0) | 2023.04.10 |
---|---|
Database Modelling (데이터베이스 모델링) 2 (0) | 2022.09.26 |
Sub query (0) | 2022.09.19 |
JOIN (0) | 2022.09.19 |
MySQL function / GROUP BY / Transaction (0) | 2022.09.19 |