SQLD/데이터 모델링

데이터 모델링의 이해

조찬국 2024. 3. 18. 22:36
728x90

1. 데이터 모델

데이터 모델: 현실 세계의 대상을 추상화,단순화,명확화 하여 데이터베이스로 표현하는 것

 

데이터 모델링의 과정

1. 요구사항 접수

2. 개념적 데이터 모델링: 단순한 설계도(엔티티,관계)

3. 논리적 데이터 모델링: 좀더 상세한 설계도

4. 물리적 데이터 모델링: 실제로 구축(성능 고려)

5. 데이터 베이스에 저장할 수 있게 세팅

 

2. 엔티티

1. 엔티티: 업무에 필요한 정보를 저장/관리하기 위한 집합적인 명사 개념

ex: 직원,부서-> 추상화,단순화,명확화

 

2. 인스턴스: 엔티티 집합내에 존재하는 개별적인 대상 (직원 엔티티의 직원A,직원 B... 테이블의 행)

 

3.엔티티의 특징

  1. 반드시 업무에서 필요한 대상이고, 업무에 사용
  2. 유일한 식별자로 식별이 가능
  3. 인스턴스가 2개 이상 존재
  4. 속성이 반드시 2개 이상 존재
  5. 관계가 하나 이상 존재

엔티티의 명명(naming) 규칙

  1. 가능한 현업 용어(ex: 사람 -> 고객, 전봇대 -> 전주)
  2. 가능한 약어 사용 자제(ex: 일매출 -> 일별매출정보 )
  3. 단수명사 사용(ex: 직원들 -> 직원)
  4. 엔티티이름은 데이터베이스 상에서 유일하게
  5. 엔티티 생성 의미대로 이름을 부여(ex: 연락처 목록-> 직원 연락처 목록)

3. 속성(ATTRIBUTE) 이해하기

속성: 업무상 관리하기 위해 의미적으로 더는 분리되지 않는 최소의 데이터 단위

+a) 속성은 우리가 관리하고자 하는 정보가 된다.

 

직원엔티티

직원 ID 이름 나이 연봉1
1 강태우 35 5000
2 김현준 32 ,27 ...
3 ... ... ...

 

위는 직원 엔티티를 나타낸것이다. 

인스턴스: 1,강태우,35,5000은 인스턴스를 나타내고, 엔티티에는 이러한 인스턴스는 2개이상이어야 한다.

속성: 직원ID,이름,나이,연봉1은 속성이다. 속성은 각 인스터스를 설명하며, 한 속성에는 하나의 속성 값만 들어간다. 

위와 같이 김현준씨의 나이가 32,27로 두개가 동시에 입력되면 안된다.

 

4. 식별자

식별자: 엔티티 내 유일한 인스턴스를 식별할 수 있는 속성의 집합

(위의 예시에선 직원 ID이다. 이름은 중복가능하므로 식별자느느 아니다.)

 

5. 도메인

도메인: 각 속성이 입력 받을 수 있는 값의 정의 및 범위를 의미한다.

 

테이블 생성시 각 속성별 자료형 및 제약 조건을 줄때 결정한다.

ex: 나이는 숫자만 입력하고, 0~999까지만 입력한다.

 

6. 데이터 모델링 3단계 (개념-논리-물리)

 

1. 개념적 데이터 모델링: 추상적, 업무 중심적, 포괄적, ERD(Entity Relationship Diagram) 생성

2. 논리적 데이터 모델링: key, 속성,관계 등을 정의, 특정 DBMS(Mysql,Oracle 등),정규화 수행

3. 물리적 데이터 모델링: 실제 DB에 이식되도록, 성능,저장 등 물리적 성격 고려

 

데이터 모델링의 3단계

 

7. 데이터 베이스 3단계 구조 (외부-개념-내부)

 

예시

1. 외부 스키마(뷰 레벨) : 한명은 직원Id, 연봉만 조회하고, 다른 한명은 직원Id, 패스워드 조회-> 다양한 관점 존재

2. 외부 스키마와 개념 스키마(논리 레벨)의 독립성: 

 

개념스키마(테이블 형식) 예시

직원Id 패스워드 연봉 나이 ... (열 추가)
           

 

외부 스키마는 개념 스키마에서 속성을 추가해도 모른다. 이는 서로 독립적인 관계임을 나타내다.

3. 개념 스키마와 내부(물리 레벨) 스키마의 독립성: 

내부 스키마에 저장공간(ex: 하드디스크,SSD)을 늘려도 개념 스키마에는 영향이 없다.

 

그렇다고 해서 개념 스키마의 열 추가가 내부(물리) 스키마에 영향을 안주는게 아님을 반드시 명시해야 한다. 이는 상호 독립성이 아니라 물리 스키마의 변화가 개념 스키마에 영향을 미치지 않는다는 것이다. 

 

 

 

 

 

 

 

 

 

728x90