데이터 모델링
데이터 모델링
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법으로, 시스템 구현'만'을 위해 수행하는 테스크가 아니다
- 현실 세계의 데이터를 약속된 표기법으로 표현하는 과정
- 데이터베이스를 구축하기 위한 분석 및 설계의 과정
- 데이터 모델링 자체로도 업무를 설명하고 분석할 수 있어야 한다
데이터 모델링 유의점
- 중복
- 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다
- 비유연성
- '데이터의 정의'를 '데이터의 사용 프로세스'와 분리
- 이를 통해 '데이터나 프로세스의 작은 변화'가 '애플리케이션과 데이터베이스'에 중대한 변화를 일으킬 수 있는 가능성을 줄인다
- 비일관성
- 데이터간의 연관된 정보가 있는데 이를 무시하고 데이터가 갱신되는 경우를 말한다
- 데이터의 중복이 없더라도 비일관성은 발생할 수 있다
- 데이터와 데이터간의 상호 연관 관계에 대해 명확하게 정의하여야 한다
- 프로세스,프로그램과 테이블의 연계성을 높이면, 데이터 모델이 업무 변경에 대해 취약해지게 된다
데이터 독립성
데이터 독립성
- 데이터의 논리적/물리적 구조 변경이, 응용 프로그램이나 사용자에게 영향을 미치지 않도록 하는 특성
- 이를 통해 데이터베이스의 유지보수성과 확장성을 높여준다
데이터 독립성의 종류
- 물리적 데이터 독립성(Physical Data Independence)
- 데이터의 '물리적 저장 구조'가 변경되더라도, '논리적 구조'나 '응용 프로그램'에 영향을 주지 않는 것을 의미
- ex) '데이터 파일의 저장 위치 변경', '인덱스 구조 수정', ';저장 장치 교체 등'의 물리적 변경이, '응용 프로그램의 동작'이나 '데이터 베이스의 논리적 스키마'에 영향을 주지 않음
- 논리적 데이터 독립성(Logical Data Independence)
- 데이터의 '논리적 구조'가 변경되더라도, '응용 프로그램'이나 '외부 스키마'에 영향을 주지 않는 것을 의미
- ex) '테이블에 새로운 속성을 추가'하거나 '기존 속성을 제거'하는 등의 논리적 구조 변경이 발생해도, 기존 응용 프로그램이 이러한 변경에 의해 영향을 받지 않아야함
- 하지만 개발을 해보면 알겠지만, '논리적 데이터 독립성'에는 한계가 있을 수 밖에 없다. 테이블에 속성이 추가/삭제가 되는 경우 어쩔 수 없이 이미 작성되어있는 소스코드나 쿼리에서 문제가 발생 할 것이기 때문이다.
ex) select 쿼리에서 선택한 속성이 사라진다면 에러 발생. insert 쿼리에서 'Non Null' 속성이 추가된다면 에러가 발생.
데이터베이스 스키마
데이터베이스 스키마
- 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것
데이터베이스 스키마 3단계 구조
- 외부스키마(External schema) = 서브 스키마
- View 단계로, 여러 개의 사용자 관점으로 구성됨
- 사용자와 가장 가까운 단계
- 각 사용자가 생각하는 DB의 모습이나 논리적 구조로, 각 사용자마다 다른 모습. 즉 개인적 DB 스키마
- 사용자가 처리하고자 하는 데이터 유형과 관점, 방법에 따라 다른 스키마 구조를 가짐
- DB하나에 외부 스키마가 여러 개 존재 가능
- 개념스키마(Conceptual schema) = 스키마
- 개념 단계에서 DB 전체의 논리적 구조를 정의한 것
- 조직 전체(모든 사용자)의 관점을 통합한, 조직 전체의 DB를 기술한 것
- DB에 어떤 데이터가 저장되는지, 데이터들 간의 관계, 제약조건, 보안 정책, 접근 권한 등을 표현
- 개념 스키마는 DB에 하나만 존재 가능
- 내부스키마(Internal schema) = 저장 스키마
- 전체 DB가 저장 장치(디스크 등)에 실제로 저장되는 방법을 정의한 것
- 레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적인 저장 구조를 정의