kh day 031
오늘은 드디어 데이터모델링을 마무리했다!! 정규화까지 진도를 쭉쭉 나가고, 조별과제로 데이터 모델링을 통해 최종적으로 릴레이션을 만들어보는 시간을 가졌다. 정규화의 경우 보통은 2단계까지 하면 충분하다고 하셨으니 적어도 2단계 까지는 완벽하게 이해하고 내 것으로 만들어야 한다. 내일부터 Oracle Cloud 계정을 생성하고 본격적으로 SQL을 배우게 될 것 같은데, 부디 별 문제 없이 잘 진행되었으면 좋겠다. SQL 들어가기 전에 기본키 수퍼키 개념을 포함한 데이터 모델링 부분을 다시 한번 복습해야겠다. SQL 교재가 무엇이 될지는 아직 공지 받은게 없어서 일단 '모두의 SQL'이라는 책을 구매했는데, 나름 괜찮은 것 같다. 데이터 모델링 부분은 포함되어있지 않지만 강의 자료를 바탕으로 복습하면 커버가 가능할 것 같다. 아무래도 기초부터 배우는 것이다보니 SQL도 초반부에는 여유가 있을 것 같은데, 이를 활용해서 자바 언어를 다시 한번 훑어봐야겠다.
---
금주 공지사항
1. 차주 화요일 SQL 언어 활용 능력단위 평가
이 때까지 SQL 언어 절반 나간다
2. 금주 훈련방향
가. 관계 데이터 모델링 중, 논리적 모델링 마지막 작업인 '정규화' 종료 및 모델 적용
나. 관계 데이터 모델링이 끝나면,
현재 여러분 로컬에 설치한 Oracle DBMS에 대한 접속방법 (EZCONNECT, TNSNAMES)을 최종 반복연습합니다
이후에는 Oracle Cloud DB 생성에 들어간다 -> 이 경우 국제 결제 가능한 신용카드 필요
기수마다 한두명씩 Oracle Cloud 계정 생성 실패하는 학생 있다. 이 경우 로컬 DB로 배워야한다
다. SQL 언어부터는 오전에는 SQL을 배우고 오후에는 자바의 제네릭과 람다식을 배운다 (매우중요!!!)
- 코테는 자바의 제네릭과 특히 람다식을 잘 알아야한다. (+ 알고리즘)
알고리즘은 그렇게 어렵지 않음 30분 고민하면 풀림. 코딩이 안 되서 떨어짐
---
정규화(Normalization) - 논리적 모델링의 마지막 단계!
논리적 모델리에 따라, 사상 작업과 상세 속성까지 추출된 릴레이션 목록들은 아직까지 '비정상' 상태임.
정규화의 정의 : 이상 현상(Anormarly)이 포함된 릴레이션들을 '무손실분해'를 통해 이상현상을 제거하는 과정
정규화의 효과 : 중복 데이터 저장을 없애고 이상현상이 발생되지 않도록 함으로서 데이터의 무결성을 최대한 보장받을 수가 있다
데이터모델링
1. 요구사항 수집
2. 개념적 모델링 - 핵심개체 도출, ERD 작성
3. 논리적 모델링 - 데이터 사상, 상세속성정의, *정규화*
4. 물리적 모델링
5. 데이터베이스 구현
---
정규화
1. 이상현상
2. 함수 종속성
3. 정규화
---
이상현상 (Anomarly)
잘못된 건축설계 -> 건물 무너짐
잘못된 데이터베이스 설계 -> 데이터 무결성 깨짐
하나의 릴레이션에는 하나의 정보만 저장되어야함! 두개의 정보가 저장되면 안 됨
삭제이상(deletion anomly) : 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 → 연쇄삭제(triggered deletion) 문제 발생 (장미란 학생정보만 지우려고 했는데 강좌이름 강의실까지 삭제됨)
삽입이상(insertion anomly) : 투플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상 → NULL 값 문제 발생 (손흥민 학생정보 추가했는데 강좌이름 강의실은 해당하는 값이 없음)
수정이상(update anomly) : 투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상 → 불일치(inconsistency) 문제 발생 (맨 밑의 박지성 주소를 수정하면 주소가 2개가 되어버림)
---
함수 종속성
학생수강성적 릴레이션의 가 속성 사이에는 의존성이 존재함.
어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존관계를
"속성 B는 속성 A에 종속한다." 혹은 "속성 A는 속성 B를 결정한다"고 표현.
'A → B'라고 표기하며, A를 B의 결정자라고 한다.
학생수강성적 릴레이션에서 종속관계에 있는 예
학생번호 → 학생이름
학생번호 → 주소
강좌이름 → 강의실
학과 → 학과사무실
종속하지 않는 예
학생이름 → 강좌이름
학과 → 학생번호
종속하는 것처럼 보이지만 주의 깊게 보면 그렇지 않은 예
학생이름 → 학과
함수 종속성과 기본키
릴레이션의 함수 종속성을 파악하기 위해서는 우선 기본키를 찾아야 함.
기본키가 함수 종속성에서 어떤 역할을 하는지 알면 이상현상을 제거하는 정규화 과정을 쉽게 이해할 수 있음
함수 종속성과 기본키
릴레이션 R(K, A1, A2, A3, ..., An)에서 K가 기본키면, K → R이 성립.
즉 기본키는 릴레이션의 모든 속성에 대해 결정자(determinant)임.
이상현상과 결정자
이상현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타남.
기본키가 아니면서 결정자인 속성이 있을 때 발생한다.
학생수강성적 릴레이션의 경우 학생 정보(학생번호, 학생이름, 주소, 학과)와 강좌 정보(강좌이름, 강의실)가 한 릴레이션에 포함되어서 이상현상이 나타남.
(학과, 학생번호, 강좌이름은 기본키가 아니면서 결정자인 예이다)
---
정규화
이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분 가능.
릴레이션은 정규형 개념으로 구분하며, 정규형이 높을수록 이상현상은 줄어듦.
정규화의 단계 (6단계)
1. 1NF (Normal Form) : 제 1 정규화
2. 2NF (Normal Form) : 제 2 정규화
3. 3NF (Normal Form) : 제 3 정규화
4. BCNF (Normal Form) : 수학자 2명이 개발한 정규화로, 2명의 이름 첫자를 따서 만듬
5. 4NF (Normal Form) : 제 4 정규화
6. 5NF (Normal Form) : 제 5 정규화
역정규화 수행
정규화의 수단으로 무손실 분해를 하다보면 과하게 릴레이션이 쪼개지면서 이상현상이 제거되어
무결성에는 좋지만 상대적으로 테이블을 조회하는 SQL 문장을 만들어 내기가 더 어려워짐
제 1정규형
릴레이션 R의 모든 속성 값이 원자값을 가지면 제 1정규형이라고 함.
제 1정규형으로 변환
고객취미들(이름, 취미들) 릴레이션을 고객취미(이름, 취미) 릴레이션으로 바꾸어 저장하면 제 1정규형을 만족한다
제 2정규형
릴레이션 R이 제 1정규형이고 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때 제 2정규형이라고 함.
제 3정규형
릴레이션 R이 제 2정규형이고 기본키가 아닌 속성이 기본키에 비이행적(non-transitive)으로 종속할 때(직접 종속) 제 3정규형이라고 함.
이행적 종속이란 A → B, B → C가 성립할 때 A → C가 성립되는 함수 종속성
BCNF
릴레이션 R에서 함수 종속성 X → Y가 성립할 때 모든 결정자 X가 후보키이면 BCNF 정규형이라고 함.
대부분의 릴레이션은 BCNF까지 정규화하면 실제적인 이상현상이 없어지기 때문에 보통 BCNF까지 정규화를 진행함.
---
'국비학원' 카테고리의 다른 글
[국비지원] KH 정보교육원 33일차 (0) | 2022.05.12 |
---|---|
[국비지원] KH 정보교육원 32일차 (0) | 2022.05.11 |
[국비지원] KH 정보교육원 30일차 (0) | 2022.05.10 |
[국비지원] KH 정보교육원 29일차 (0) | 2022.05.06 |
[국비지원] KH 정보교육원 28일차 (0) | 2022.05.04 |