■ DB모델링
- ERD란? Entity Relationship Diagram, 개체 관계도라 하며,
개체들 간의 관계를 나타내는 다이어그램이다.
- DB 모델링에 대한 자세한 내용은 아래 포스팅 참조
https://mangkyu.tistory.com/27
- DB 모델링 툴
- 윈도우용툴 : EXERD, ERWIN (erwin.com) *erwin이 가장 자주 쓰는 툴이라고 한다. - 맥용툴 : 에이쿼리툴 https://zakkum.tistory.com/76 |
■ 정규화란?
데이터 베이스의 불필요한 중복을 줄이고 설계를 더 탄탄하게 재구성하는 테크닉 |
>>
제 1 정규화 | 도메인이 원자 값(하나의 값)을 갖도록 테이블을 분해하는 것 |
제 2 정규화 | 제 1정규화를 마친 테이블에서 완전함수 종속*을 만족하도록 테이블을 분해 * 기본키의 부분 집합이 결정자가 되어서는 안된다. EX. 테이블 1 ) 기본키 : 학생번호/강좌이름, 데이터 : 강의실, 성적 * 성적은 학생번호/강좌이름에 종속적이다. * 강의실은 강좌이름에 종속적이다. ---> 테이블 1, 2로 분해 테이블 1 ) 기본키 : 학생번호, 데이터 : 강좌이름, 성적 테이블 2 ) 기본키 : 강좌이름, 데이터 : 강의실 |
제 3 정규화 | 제 2정규화를 마친 테이블에 대해 이행적 함수 종속*을 없애도록 테이블을 분해 * A, B, C 데이터가 있을 때, A -> B -> C 관계만 가능하도록 해야한다. * A -> C (X) EX. 테이블 1 ) 기본키 : 학생번호, 데이터 : 강좌이름, 수강료 * 강좌이름은 학생번호에 종속적이다. * 수강료는 강좌이름에 종속적이다. ---> 테이블 1,2로 분해 테이블 1 ) 기본키 : 학생번호, 데이터 : 강좌이름 테이블 2 ) 기본키 : 강좌이름, 데이터 : 수강료 * 학생번호 -> 강좌이름 -> 수강료 >> 학생번호로 수강료를 알 수 있으면 안 된다. |
* 완전 함수 종속 : 기본키가 여러개일 때, 모든 기본키에 종속적이어야 한다는 것
* 이행적 함수 종속 : 순차적인 이행에 따른 종속 관계
■ 정규화의 장단점 - 가장 큰 이점 : 이상현상의 제거
장점 | 단점 |
[1] 데이터베이스 변경 시 이상 현상 방지 [2] 데이터베이스 구조 확장 시 재 디자인 최소화 [3] 사용자에게 데이터 모델을 더욱 의미있게 제공 |
테이블의 분해로 인해 테이블간 연산(JOIN)이 많아진다. 이로인해 질의에 대한 응답시간이 늦어질 수도 있다. (성능저하의 가능성) |
■ 역정규화를 하는 이유
정규화를 거치면 릴레이션 간의 연산(JOIN 연산)이 많아지는데, 이로인해 성능이 저하될 우려가 있습니다. 역정규화를 하는 가장 큰 이유는 성능 문제가 있는(읽기작업이 많이 필요한) DB의 전반적인 성능을 향상시키기 위함입니다. |
■ 이상현상(Anomaly)의 종류
- 이상현상이란? 테이블을 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 생기는 논리적 오류
삽입 이상 | 자료를 삽입할 때 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상 |
갱신 이상 | 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상 |
삭제 이상 | 어떤 정보를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상 |
[참조]
- 정규화 참조
https://dev-coco.tistory.com/62
https://mr-dan.tistory.com/10
https://programming119.tistory.com/225
'Language > SQL' 카테고리의 다른 글
[DATABASE] JOIN (0) | 2022.04.21 |
---|---|
[DATABASE] SEQUENCE, INDEX (0) | 2022.04.21 |
[DATABASE] 뷰 (VIEW), 인라인 뷰 (0) | 2022.04.19 |
[DATABASE] DECODE, CASE~END 문 (0) | 2022.04.18 |
[DATABASE] 정렬(ORDER NY) 및 그룹 통계(GROUP BY) (0) | 2022.04.18 |