데이터 모델링의 이해
1. 데이터 모델
데이터 모델: 현실 세계의 대상을 추상화,단순화,명확화 하여 데이터베이스로 표현하는 것
데이터 모델링의 과정
1. 요구사항 접수
2. 개념적 데이터 모델링: 단순한 설계도(엔티티,관계)
3. 논리적 데이터 모델링: 좀더 상세한 설계도
4. 물리적 데이터 모델링: 실제로 구축(성능 고려)
5. 데이터 베이스에 저장할 수 있게 세팅
2. 엔티티
1. 엔티티: 업무에 필요한 정보를 저장/관리하기 위한 집합적인 명사 개념
ex: 직원,부서-> 추상화,단순화,명확화
2. 인스턴스: 엔티티 집합내에 존재하는 개별적인 대상 (직원 엔티티의 직원A,직원 B... 테이블의 행)
3.엔티티의 특징
- 반드시 업무에서 필요한 대상이고, 업무에 사용
- 유일한 식별자로 식별이 가능
- 인스턴스가 2개 이상 존재
- 속성이 반드시 2개 이상 존재
- 관계가 하나 이상 존재
엔티티의 명명(naming) 규칙
- 가능한 현업 용어(ex: 사람 -> 고객, 전봇대 -> 전주)
- 가능한 약어 사용 자제(ex: 일매출 -> 일별매출정보 )
- 단수명사 사용(ex: 직원들 -> 직원)
- 엔티티이름은 데이터베이스 상에서 유일하게
- 엔티티 생성 의미대로 이름을 부여(ex: 연락처 목록-> 직원 연락처 목록)
3. 속성(ATTRIBUTE) 이해하기
속성: 업무상 관리하기 위해 의미적으로 더는 분리되지 않는 최소의 데이터 단위
+a) 속성은 우리가 관리하고자 하는 정보가 된다.
직원엔티티
직원 ID | 이름 | 나이 | 연봉1 |
1 | 강태우 | 35 | 5000 |
2 | 김현준 | 32 |
... |
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에 이식되도록, 성능,저장 등 물리적 성격 고려
7. 데이터 베이스 3단계 구조 (외부-개념-내부)
예시
1. 외부 스키마(뷰 레벨) : 한명은 직원Id, 연봉만 조회하고, 다른 한명은 직원Id, 패스워드 조회-> 다양한 관점 존재
2. 외부 스키마와 개념 스키마(논리 레벨)의 독립성:
개념스키마(테이블 형식) 예시
직원Id | 패스워드 | 연봉 | 나이 | ... | (열 추가) |
외부 스키마는 개념 스키마에서 속성을 추가해도 모른다. 이는 서로 독립적인 관계임을 나타내다.
3. 개념 스키마와 내부(물리 레벨) 스키마의 독립성:
내부 스키마에 저장공간(ex: 하드디스크,SSD)을 늘려도 개념 스키마에는 영향이 없다.
그렇다고 해서 개념 스키마의 열 추가가 내부(물리) 스키마에 영향을 안주는게 아님을 반드시 명시해야 한다. 이는 상호 독립성이 아니라 물리 스키마의 변화가 개념 스키마에 영향을 미치지 않는다는 것이다.